我们知道Yacc和Bison都是产生C++的代码作为编译器的前端的。但是有时候我们需要动态地产生一个编译器前端,极端一点讲,譬如“文法调试器”。调试器总不能动态生成.y文件,让yacc编译,让gcc再度编译,然后execute,最后将程序的输出结果读进来。这样就太麻烦了,于是我们需要重新写一个生成编译器前端的程序。
项目实验1:将算法与数据结构分开 这个实验展示了使用代码生成器生成语法树数据结构的【维护的可能性】。
项目实验2:动态生成编译器前端 这个实验展示了Syngram的两个作用:可以写出漂亮的分析器代码、动态产生分析器。