私が優先順位を見つけることができるほとんどの例では、グループ化された(oneOf)リテラルを使用して同じレベルを設定します。このアプローチでは、2つ(またはそれ以上)のうちどれを参照してから評価を続ける必要があります。私がしたいのは、オペレータを分割して、それがどれであるかを直接知って評価することです。pyparsing precedence split
これは私が前に持っていたが、それは
た2つ(またはそれ以上)のどちらと一致していたものです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