Сейчас ведутся работы над:
1. Nitra.LanguageCompiler.exe — компилятором поддержки IDE для языка. От универсального плагина решили отказаться. От части из-за большого количества хаков необходимых для обхода ограничений студии, а от части по просьбам трудящихся, так как не раз высказывались мнения, что лучше иметь отдельные плагины для каждого языка.
Nitra.LanguageCompiler.exe — это утилита командной строки которая принимает на вход файл вроде этого:
language NitraCSharp
{
span class Char = #FF0000;
span class InlineComment = #008000;
span class MultilineComment = #008000;
extension = .ncs;
company = Jet Brains;
syntax module CSharp.Main start rule CompilationUnit;
syntax module CSharp.Linq;
}
плюс параметры командной строки:
/lang:Tests\NitraCSharp.nlang /prj+ /ns:Nitra.CSharp /out:Result /bin:..\..\..\VisualStudioExtensions\Nitra.VisualStudio\bin\Debug\ ..\..\..\Grammars\bin\Debug\CSharp.Grammar.dll
На выходе получается проект интеграции с VS. Скомпилировав его мы получаем *.vsix-файл который можно непосредственно инсталлировать в Студию.
В генерируемом проекте, на сегодня, поддерживаются:
1. Подсветка.
2. Фолдинг/оутлайнинг.
3. Отображение ошибок парсинга.
4. Автодополенине ключевых слов и прочих литералов (контекстное, по грамматике).
Степень готовности Nitra.LanguageCompiler.exe — почти завершен. Но его его нужно интегрировать в инсталлятор и процесс сборки. Так что пока код не перенесет в "мастер".
Над проектом работаю я.
2. Ведутся работы над расширяемостью парсера во время парсинга. Это нужно чтобы, например, реализовать на Nitra компилятор и IDE-плагин для Nemerle.
Степень готовности — проектирование. Объем работ там не велик. Думаю, за месяц-другой завершим.
Над проектом работает Wolfhaund.
3. Синтаксис декларативного отображения дерева разбора на декларации (что-то вроде AST-а). Это часть подстистемы типизации. Еще нужно создать отображение с деклараций на символы и язык описания символов.
Степень готовности — в работе. Сейчас Hardcase прикручивает поддержку специализированного паттерн-матчинга, чтобы можно было осуществлять не тривиальное отображение.
Работы ведет Hardcase.
Дальнейшие усилия будут сосредоточены на подсистеме связывания и типизации, а так еж интеграции всего этого в IDE и ReSharper.
По завершению этого этапа можно будет начать разработку новой версии Немерла (без хаков и компромисво).