gpt4 book ai didi

compiler-construction - 使用 Antlr 创建语言

转载 作者:行者123 更新时间:2023-12-01 23:54:35 26 4
gpt4 key购买 nike

假设我创建了一种新的 Awesome 语言,它在语法上类似于 java,但不是 package它使用 pack .因此,假设这种新语言是 Java 的模板语言。

我已经创建了 awesome.g4 并编译了它,所以 Antlr 给了我 BaseListener、Listener、Lexer 和 Parser。

我想用这种新的 Awesome 语言作为源代码创建一个程序,所以我可以考虑两个选择:

  • 先将它转换成Java,然后再将Java编译成二进制(我
    希望我是对的,我的意思是 .class 文件)
  • 将 Awesome 程序直接编译成二进制文件。

  • 我发现的唯一相关 repo /代码是 antlr4-csharp .

    既然我想从现在开始用我的新 Awesome 语言保存人性和代码,是否有可能以该语言作为源代码创建可执行代码,如何?

    最佳答案

    该死!我希望你发明那种能拯救世界的很棒的语言。我喜欢看到充满激情的语言设计师。 Groovy 做了一些类似于你所说的事情:

    ANTLR 使用 Groovy 语法文件“Groovy.g”来创建 Groovy 解析器。当解析器收到 Groovy 脚本的源代码时,它会生成 AST(= 抽象语法树),将该代码表示​​为运行时结构。字节码生成从 AST 中,可以创建 Java 字节码:要么使其作为 .class 文件持久存在,要么通过 GroovyClassLoader 使其直接作为 Class 对象可用。这个 ClassGeneration 是在 objectweb 的 ASM 工具的帮助下完成的。 (ASM 名称没有任何意义:它只是对 C 中“asm”关键字的引用,它允许用汇编语言实现某些功能。)ASM 提供了一个 Java API 来构造或修改给定 AST 上的字节码.

    ANTLR 只能让你走到这一步。有几种策略可以解决这个问题。 (1) 将 Awesome 语言翻译成 C,然后编译 C 代码。 (2) 将 Awesome 语言编译成 Java 字节码并在 JVM 上运行。 (3) 编译成LLVM字节码。

    对于方法编号 (2),请查看:http://groovy.codehaus.org/Groovy+Backstage .

    关于compiler-construction - 使用 Antlr 创建语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793847/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com