Compiler construction 除了ANTLR之外,还有什么其他工具可以帮助我创建一个针对JVM的小型语言?
(几天前我开始了我的ANTLR语言冒险。我对语言理论和编译器构造的知识非常有限。如果这不是一个有效的问题,请原谅。) ANTLR是一个解析器生成器,特别是一个Compiler construction 除了ANTLR之外,还有什么其他工具可以帮助我创建一个针对JVM的小型语言?,compiler-construction,antlr,formal-languages,ll,Compiler Construction,Antlr,Formal Languages,Ll,(几天前我开始了我的ANTLR语言冒险。我对语言理论和编译器构造的知识非常有限。如果这不是一个有效的问题,请原谅。) ANTLR是一个解析器生成器,特别是一个ALL(*)解析器。根据,解析器是: 编译器中试图从语法上理解代码的部分 源代码 AFAIK编译器应包括5个阶段: 词汇分析 语法分析 语义分析 IL表示与优化 代码生成 所以ANTLR似乎只覆盖1和2 所以,如果我想为教育目的的语言编写一个编译器,它以JVM上的Java字节码为目标。对于第3-5阶段,我还可以利用哪些其他工具 加1 为什么
ALL(*)
解析器。根据,解析器是:
编译器中试图从语法上理解代码的部分
源代码
AFAIK编译器应包括5个阶段:
DMS作为一种工具的设计目标是涵盖广泛的应用,包括语言翻译(“编译”是一个特例)和程序分析。它相应地比ANTLR更雄心勃勃,更大,相应地也更强大。既然你似乎在钻研ANTLR,我建议你购买一本
”“还有
”“是的 对于第3-5阶段,我还可以利用哪些其他工具 ANTLR的创建者也创建了可用于AST转换的工具,但还有其他工具填补了这一空缺。请参阅:。注意,爱尔兰共和军已经在他的回答中提到了DMS 对于阶段3,语义分析,您可以使用ANTLR。参见:作为示例。本书还讨论了进行语义分析的其他方法 对于阶段4-5,请阅读第10章,
构建字节码解释器
对于初学者来说,这是一个开始的好地方,但它只会让你开始 或 对于第4-5阶段的快速搜索,我在快速阅读后发现了这一点,因此我将提及这一点,但没有保证。简而言之,is用于第4-5阶段。因为博客是在Oracle上托管的,所以我认为只有Oracle Javac才能工作 一种非常有趣的方法是构造表示 java代码的结构,然后从中生成字节码。 实际上,javac就是这样做的 为什么ANTLR只覆盖1和2 从 引用 因为大多数ANTLR用户不构建编译器,所以我决定将重点放在 ANTLR v4的其他应用程序:解析和提取 信息,然后翻译 所以 对于阶段1、2和3,您需要