我一直想创建自己的编程语言,我希望开始编写基本的编译器。我这样做纯粹是为了学习目的。 我将用C#编写编译器。
我一直在尝试决定是否生成IL或其他高级语言。从我看过/阅读的文章和教程看来,C和MSIL(通过reflection.emit)是最受欢迎的。
我想知道哪种方法可以让我的编程语言更快? (假设它们是最佳实施的)。理想情况下,我希望这种语言能够在MS和Linux / OSX上运行 - 我也理解可能有更好的替代方案,我不在考虑
答案 0 :(得分:2)
您的决定通常取决于您的语言的设计和范例。如果您的语言很小并且不包含复杂的面向对象的功能,那么只能使用非面向对象的语言。将使用IL的特征,区别在于:
IL的PROS:
PROS for C:
许多现代语言编译成另一种高级语言(哦,上帝,今天有大量的东西到js工具!),有些语言甚至被设计为编译成另一种高级语言(CoffeeScript到JavaScript),但不要忘记您还有其他选项,例如LLVM intermediate representation。