Рекурсивные выражения с pyparsing

Я пытаюсь понять, как сделать левоассоциативное выражение, в котором рекурсивные (ни в чем не заключенные) выражения возможное. Например, я бы хотел сделать:

expr + OP + expr

, который анализирует 2 операции типа 1 x 2 x 3 в (expr OP expr) OP expr результат.

Если я попытаюсь предотвратить expr анализируя бесконечную рекурсию, я могу сделать что-то вроде:

expr -> Group(simple_expr + OP + expr)
      | simple_expr

, но тогда я получу результат expr OP (expr OR expr) .

Как принудительно привязать левую сторону?

Изменить: я знаю об операторе operatorPrecedence , но когда оператор "IS" + необязательный ("NOT") или аналогичный, похоже, он не соответствует должным образом.

5
задан viraptor 31 December 2010 в 17:42
поделиться