如何使用Roslyn C#编译器进行自举?

时间:2015-04-14 11:24:12

标签: c# compiler-construction compilation roslyn

我开始阅读关于“Roslyn”的新C#编译器,并想知道Roslyn编译器是如何编译的? 我知道boostrapping需要"self hosting compiler"才能拥有{{3}},我想知道Roslyn编译器是如何“引导”的?

3 个答案:

答案 0 :(得分:8)

如果尚未存在该语言的现有实现,则引导只是一个问题。在这种情况下,它很容易。

  1. 使用现有的C#编译器
  2. 编译Roslyn的第一个版本
  3. 然后使用新编译的Roslyn构建重新编译它。
  4. 完成。

答案 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:)

我还猜测它全部是自动化和单元测试的。