Ирония перестроить заявление

Я работаю с Irony.Net ( https://irony.codeplex.com/) и работаю с грамматикой SQL. Теперь у меня есть синтаксический анализатор и элементы, работающие для правильного анализа моих утверждений. (Мне пришлось добавить поддержку параметров в грамматику по умолчанию).

Теперь мой вопрос прост. После того, как я манипулировал ParseTree, я хочу перестроить оператор против ParseTree.

Есть ли у Irony метод Восстановления исходного разобранного текста по дереву или мне нужно написать собственную систему для этого?

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

1 ответ

Решение

После некоторого времени работы с парсером Irony.Net кажется довольно сложным восстановить исходную проанализированную строку после того, как вы манипулировали ParseTree.

Причина этого в том, что если вы не сохраните пробелы и не укажете пунктуацию, дерево разбора автоматически удалит эти записи.

Теперь часть дерева разбора дает вам "span" символов, в которых существовал токен \ term в исходной строке.

Учитывая подробности диапазона, вы можете существенно перестроить оператор, удалив символы в исходном выражении на маркерах диапазона.

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

При этом мы все еще используем проект Irony.Net для решения других проблем.

Другие вопросы по тегам