Как перемещаться по узлам абстрактного синтаксического дерева для набора условий?Python

Программы на Python
Anonymous
Как перемещаться по узлам абстрактного синтаксического дерева для набора условий?

Сообщение Anonymous »

Как пройти по CEL AST и построить стек условий по порядку?
Я использую celparser.py из библиотеки cel-python для анализа выражений CEL и генерации АСТ. После анализа мне нужно пройти по AST и построить стек условий с самым внутренним условием вверху.
Например, учитывая это выражение CEL:

Код: Выделить всё

(a.name == 'Jon' && (c.role == 'lead' || c.region == 'US')) ? b.salary : c.bonus
Я ожидаю, что стек будет выглядеть так:

Код: Выделить всё

c.role == 'lead'
c.region == 'US'
c.role == 'lead' || c.region == 'US'
a.name == 'Jon' && (c.role == 'lead' || c.region == 'US')
Как лучше всего добиться такого обхода и построения стека из AST? Любая помощь будет оценена по достоинству!

Подробнее здесь: https://stackoverflow.com/questions/789 ... conditions

Вернуться в «Python»