用乘法解析表达式

时间:2017-04-13 20:14:20

标签: python pyparsing

所以,我有以下解析器

END = Literal(';').suppress()
POINT = Literal('.')
COMMA = Literal(',').suppress()
COLON = Word(':', exact=1).suppress()
EQUAL = Literal('=').suppress()
VARNAME = Word(alphanums, max=3)
DIGIT = Word(nums, exact=1)
SIGN = oneOf('+ -')
OPER = oneOf('+ - * / ^ ')
NATNUM = DIGIT + ZeroOrMore(DIGIT)
REALNUM = Combine(Optional(SIGN) + NATNUM + Optional(POINT)*1 + NATNUM)
EXRPESS = Forward()
EXRPESS << Combine((REALNUM | VARNAME) + ZeroOrMore(OPER*1 + EXRPESS), adjacent=False)

表达式,就像那个2 * y + 7,它解析好了,不幸的是还有2y + 7.那么如果2和y结合在一起怎么改变EXPRESS来引发异常呢? 谢谢

1 个答案:

答案 0 :(得分:0)

两个解析器都存在问题

VARNAME = Word(alphas, max=1)
NATNUM = Word(nums) # 1234567890

所以2y是varname,但不是我预期的Num和Var。 谢谢。