我需要编写一个编译器。这是大学的作业。老师告诉我们,我们可以使用任何我们想要的 API 来进行代码的解析,只要它是好的 API 即可。这样我们就可以更多地关注我们将生成的 JVM。
是的,我将用 Java 编写一个编译器来生成 Java。
你知道有什么好的 API 吗?我应该使用正则表达式吗?我通常手动编写自己的解析器,但在这种情况下不建议这样做。
如有任何帮助,我们将不胜感激。
最佳答案
正则表达式很适合在编译器中使用,但仅用于识别标记(即没有递归结构)。
编写编译器的经典方法是使用一个词法分析器来识别标记,一个语法分析器来识别结构,一个语义分析器为了识别意义,一个中间代码生成器,一个优化器,最后一个目标代码生成器。如果编译器更易于编写,则可以合并或完全跳过任何这些步骤。
已经开发了许多工具来帮助完成此过程。对于Java,你可以看看
- ANTLR - http://www.antlr.org/
- cocoa /R - http://ssw.jku.at/Coco/
- JavaCC - https://javacc.dev.java.net/
- SableCC - http://sablecc.org/
关于java - 我如何解析代码以在 Java 中构建编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672577/