用乘法解析表达式

2024-09-24 06:29:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有下面的解析器

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来引发异常呢? 谢谢


Tags: exactwordpointdigitsigncombineopersuppress