Re: Framework для создания языков программирования
От: adontz Грузия http://adontz.wordpress.com/
Дата: 21.05.11 15:22
Оценка:
Здравствуйте, VladD2, Вы писали:

Влад, ты описал возможности (причём планируемые), а не сценарии использования. Я полностью прочитал твоё сообщение, но в голове у меня белиберда. Давай я накидаю сценарии, проблемы, а ты прокоментируешь. Я буду говорть в контексте HTML/CSS, потому что это более-менее знакомо всем и проблемы легче показать.

Синтаксическая подсветка и автодополнение

Важна скорость, подсветка должна меняться по мере набора текста, не тормозить набор и не отставать от него. Оптимальное решение: парсер конечный автомат, который умеет сохранять и восстанавливать своё состояние. Парсит от начала файла и до конца видимой области. Перепарсиваем от точки редактирования и до конца видимой области. По сути, это примерно то, что в MSVC является precompiled header. То есть состояние это не просто enum ParserState, а ещё и снимок AST, который желательно иметь возможность откатить до состояния в конкретной позиции текста.

Далее, AST в TAST надо уметь преобразовывать дял недостроенного AST и в фоновом режиме. Это должна быть дружественная к многопоточности реализация. Насколько я понял описания TAST, задачи вроде выбора конкретной перегрузки метода на нём. Нужно уметь вытягивать возможные продолжения кода, чтобы после "</" вставлять имя ближайшего непустого XML тега.

Надо поддерживать вложенные парсеры: HTML в котором CSS или JavaScript. Могут быть узкие специализации, например как строки форматирования в C#/C++. Валидация может быть внешней, например после "<tag class='" должны выплыть все CSS классы, селектор которых удовлетворяется тегом.

Автоматизация приложения

Насколько сложно создать популярный язык ECMAScript. Можно ли создать интепретатор языка? Можно ли реализовать Code DOM, что бы записывать действия пользователя в виде конструкций скриптового языка? Поможет ли твоя разработка сделать отладчик?
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.