我需要写一个编译器。这是大学的家庭作业。老师告诉我们,我们可以使用任何我们想要的API来进行代码的解析,只要它是好的。这样我们就可以更加关注我们将生成的 JVM。
所以是的,我将用 Java 编写一个编译器来生成 Java。
你知道有什么好的API吗?我应该使用正则表达式吗?我通常手动编写自己的解析器,尽管在这种情况下不建议这样做。
任何帮助,将不胜感激。
正则表达式很适合在编译器中使用,但仅用于识别标记(即没有递归结构)。
编写编译器的经典方法是词法分析器为了识别令牌,语法分析器为了识别结构,语义分析器为了识别意义,中间代码生成器, an 优化器,最后一个目标代码生成器。如果使编译器更易于编写,则可以合并或完全跳过这些步骤中的任何一个。
已经开发了许多工具来帮助完成此过程。对于Java,你可以看看
- ANTLR - http://www.antlr.org/ http://www.antlr.org/
- 可可/R -http://ssw.jku.at/Coco/ http://ssw.jku.at/Coco/
- JavaCC-https://javacc.dev.java.net/ https://javacc.dev.java.net/
- 黑貂CC -http://sablecc.org/ http://sablecc.org/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)