根据 Vala 文档:“在 0.3.1 之前,Vala 的解析器是经典的 flex 扫描器和 Bison LALR 解析器的组合。但从提交 eba85a 开始,解析器是手工制作的递归下降解析器。” 我的问题是:为什么?
这个问题可以针对任何不使用解析器生成器的编译器。从解析器生成器到手工解析器的这种转变的利弊是什么?为编译器使用解析器生成器(Bison、ANTLR)有什么缺点?
作为旁注:我特别对 Vala 感兴趣,因为我喜欢让语言具有现代特性和简洁语法但可编译成“本机”和“非托管”高级语言(在 Vala 的情况下为 C)的想法。到目前为止,我只找到了 Vala。我正在考虑通过使 Vala(或类似语言)可编译为 C++(由 Qt 库支持)来获得乐趣。但由于我不想发明全新的语言,我正在考虑采用一些现有的语法。显然,手工制作的解析器没有我可能重用的书面形式语法。欢迎您对这个想法发表评论(整个想法很愚蠢吗?)。