【发布时间】:2010-07-23 01:52:05
【问题描述】:
那里有许多词法分析器和解析器生成器 - lex/flex 和 yacc/bison、jflex 和 javacup、gplex 和 gppg 等。我想知道语言的官方开发人员使用什么工具 - 做 Sun 和Microsoft 在开发 Java 和 .NET 时使用其中任何一种,还是这种规模的商店只使用自定义的内部工具?
【问题讨论】:
标签: c# java compiler-construction compilation
那里有许多词法分析器和解析器生成器 - lex/flex 和 yacc/bison、jflex 和 javacup、gplex 和 gppg 等。我想知道语言的官方开发人员使用什么工具 - 做 Sun 和Microsoft 在开发 Java 和 .NET 时使用其中任何一种,还是这种规模的商店只使用自定义的内部工具?
【问题讨论】:
标签: c# java compiler-construction compilation
我曾经听过一个传说,大多数c编译器都是自己编译的。
他们所做的是他们编写新版本(示例版本 5),使用旧版本(版本 4)编译它,然后使用新编译的版本(使用版本 4 编译的版本 5),他们自己编译再次。 (所以版本 5 现在由版本 5 编译)。
【讨论】:
我曾研究过一些商业编译器,但我不知道有任何基于 lex 或 yacc 生成器的编译器。 Lex 和 yacc 可以方便地快速构建和解析语法,但这通常不是商业产品的最高优先级。我并不是说商业产品不能在 yacc 上构建——我敢肯定有些是这样——但我参与的商业编译器都是手工编写的代码,它倾向于原始速度而不是其他一切。
是的,编译编译器本身是常态,是 makefile 逻辑中“有趣”的 Escher 式冒险。 ;>
【讨论】:
JavaCC 具有最新的 Java 语法。 Java 编译器是否真的通过 JavaCC 编写是另一个问题。
【讨论】:
对于更通用的编译器,请参阅 D Thorpe 的回答。他们通常不会。
然而,这些工具通常被公司使用,这些公司通常将 C 编译器重新定位到新创建的目标 (*),并带有目标特定的扩展,以安全、一致的方式快速插入新功能,然后运行一些验证套件以确保结果是合规的。
(*) 想想新的 DSP、微控制器等。
【讨论】: