如何在pyparsing中使用嵌套括号

时间:2019-05-31 21:07:23

标签: python-3.x pyparsing

我要解析一个数学表达式,它可能是:

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。不管深度有多深,我如何才能使该规则读取嵌套的括号?

0 个答案:

没有答案