2009-09-04 71 views
4

前段時間,我在編譯器上工作,我用System.Reflection從AST生成代碼(IL)。現在,我對另一個編譯器有了一個想法,我希望這個編譯器能夠工作(這將是另一個寵物項目,至少在現在,不會用在生產代碼中)。如您所知,寵物項目比生產代碼有一大優勢:您可以嘗試並失敗。所以,我決定嘗試使用Microsoft's CCI編寫編譯器。我發現的唯一很好的參考是一個基本語言的示例編譯器(這是Codeplex上的CCI的一部分),但是,我更喜歡擁有其他一些資源,更像是教程,書籍,文章和其他資源,在那裏我可以獲得更多的信息,而不是學習代碼(這並不總是最好的學習方法,當你看到一個解決方案,但你不知道你有什麼替代方案,或者爲什麼這樣的代碼工作)。微軟CCI - 資源,編寫編譯器的參考文獻

因此:在編寫編譯器和處理AST時,您是否有關於CCI的任何資源(教程,書籍)?

回答

2

對於一開始,我會扔幾個環節,對於那些,誰不熟悉CCI:

  1. CCI-AST項目生成和編譯抽象語法樹。
  2. CCI-Metadata用於讀取/寫入clr程序集的元數據的項目,還支持讀取/寫入pdb。
  3. CCI-Samples項目包含我在第一篇文章中提到的小型基本編譯器。
  4. Lang.Net關於CCI的介紹,有點「爲什麼以及如何?」
  5. VCC - CCI之上的併發c編譯器。我還沒有深入研究,但我期望它是另一個大的項目,沒有任何解釋,從一開始就學習構建編譯器不太好(除此之外,它主要是用F#編寫的)。