Bash 的编译器

Compiler for Bash

我正在本科学习编译器设计课程。作为学习过程的一部分,我必须为一种语言开发编译器。

可以为Bash编写编译器吗? 它会不会比为 C/C++ 这样的常规编程语言设计编译器更难,因此完全不可思议,至少对于新手来说是这样?

Can a compiler be written for Bash?

是的。 (存在证明 - shc。)

If yes, how?

这是最难的部分。

POSIX shell 由于反引号、变量替换、引号等因素的影响,语言与典型的编程语言非常不同。

您可以忽略这一点并实现一种 "bash like" 语言,或者忽略困难的特性,或者以不符合 POSIX 行为的方式处理它们。

那么……就是如何生成可执行的东西的问题了。同样,这是可能的(见上文),但如果您的目标是比常规 shell 更快,那么您需要做一些事情,例如在编译代码中模拟常见 Linux 命令的行为。这是一项艰巨的任务。


我并不是说这是一个糟糕的项目,但你需要做很多工作,包括:

  • 查找、阅读和(完全)理解 POSIX shell 规范
  • 正在研究如何实现处理 POSIX 特质的解析器
  • 找出哪些linux命令需要直接执行,
  • 弄清楚如何处理你不处理的问题;例如管道的所有复杂性。