[Nitra] Отчет на 18.02.2014
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.02.15 20:13
Оценка: 106 (9)
Сейчас ведутся работы над:
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.

По завершению этого этапа можно будет начать разработку новой версии Немерла (без хаков и компромисво).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 18.02.2015 21:13 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.