【发布时间】:2015-11-05 19:58:23
【问题描述】:
我一直想创建自己的编程语言,并且希望开始编写基本的编译器。我这样做纯粹是为了学习目的。 我将用 C# 编写编译器。
我一直在尝试决定是否生成 IL 或其他高级语言。从我看过/阅读的文章和教程看来,C 和 MSIL(通过反射.emit)是最受欢迎的。
我想知道哪种方法可以让我的编程语言更快? (假设它们被最佳实施)。理想情况下,我希望该语言能够在 MS 和 Linux/OSX 上运行 - 我也知道可能有更好的替代方案我没有考虑
【问题讨论】:
-
编译器不生成高级语言。您所描述的是一种转换工具。
-
@RonBeyer 不正确,编译器将一种语言转换为另一种语言。
-
@RonBeyer 将 CIL 转换为机器代码显然不止一步,就像 Javascript 一样(它正在成为一个相当流行的交叉编译目标)。生成 C 作为中间语言的语言也有很多历史 (programmers.stackexchange.com/a/257873/37027)。
-
@RonBeyer 仔细阅读我的意思,编译器将代码转换为另一种语言。该其他语言可以是任何其他语言,它通常是较低级别的语言,但它不一定是,如果它从高级到高级,它通常称为转译器(这是编译器类型的分类)。但源语言或目标语言是什么并不重要(但根据它们的级别,它们可能有更具体的名称,但都是编译器)。
-
我可以忍气吞声说我错了,当我个人想到“编译器”时,我想到的是为解释器或链接器/汇编器生成较低级别代码的东西,但可以接受编译器的定义似乎是一个翻译工具。
标签: c# c compiler-construction code-generation cil