我正在熟悉ANTLR,所以有一个问题。如果我应该创建一种健壮的编程语言,如java或C#,我会使用编译器工具来创建它,还是为编译器编写手写代码。有没有使用编译器工具创建的广泛使用的语言的实际例子?与手写编译器相比,工具生成的代码也存在性能问题。
发布于 2010-08-05 09:40:29
我相信Java编译器是用C编写的。Sun是一家硬件公司,在Unix、C和Solaris上投入了很长时间,所以这是他们最了解的。
他们可能使用了基于C的lex/解析器,比如yacc和他们的Java语法。但它肯定不是ANTLR。
更新:我认为第一个javac.exe是这样的,但我不确定。下面的评论说,Java编译器的当前版本确实是用Java编写的。
您可以使用ANTLR作为Java、C#或其他您自己设计的语言的基础。(我相信您可以找到ANTLR的Java语法。)
您将从语法、lex开始,并将其解析为抽象语法树(AST),然后从中发出字节码或其他任何代码。
您可能会对Terrance Parr's latest book感兴趣。
发布于 2013-01-18 19:06:20
从理论上讲,你可以使用任何编译器工具来增强你的编译器项目的某些部分,但是我相信你不可能做出一门真正健壮的编程语言,只有在你开始编辑/改进它们之前,你才能使用已经制作好的工具和实用工具。否则,在编译源代码和/或运行编译后的源代码时,您将面临一些性能问题。
我相信一个世界级的编译器应该提供比传统的二进制输出更多的东西,这些输出可以由可用的工具和实用程序生成。
还有,你别忘了,一个业余的编译器工具编写的编译器可能比同一个人手写的编译器要好!然而,由专家手写的总是会赢!为什么?因为我们有"I",而他们有"AI"!
https://stackoverflow.com/questions/3411148
复制相似问题