我找到了一些关于定位.NET CLI的信息.
我还在编译器设计上找到了Dragon Book.
解决方法
>识别器,只回答输入源是否有效语法,
> parser,创建输入源的内存表示(称为AST – 抽象语法树),
>编译器(生成输入的翻译形式),
>优化编译器,为3但在生成输出之前优化AST.
所有这些编译器表单通常都会重用专门用于帮助编译不同阶段的工具.简而言之:
解析:我会推荐parboiled for Java.较旧的工具曾经是lex和yacc的变种,两个unix工具用于解析的词法和语法阶段. ANTLR和Javacc是在JVM上运行的两个示例;然而,煮熟的只是很棒.
AST:我不知道这里有什么工具,可以重用其他JVM语言的模型,比如javac,但我个人会亲自创建.
输出生成:一种快速的方法是生成Java源代码,这有一些限制,但总体上是一种测试水的优秀方法.当/如果您决定继续生成JVM字节代码时,可以在here找到一组辅助库.但是在尝试该路由之前需要了解很多关于JVM的知识,Oracle的JVM规范/书是必读的.
对于一般知识,llvm tutorial非常出色,它非常简短且写得很好.我知道你说你想要定位JVM,但本教程几乎所有内容都将帮助你理解所需的部件.
我建议按照教程,并使用Java重写它.它的步骤非常符合逻辑.基本上,人们会为一种非常简单的语言编写识别器,例如“1 2”.然后为该语言编写一个解释器.这将是一个非常合理的停止点,许多语言被解释; Java也是这样开始的.可选地,然后可以继续发出目标输出,首先是Java源代码.这个代码相当短,并且比第一次完全写入任何单个图层时更快地给出反馈.如果你沿着这条路走下去,有很多机会消耗你的编码时间.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。