Я создаю дерево для представления простого языка. Я очень знаком с Абстрактными синтаксическими деревьями и работал над платформами для создания и использования их в C++. Существует ли стандартная библиотека Python для определения или управления произвольным ASTs? Сбой этого, там древовидная библиотека, которая полезна для той же цели?
Отметьте, я не управляю Python ASTs, таким образом, я думаю, что модуль AST не подходит.
АСТ очень просто реализовать на Python. Например, для моего проекта pycparser (полный парсер на Си на Python) я реализовал ASTs на основе идей, заимствованных из модулей Python. Различные узлы AST указаны в конфигурационном файле YAML, и я генерирую код на Python для этих узлов на самом Python
.Если вы представляете свои грамматические элементы как выражения в наборе, то к каждому выражению можно прикрепить действие по разбору, которое возвращает экземпляр класса, содержащий маркеры разбора, относящиеся к конкретному типу синтаксического анализатора. В вики-проекте pyparsing есть пара примеров, иллюстрирующих эту технику (invRegex.py, simpleBool.py и evalArith.py). (Во всех этих грамматиках используется встроенный операторPrecedence, который может затушевывать некоторые грамматические структуры, но
.Эта запись в блоге, хотя и краткая по деталям реализации, описывает хороший интерфейс, который Python ASTs мог бы реализовать.
http://chris-lamb.co. uk/2006/12/08/ Visitor-pattern-in-python/