6

我想为我自己的编程语言制作一个编译器。流行的后端选择似乎是 C、Java、LLVM、JVM 字节码、.Net 字节码、gcc、程序集......在这里,我正在考虑将 Go 作为后端的可能性

Go显然是一种快速的语言,具有垃圾收集和快速编译时间。它也是可移植的和免费的(BSD 风格的许可证)。我认为,所有这些都将使 Go 作为代码生成目标成为一个不错的选择,甚至可能比其他选项更好......所以我很惊讶我找不到任何人已经这样做了。

Go 会是代码生成的好选择吗?你能指出现有的项目这样做吗,或者解释为什么没有?或者更好的是,你有使用 Go 语言作为后端的经验吗?有什么我不知道的缺点吗?

(我对 Go 这里特别感兴趣。不要只指出替代后端选项,已经有问题回答了。)

4

3 回答 3

6
  • 我不知道有任何语言项目使用 Go 作为后端。
  • Go并非设计为编译器后端和/或 IR。
  • Go足够低级(有点像 C,除了例如 GC),IMO 可以用作某些语言/语言类的后端,其语义与 Go 提供的相似/可比/接近。
  • 很想知道更多关于你正在设计的语言;-)
于 2012-08-18T11:37:11.467 回答
0

有一个名为 GoGo 的项目,它被描述为用 Go 编写的编译器和 Go 子集的汇编。基本上就像一个精简版的 Go。我认为您可以从修改它以解析您自己的语言开始。

我还记得 Go 的一个类似脚本语言的子集,它有自己的编译器。我以为它被称为 GoScript,但似乎至少有 3 个不同的项目具有相同的名称,所以我找不到它。

我会说这样做并分享您的经验。不过,Go 将成为您的中间语言,而不是后端。至少这是我认为你想要做的。

干杯!

于 2012-08-18T17:26:00.593 回答
-1

如果您将使用 Go 作为您的语言的后端,那么您的语言将与 Go 非常相似。

您将能够实施

  • 例行公事
  • 去频道
  • GC

你不会有

  • 线程

Go 是非常好的语言。我看不出你可以添加什么来制作比 Go 更好的语言。

于 2012-08-18T10:01:24.090 回答