我要解析一个数学表达式,它可能是:
a+b
a+b+c
a+(b+c)
(a+b)+c
a+(b+c)+d
a+((b+c)+d)
a+(b+(c+d))
a+(b+(c+d)+e)+f
以此类推。
这是我到目前为止所拥有的:
abp = Literal("(")
cep = Literal(")")
op = Word("+-*/", max=1)
num = Group(Word(nums) + Optional("." + OneOrMore(Word(nums))))
base = num + op + num
operac = base + ZeroOrMore(op + num)
par = abp + operac + cep
grup = operac | par | num
parentbase = ZeroOrMore(grup + op) + Group(num | Group(operac | par)) + ZeroOrMore(op + grup)
parent = Group(abp + parentbase + cep) | parentbase
这些规则能够解析(3-(2+3*2-3))
,但不能解析(3-(2+(3*2)-3))
。问题是我需要在括号内进行嵌套操作。我读到nestedExpr
可以解决问题,但无法正常工作。
我正在使用Python 3.6.7。不管深度有多深,我如何才能使该规则读取嵌套的括号?