<分区>
我想解析 Bash 脚本并将其转换为 Python 脚本(将表示有效 bash 脚本的文本转换为表示等效 python 脚本的文本)。 我该如何开始?任何以前的工作,推荐的博客/文章/书籍?
<分区>
我想解析 Bash 脚本并将其转换为 Python 脚本(将表示有效 bash 脚本的文本转换为表示等效 python 脚本的文本)。 我该如何开始?任何以前的工作,推荐的博客/文章/书籍?
最佳答案
如果你想一想,一般,unix shell 脚本不能被解析成一些abstract syntax tree。因为 shell 不是这样工作的(它们本质上是将字符串扩展为其他字符串)。 Bash 是 working然后通过标记化 expanding东西。
比如想什么
mycd=cd
myexit=exit
$mycd /tmp
ls
$myexit 23
正在做
因此在实践中,您需要了解您的特定 shell 脚本在做什么,并用 Python 重写它。
你可以阅读一些关于编译的通用教科书,例如Dragon Book
因此,通用的 Bash 到 Python 转换器实际上是不可能的(至多,您将用 Python 编写一个类似 bash 的 shell 解释器)
理论上是Post rewriting system是Turing complete和 Halting problem是无法解决的(因此直觉认为 generic Bash to Python 编译器不存在,否则就像 Python 中一些无趣的 shell 解释器)。
然而,您可以采用一些启发式方法并花费大量时间使用各种启发式方法构建转换器。但一般情况下还是相当于Python中的一个shell解释器。我不确定是否值得付出努力。
另见 Yann Regis-Gianas FOSDEM2018 talk Parsing POSIX [S]hell
关于python - 将 Bash 解析为 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197107/