[英]How's Roslyn C# compiler bootstrapped?
我開始閱讀關於“Roslyn”的新C#編譯器,並想知道Roslyn編譯器是如何編譯的?
我明白為了擁有“自托管編譯器”需要使用boostrapping ,我想知道Roslyn編譯器是如何“自舉”的?
如果尚未存在該語言的現有實現,則引導只是一個問題。 在這種情況下,這很容易。
根據Eric Lippert的說法,這就是C#團隊實際上 (不是猜測)完成的事情:
C#1.0到5.0編譯器是用C ++編寫的。 很長一段時間 - 超過一年 - 我們用C#編寫了Roslyn C#編譯器並用C#4.0編譯它。 (C#5.0是由姐妹團隊並行開發的。)我們可以編譯Roslyn編譯器,然后右轉並使用我們剛剛構建的編譯器再次編譯它,這是一個快樂的日子。
一件漂亮的商業案例提供引導通過的Mads托格森編譯:
“在這里,最后是我們的價值主張:讓它成為世界上只需要一個理解C#的代碼庫,由想要在代碼上構建工具的每個人共享!”
我猜想已經使用了現有的C#編譯器。 我的意思是,完全自舉的編譯器很不錯,但在這種情況下並不是必需的。
讀一讀
http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29
如果需要獲得語言X的編譯器(用X語言編寫),則存在如何編寫第一個編譯器的問題。 在實踐中用於解決這個雞或雞蛋問題的不同方法包括:
在語言Y中實現語言X的解釋器或編譯器.Niklaus Wirth報告他在Fortran中編寫了第一個Pascal編譯器。[引證需要] X的另一個解釋器或編譯器已經用另一種語言Y編寫; 這就是Scheme經常被引導的方式。
但是對於Roslyn的細節,我猜想,用c#編譯器(pre-Roslyn)構建然后用自己構建:)(前幾次運行)一旦它穩定,他們probs只用Roslyn構建Roslyn :)
我還猜測它全部是自動化和單元測試的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.