Re[2]: [Nitra] Отчет на 18.02.2014
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.02.15 20:15
Оценка:
Здравствуйте, btn1, Вы писали:

B>Имеется ввиду "один бинарь под все студии" или что-то ещё?


Ранее (точнее, пока) была одна интеграция поддерживающая любые языки созданные на базе Nitra. Нужно было только прописать язык в NitraGlobalConfig.xml.

B>Вот тут не совсем понятно. Если ограничения есть, они в любом случае должны хакаться/обходиться — разве это связано с версиями?


Студия расчитана на статическую регистрацию плагинов для каждого языка. Это верно для всех видов расширения (MPF, MEF, ReSharper plagin).

B>....и тут мы окончательно запутываемся в том, по какому критерию мы теперь разделяем плагины!


Один язык — один плагин. Под языком понимается формат файла. Ну, там .cs, .cshtmp, .n, .json...

B>Какие языкИ (мн.ч.) имеются ввиду??? Я думал, у нас будущее состоит из одного языка — Нитры,


Ну, дык разобрался бы давно что такое Nitra. Это мета-язык. У нее есть свой формат .nitra и для него будет свой, отдельный плагин.

B>...для студий 2008/2010/2013 и теперь уже 2015.


Что касается поддержки версий студий, то тут есть вопросы. Возможно мы отсечем старые версии студий. Причем пока не ясно будет ли это начиная с VS 2013 или сразу с VS 2015. А может будем поддерживать начиная с VS 2010.

B>Не совсем понятно... "расширяемый парсер" ведь и так был киллер-фичей Немерли, не? В смысле мы делаем "using Модуль-Синтаксис" и у нас расширенный парсер для нового синтаксиса.


Сейчас нет механизма чтобы реализовать нечто вроде того что используется в Nemerle, когда using в файле может изменить грамматику "на ходу". Сейчас можно только перед парсингом собрать парсер из разных модулей. Сейчас же работа ведется непосредственно над средствами для реализации using-расширяемости или чего-то вроде этого.

B>А!А!А!А!! два месяца — это "невелик"?! На фулл-тайме это очень даже велик!


Сядь, попробуй сделать. Может получится быстрее. Я на всякий случай дал запас.

B>А можно написать что это за зверь? "декларации" — это ж объявления всяких штук в языке — переменных, классов.


Некоторое описание будет в статья которую скоро выложим здесь. В двух словах — это нечто воде АСТ-а. Который имеет более простую структуру, над которым удобно производить вычисления и который будет автоматически сериализовываться в рамках солюшена и загружаться при его открытии. В РеШарпере рукописные аналоги называются "кэшами".

Для каждого файла будет создавать набор деклараций который сериализуется и доступен все время. Ну, а они, в свою очередь, будут использоваться для автоматического получения символов. Символы же это метаинформация. Нечто вроде компайл-тайм рефлексии или немерловых билдеров (TypeBuilder, MethodBuilder, ...).

Мы предоставим не захардкоженные решения (как в Немерле), а инструмент позволюящий легко получать свои типы символов и проецировать на них разбираемый код. Общая схема: код в виде текста -> декларации -> символы. Дерево деклараций создается для каждого файла. Символы уже не привязаны к файлам. Например, паршал-класс может иметь несколько деклараций, но один символ.

Так же будет подсистема связывания которая позволит получить ссылку на символ для любого имени в коде.

B>Ух ты! А как конструктор может связывать символы с типами, если он просто конструктор и не знает, кто в языке кто? Это ж проектировщик языка решает: у нас есть слово в кавычках — значит это название типа.


Я не понял что/кто понимается под конструктором. Так что отвечу на счет типов. Типы — это один из видов символов. Мы не будем выделять типы отдельно. Мы предоставим инфраструктуру для описания символов и отображения на них кода. Поддержку именно типов можно будет поместить в библиотеки.

B>Круто! Т.е. текущая стадия завершается созданием полноценного конструктора?


Что за конструктор? Что ты под этим понимаешь?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.