gpt4 book ai didi

go - 我正在使用 Antlr4 创建一种语言,然后我想用它生成 LLVM IR。我是否需要手写 LLVM IR 来响应我的访问者事件?

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:38 27 4
gpt4 key购买 nike

在学习 Antlr4 时,我使用 Golang 作为目标语言,所以我的玩具语言中的语句如下:

$myVar = 10
$myVar + 5

将转换为一些生成结果“15”的 Golang 代码

但是,据我所知,ANTLR 没有 LLVM IR 目标,所以问题是:我有什么选择?

1) 生成 C/C++,然后用它来发出 LLVM IR?
2) 尝试找到一个 Golang LLVM IR 发射器?
3) 继续使用生成的 Go 词法分析器/解析器但手写 LLVM IR?

我尝试浏览 LLVM 文档并观看了一些关于 LLVM 的视频<,但它们似乎都生成 C/C++,然后以这种方式与 API 通信。不确定他们这样做是因为那是他们所知道的,还是因为那是唯一的方法。

提前感谢您的任何见解!

最佳答案

While learning Antlr4, I used Golang as a target language, so a statement in my toy language like:

$myVar = 10
$myVar + 5

Would translate to some Golang code that generates "15" for the result

这不准确。你的语法被翻译成解析你的语言的 Go 代码。然后,您自己的代码可以使用生成的解析器将上述内容翻译成您想要的任何内容。

there isn't an LLVM IR target for ANTLR

即使有也不会帮助你。所有要做的就是创建一个用 LLVM 而不是 Go 编写的解析器。您仍然需要自己编写代码将您的语言翻译成 LLVM(就像您必须编写自己的代码将您的语言翻译成 Go 一样)。


至于是使用 LLVM-API 生成 LLVM 还是将其生成为字符串,任何一个选项都可以。有Go bindings for LLVM , 但也完全可以将 LLVM 程序集写入 .ll 文件,然后通过 llc 运行它。

关于go - 我正在使用 Antlr4 创建一种语言,然后我想用它生成 LLVM IR。我是否需要手写 LLVM IR 来响应我的访问者事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55994540/

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