我在本科学习期间参加了编译器设计课程.作为学习过程的一部分,我必须为一种语言开发编译器.
可以为Bash编写编译器吗?是否比为C/C++这样的常规编程语言设计编译器更困难,因此至少对于新手来说是完全不可思议的?
可以为Bash编写编译器吗?
是.(存在证明 - shc
.)
如果有,怎么样?
那是困难的部分.
由于反引号,变量替换,引用等等的影响,POSIX shell语言与典型的编程语言非常不同.
您可以忽略它并实现"类似bash"的语言,要么省略了困难的功能,要么以不符合POSIX行为的方式处理它们.
然后......存在如何生成可执行的东西的问题.同样,这是可能的(见上文),但如果你的目标是比常规shell更快,那么你需要做一些事情,比如在编译代码中模拟常见Linux命令的行为.这是一项艰巨的任务.
我不是说这是一个糟糕的项目,但你需要做很多工作,包括:
查找,阅读和(完全)理解POSIX shell规范
研究如何实现处理POSIX特性的解析器
弄清楚哪些linux命令需要直接实现,以及
弄清楚如何处理你没有的; 例如管道的所有复杂性.