Библиотека для программирования абстрактных синтаксических деревьев в Python - PullRequest
10 голосов
/ 23 декабря 2009

Я создаю дерево для представления простого языка. Я очень хорошо знаком с деревьями абстрактного синтаксиса и работал над фреймворками для их построения и использования в C ++. Существует ли стандартная библиотека Python для указания или управления произвольными AST? В противном случае, есть ли библиотека дерева, которая полезна для той же цели?

Обратите внимание, я не управляю Python AST , поэтому я думаю, что модуль AST не подходит.

Ответы [ 4 ]

7 голосов
/ 23 декабря 2009

AST очень просты для реализации в Python. Например, для моего проекта pycparser (полный синтаксический анализатор C на Python) я реализовал AST на основе идей, заимствованных из модулей Python. Различные узлы AST указаны в файле конфигурации YAML, и я генерирую код Python для этих узлов в самом Python.

1 голос
/ 11 апреля 2014

pyast - пакет для создания деревьев декларативного абстрактного синтаксиса.

0 голосов
/ 27 декабря 2009

В этой записи блога, хотя и не хватает подробностей реализации, описан хороший интерфейс, который может реализовать AST на Python.

http://chris -lamb.co.uk / 2006/12 / 08 / посетитель-модель-в-питон /

0 голосов
/ 23 декабря 2009

Если вы представляете свои элементы грамматики как выражения в pyparsing, вы можете прикрепить действие разбора к каждому выражению, которое возвращает экземпляр класса, содержащий проанализированные токены, в специфическом для синтаксического анализатора типе. Есть несколько примеров в викинге pyparsing, иллюстрирующих эту технику ( invRegex.py , simpleBool.py и evalArith.py ). (Все эти грамматики используют встроенную функцию operatorPrecedence, которая может скрыть часть структуры грамматики, но

...