我开始阅读关于“Roslyn”的新C#编译器,并想知道Roslyn编译器是如何编译的? 我知道boostrapping需要"self hosting compiler"才能拥有{{3}},我想知道Roslyn编译器是如何“引导”的?
答案 0 :(得分:8)
如果尚未存在该语言的现有实现,则引导只是一个问题。在这种情况下,它很容易。
答案 1 :(得分:2)
我猜想已经使用了现有的C#编译器。我的意思是,一个完全自举的编译器很不错,但在这种情况下并不是必需的。
答案 2 :(得分:2)
阅读
http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29
如果需要获得语言X的编译器(用它编写) 语言X),存在第一个编译器的问题 书面。在实践中用于解决的不同方法 这鸡或鸡蛋问题包括:
在语言Y中为语言X实现解释器或编译器。 Niklaus Wirth报道他写了第一个Pascal编译器 Fortran。[需要引证] X的另一个解释器或编译器 已经用另一种语言Y写的;这就是Scheme的方式 经常被引导。
但是对于Roslyn的细节,我猜,用c#编译器(pre-Roslyn)构建然后用自己构建:)(前几次运行)一旦它稳定,他们probs只用Roslyn构建Roslyn:)
我还猜测它全部是自动化和单元测试的。