加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

编译器构造 – 如何创建自己的针对JVM的编程语言?

发布时间:2020-12-15 05:12:08 所属栏目:Java 来源:网络整理
导读:我想创建自己的针对JVM的编程语言.我不确定该怎么做.我必须创建自己的编译器吗?所有编程语言都有独特的编译器,还是现有的编译器可以调整? 我找到了一些关于定位.NET CLI的信息. 我还在编译器设计上找到了Dragon Book. 解决方法 是的,每种语言都有自己的编
我想创建自己的针对JVM的编程语言.我不确定该怎么做.我必须创建自己的编译器吗?所有编程语言都有独特的编译器,还是现有的编译器可以调整?

我找到了一些关于定位.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源代码.这个代码相当短,并且比第一次完全写入任何单个图层时更快地给出反馈.如果你沿着这条路走下去,有很多机会消耗你的编码时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读