Что мне делать с конкретным синтаксическим деревом?
Я использую pyPEG для создания дерева разбора для простой грамматики. Дерево представлено с использованием списков и кортежей. Вот пример:
[('command',
[('directives',
[('directive',
[('name', 'retrieve')]),
('directive',
[('name', 'commit')])]),
('filename',
[('name', 'f30502')])])]
Мой вопрос: что мне делать с этим на данный момент? Я знаю, что многое зависит от того, что я пытаюсь сделать, но я не смог найти много о потреблении / использовании деревьев разбора, только создавая их. У кого-нибудь есть ссылки на ссылки, которые я мог бы использовать?
Спасибо за вашу помощь.
2 ответа
CST (конкретные синтаксические деревья) довольно сложны для работы по ряду причин. Поэтому они обычно преобразуются в AST (абстрактное синтаксическое дерево) для дальнейшей обработки (подробности в той же статье). Например, компилятор Python (компонент, который превращает исходный код Python в байт-код Python VM) переводит CST в AST как часть своей работы.
Теперь это действительно сильно зависит от вашей конечной цели. Что вы анализируете? Что ты хочешь с этим делать? Если вы воссоздаете классический процесс компиляции, конвертация в AST, вероятно, является хорошим способом для продолжения. В противном случае вы можете найти CST достаточно - все зависит от того, что вам нужно.
У нас есть совет сообщества для поддержки таких вопросов вокруг pyPEG. Вы можете найти его здесь: https://community.fdik.org/board/show/2/pypeg/
Ваш В.Б.