作为我的编译器的后端?

时间:2012-08-18 09:36:34

标签: compiler-construction code-generation go backend

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

Go显然是一种快速语言,具有垃圾收集和快速编译时间。它也是便携式和免费的(BSD式许可证)。所有这些都会让Go成为代码生成的一个很好的选择,我想,甚至可能比其他选项更好......所以我很惊讶我找不到任何人这样做。

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

(我特别感兴趣转到此处。不要只指向备用后端选项,questions会回答already。)

3 个答案:

答案 0 :(得分:6)

  • 我不知道任何使用Go作为后端的语言项目。
  • Go 不是设计为编译器后端和/或IR。
  • Go 足够低(除了例如GC之类的位),IMO可用作某些语言/类语言的后端,语义类似/可比较/接近什么去提供。
  • 很想知道你正在设计的语言; - )

答案 1 :(得分:0)

this project名为GoGo,它被描述为用Go编写的编译器,用于Go的子集。基本上就像Go的精简版。我想你可以先修改它来解析你自己的语言。

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

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

干杯!

答案 2 :(得分:-1)

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

您将能够实施

  • go routines
  • 去频道
  • GC

你没有

  • threads

Go是非常好的语言。我没有看到你可以添加什么来比Go更好的语言。