Nitra Milestone 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.15 18:51
Оценка: 85 (6)
Отчитываюсь о проделанной работе. Мы завершили Milestone 2. Теперь на Nitra можно создавать расширяемые парсеры и производить связывание имен (простую типизацию не завязанную на вывод типов) для языков общего назначения и DSL-ей.

Все это не означает, что работа завершена. Нужно еще многое сделать. Но уже можно начинать делать какие-то свои языки и DSL-и.

В качестве подопытного языка мы использовали C#. Он был выбран как один из наиболее сложных из современных мэйнстрим-языков и из-за того, что у него есть полноценная спецификация. Еще одной предпосылкой являлось то, что я хочу сделать расширяемую версию C#. На новой подсистеме связывания сделана типизация C# в плоть до тел методов. При этом результат получился очень компактным, легким в понимании и поддержке (после освоения наших DSL-ей), и очень легко расширяемым. Что реализация Nemerle, что Roslyn на ее фоне выглядят переусложненными монстрами и при этом поддерживают очень скудную расширяемость. Нитровский вариант на против может легко расширяться и при этом на порядок проще в поддержке.

В тестах, у нас уже есть C# с JSON-ом в качестве расширения. В этом примере C#-выражения внедряется JSON-выражения, которые в свою очередь, может содержать C#-выражения (рекурсивно). Причем расширения добавляются, как и в Nemerle, директивой usung.

Если для языка имеется код связывания, то для него можно генерировать плагин к ReSharper-у, который будет предоставлять базовые сервисы IDE. Потенциально можно создать генератор для любой IDE (включая VS без ReSharper-а). Просто сделать расширение для ReSharper-а было проще.

Подсистем генерации кода и бэкэндов пока нет, но код можно генерировать и вручную. Символы получаемые нашей подсистемой связывания можно обрабатывать из любого дотнет-кода (на C#, Nemerle или чем угодно).

В ближайшее время я сделаю статью, в которой расскажу о подсистеме связывания и прочих возможностях появившихся в Nitra за последний год, а так же постараюсь сделать скринкасты.

ЗЫ

Я подправил стартовую страницу проекта. Просьба зайти на нее и оценить насколько она понятная для не посвященных в детали проекта. Приветствуется любая конструктивная критика.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.