- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在学习 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 + 5Would 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/
目录 1、背景 2、样本均值和样本方差矩阵 3、PCA 3.1 最大投影方差 3.2 最小重构距离 4、Py
android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测
我写了一个 vector 类来学习 move 语义。 我使用 move 构造函数来 move T(注释行)。 我的问题是为什么不像在 C 中一样复制临时对象的所有字节并将临时对象的所有字节设置为零?
我需要解析一种类似于 Java 的最小化版本的语言。由于效率是最重要的因素,所以我选择手写解析器而不是像 GOLD、bison 和 yacc 这样的 LRAR 解析器生成器。 但是我找不到优秀的手写解
我正在尝试向 perlin 单纯形噪声函数添加 asm.js 注释: "use strict"; // Ported from Stefan Gustavson's java implementati
之前在bind和apply以及call函数使用中详解总结过bind和apply以及call函数的使用,下面手写一下三个函数。 一、首先call函数 Function.prototype.MyCall
我正在 asm.js 中编写优先级队列和八叉树Javascript 的子集,以便从它们中挤出最后可能的性能。 但是,您如何在 asm.js 函数的 heap 中存储对 Javascript 对象的引用
我是一名优秀的程序员,十分优秀!