C#中的开源C编译器?

Din*_*nah 21 c c# compiler-construction

我一直在进行编译器创建.我发现了一些非常棒的初学者和高级东西,但中间什么都没有.我为玩具语言创建了3个不同的简单概念验证编译器,但我想让自己暴露在真实的东西之中.

语法方面最直接的真实语言似乎是C.因为我现在最熟悉的语言是C#,我很乐意研究用C#编写的真正的非教程C编译器的源代码.是否存在(包含可用的源代码)?


理想情况下,我喜欢C编译器,而不是.NET或C#编译器,但使用C#编写的源代码.
我知道C# - > C感觉有点倒退,但是在我改变它之前,它允许我从熟悉的语言开始更深入地进入编译器.

虽然我不是在寻找C#/ .NET编译器,但有些人会看到这个问题的人正在寻找:

Han*_*ant 11

您将很难找到示例代码.编译器编写者使用bootstrapping.第一个C编译器是用B编写的.然后用它来编写第一个C++编译器.用于编写C#编译器.这通常用于编写托管代码的编译器.

这不是一个永远倒退的过程.虽然旁路是常见的,但C编译器通常用于交叉编译另一个操作系统的编译器.

我想我用过这本书,附录中有很棒的C编译器代码.用C语言编写.在大型项目中编写我需要的Basic编译器时,我使用了它的一部分.表达式解析器很难正确,它为运算符优先级规则提供了一个优雅的解决方案.

定位托管语言是实现这一目标的更简单方法.语言不应该太重要,它正在使它工作,这是真正的挑战.即使托管代码工作起来容易得多.如果您想要定位C,您将需要黑带机器代码技能以及对目标文件格式和链接器的深入洞察力.


Eri*_*ert 10

在语法方面最直接的真实语言似乎是C.

我不确定你的"真实语言"是什么意思,但无论"真正的语言"是什么意思,我都不能同意C有一个"直截了当"的词汇或句法语法,而且它的语义是不明确的.如果你想要一个非常直接的语言和非常明确的语义,为什么不去参加Scheme呢?Scheme有一个非常简单的语法,但肯定是非常容易让它的语义正确.

  • 如果我没记错的话,C可以一次编译.所以在某种意义上,C非常*直截了当*;-) (6认同)