Что мне делать с конкретным синтаксическим деревом?

Я использую 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/

Ваш В.Б.

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