Ирония перестроить заявление
Я работаю с Irony.Net ( https://irony.codeplex.com/) и работаю с грамматикой SQL. Теперь у меня есть синтаксический анализатор и элементы, работающие для правильного анализа моих утверждений. (Мне пришлось добавить поддержку параметров в грамматику по умолчанию).
Теперь мой вопрос прост. После того, как я манипулировал ParseTree, я хочу перестроить оператор против ParseTree.
Есть ли у Irony метод Восстановления исходного разобранного текста по дереву или мне нужно написать собственную систему для этого?
Я хорошо пишу свою собственную систему, но если она уже есть, я бы предпочел ее использовать.
1 ответ
После некоторого времени работы с парсером Irony.Net кажется довольно сложным восстановить исходную проанализированную строку после того, как вы манипулировали ParseTree.
Причина этого в том, что если вы не сохраните пробелы и не укажете пунктуацию, дерево разбора автоматически удалит эти записи.
Теперь часть дерева разбора дает вам "span" символов, в которых существовал токен \ term в исходной строке.
Учитывая подробности диапазона, вы можете существенно перестроить оператор, удалив символы в исходном выражении на маркерах диапазона.
После долгих обсуждений выяснилось, что, хотя проект Irony.Net отлично подходит для анализа ваших утверждений в AST, он не очень подходит для манипулирования разобранным деревом.
При этом мы все еще используем проект Irony.Net для решения других проблем.