Я только в начале своего дипломного проекта, который должен длиться 6 месяцев. Цель проекта — реализовать .Net-компилятор для одного скриптового языка. У меня была компиляторная конструкция в качестве предмета в моей учебной программе, и я знаю основные шаги по реализации компилятора в целом, но мы использовали Bison и простой компилятор с GCC в качестве серверной части, и поэтому я мало знаю о реализации компиляторов. на платформе .Net.
Проведя некоторые исследования по этой теме, я нашел следующие альтернативные решения для генерации кода (я не говорю о других важных частях компилятора, таких как синтаксический анализатор - здесь это выходит за рамки):
- Прямое создание кода с помощью Reflection.Emit.
- Использование абстракции Common Compiler Interface по сравнению с Reflection .Emit для автоматизации генерации некоторого кода.
- Использование CodeDOM для компиляции C# и VB во время выполнения.
- Появился новый C# «компилятор как услуга» под названием Roslyn, доступен как CTP сейчас.
- DLR предлагает поддержку динамической генерации кода и имеет некоторые интерфейсы для генерации кода во время выполнения. через деревья выражений и т. д.
- Mono поставляется с библиотекой Mono.Cecil, которая, похоже, также имеет некоторые функции для генерации кода.
Основная цель моего проекта — глубже погрузиться в внутренности .Net, изучить компилятор и получить хорошую оценку за свою работу. Вторая цель — придумать реализацию компилятора, которую впоследствии можно будет открыть для сообщества по разрешающей лицензии с открытым исходным кодом.
Итак, что здесь было бы самым интересным, познавательным, занимательным и многообещающим? Я бы определенно попробовал их все, если бы у меня было больше времени, но мне нужно отправить свою работу ровно через 6 месяцев, чтобы получить положительную оценку...
Заранее спасибо, Александр.
1
,2
и3
. - person SLaks   schedule 10.11.2011