将 Bash 解析为 Python



我想解析一个Bash脚本并将其转换为Python脚本(将表示有效bash脚本的文本转换为表示等效python脚本的文本)。 如何开始?以前有什么作品,推荐的博客/文章/书籍吗?

如果你考虑一下,一般来说,Unix shell脚本不能解析为一些抽象的语法树,因为shell不是这样工作的(它们本质上是将字符串扩展到其他字符串)。Bash 通过标记然后扩展事物来工作。

例如,想想什么

mycd=cd
myexit=exit
$mycd /tmp
ls
$myexit 23

正在做

所以在实践中,你需要了解你的特定shell脚本在做什么,并用Python重写它。

你可以阅读一些关于编译的一般教科书,例如龙书

所以一个通用的 Bash 到 Python 转换器几乎是不可能的(最多,你会用 Python 编写一个 bash shell 解释器)

从理论上讲,Post重写系统是图灵完备的,而Halting问题是无法解决的(因此直觉认为通用的Bash到Python编译器是不存在的,否则作为Python中一些无趣的shell解释器)。

但是,您可以采用一些启发式方法,并花费大量时间使用各种启发式方法构建转换器。但一般情况仍然等同于 Python 中的 shell 解释器。我不确定这是否值得付出努力。

参见 Yann Regis-Gianas FOSDEM2018 谈话解析 POSIX [S]hell

相关内容

  • 没有找到相关文章

最新更新