В большинстве примеров, где я могу найти приоритет, используются сгруппированные (oneOf) литералы для установки того же уровня. При таком подходе мне нужно было бы посмотреть, какой из двух (или более) он есть, а затем продолжить оценку. То, что я хотел бы сделать, - это разделить операторов, чтобы напрямую узнать, какой из них и оценить.расщепление приоритетов pyparsing
Это то, что я хотел бы реализовать, но уровни приоритета теперь неправильно
arith_prec = [
(subtract_op, 2, opAssoc.LEFT, ast.Substraction),
(add_op, 2, opAssoc.LEFT, ast.Addition),
(divide_op, 2, opAssoc.LEFT, ast.Division),
(multiplication_op, 2, opAssoc.LEFT, ast.Multiplication),
]
Это то, что я имел раньше, но должен был соответствовать какой из двух (или более) он был
plusop = oneOf(['+', '-'])
multop = oneOf(['*', '/'])
arith_prec = [
(plusop, 2, opAssoc.LEFT,),
(multop, 2, opAssoc.LEFT,),
]
Есть ли способ сделать это? Я тестировал с использованием oneOf и Or внутри arith_prec, но не использовал.
Спасибо, так что мне просто нужно вернуться туда, где я начал, и продолжать оттуда. –
Btw, ваш приоритет операций обратный - 'multop' должен идти первым. – PaulMcG