Я начал читать о «Roslyn» новом компиляторе C# и задавался вопросом, как был составлен компилятор Roslyn?
Я понимаю, что boostrapping необходим, чтобы иметь "self hosting compiler", и я подумал, как был компилятор Roslyn «загружен»?Как скомпилирован компилятор Roslyn C#?
ответ
Вот как это было на самом деле (не догадываясь) сделано в C# команды, в соответствии с Eric Lippert:
«C# 1.0 через 5,0 компиляторы были написаны на C++ В течение довольно длительного времени - больше. год - мы написали компилятор Roslyn C# в C# и скомпилировали его с C# 4.0. (C# 5.0 разрабатывался параллельно сестринской командой.) В тот день, когда мы могли скомпилировать компилятор Roslyn, а затем повернуть направо и скомпилировать его снова используя компилятор, который мы только что создали, это был счастливый день ».
Я бы предположил, что для этого использовался существующий компилятор C#. Я имею в виду, что полностью загруженный компилятор хорош, но в этом случае не нужен.
Bootstrapping - это только проблема, если еще не существует существующей реализации языка. В этом случае было, так что это легко.
- Скомпилирует первую версию Рослин, используя существующий C# компилятора
- Затем снова собрать его с помощью свежа скомпилированного Roslyn сборки.
- Выполнено.
Когда новые ключевые слова добавляются на язык, как он будет скомпилирован? потому что у нас нет компилятора (пока), который понимает новые токены? [Первоначально задан здесь] (http: // stackoverflow.com/questions/27513234/in-which-language-is-the-c-sharp-compiler-written # comment47395673_27513277) –
@SriramSakthivel Просто не используйте эти новые функции в компиляторе (сначала). – sepp2k
Silly me :) Это было очень просто :) –
Есть Распознать
http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29
Если нужно получить компилятор для языка X (который написан на языке X), есть вопрос о том, как первый компилятор может быть написан. Различные методы, которые используются на практике для решения это курица или яйцо проблемы включают в себя:
Реализация интерпретатор или компилятор для языка X в языке Y. Никлаус Вирт сообщил, что он написал первый компилятор Паскаля в Fortran. [править] Другой интерпретатор или компилятор для X имеет уже написан на другом языке Y; вот как Scheme часто загружается.
Но специфика Рослин я бы предположил, построенными с C# компилятор (предварительно Рослин), то построенные с себя :) (первые несколько спусков), как только ее стабильной, они Probs просто построить Рослин с Рослин :)
Я бы также предположил, что все его автоматизированные и модульные испытания.
- 1. Прохождение через компилятор Roslyn C#
- 2. Компилятор Roslyn как услуга
- 3. Как скомпилирован C++
- 4. Как использовать компилятор roslyn C# с visual studio 2015?
- 5. Включен ли компилятор Roslyn в проект Mono?
- 6. Компилятор CSC Roslyn - записывает ошибки в STDERR
- 7. C компилятор утверждает - как реализовать?
- 8. Roslyn: Как получить пространство имен декларацииSyntax с Roslyn C#
- 9. Compile C# Roslyn
- 10. Как написать компилятор C на C?
- 11. Есть ли компилятор как служба для C++?
- 12. Как долго мой компилятор Visual Studio C#?
- 13. C# определения, если скомпилирован с моно
- 14. Компилятор Roslyn, находящийся в неправильной папке bin для vbc.exe
- 15. Как работает компилятор C#?
- 16. расширение синтаксиса C# с roslyn
- 17. Создает ли компилятор Roslyn в Visual Studio 2015 непрерывную компиляцию?
- 18. Как вызвать компилятор C под gcc
- 19. На каком языке написана компилятор C#?
- 20. Компилятор CodeDom для C#
- 21. если 0 скомпилирован в c-программе
- 22. OpenCV3.10 core.hpp должен быть скомпилирован в C++
- 23. Roslyn и .NET меньше C#?
- 24. Как установить компилятор MS C# 6.0?
- 25. C# Компилятор как услуга: Mono.CSharp vs Microsoft.CSharp
- 26. Компилятор C# в C?
- 27. C++-компилятор - сгенерированные типы символов
- 28. VS2013 Проекты C# в VS2015: будут ли они использовать компилятор Roslyn?
- 29. C-компилятор в C
- 30. CodeIssue project with roslyn
Я не понимаю ваш вопрос. Вы уже знаете, что такое самонастраивание. Тогда чего вы не знаете? –
Связанный: [На каком языке написана компилятор C#?] (Http://stackoverflow.com/questions/27513234/in-which-language-is-the-c-sharp-compiler-written) –
Похоже на открытие https : //github.com/dotnet/roslyn/blob/master/src/Roslyn.sln в Visual Studio и нажатие кнопки «компиляция» сделало бы трюк – xmojmr