有很多词法分析器和解析器生成器 - lex / flex和yacc / bison,jflex和javacup,gplex和gppg等等。我想知道官方语言开发人员使用什么工具 - 做Sun和Microsoft在开发Java和.NET时使用其中任何一种,或者那些大小的商店只使用自定义内部工具吗?
答案 0 :(得分:5)
我曾经听过一个传说,大多数c编译器都是自己编译的。
他们做的是他们编写新版本(示例版本5),使用旧版本(版本4)编译它,然后使用新编译的版本(使用版本4编译的版本5),他们自己编译再次。 (因此版本5现在由版本5编译)。
答案 1 :(得分:3)
我一直在一些商业编译器中,我不知道任何基于lex或yacc生成器的构建器。 Lex和yacc可以很方便地获得语法和解析速度,但这通常不是商业产品的最高优先级。我并不是说商业产品不能建立在yacc上 - 我确信有些产品已经存在 - 但我所参与的商业编译器都是手工制作的代码,而不仅仅是原始速度。
是的,编译编译器本身就是常态,并且是makefile逻辑中一个“有趣”的Escher-esque冒险。 ;>
答案 2 :(得分:0)
JavaCC具有最新的Java语法。 Java编译器是否实际通过JavaCC编写是另一个问题。
答案 3 :(得分:0)
对于更通用的编译器,请参阅D Thorpe的答案。他们通常不这样做。
然而,这些工具通常会将C编译器定期重新定位到新制作的目标(*),并使用特定目标扩展,以安全,一致的方式快速插入新功能,然后运行一些验证套件以确保结果是合规的。
(*)想想新的DSP,微控制器等。