2
所以,我有以下的解析器與乘法解析表達式
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引發異常? 謝謝
你已經定義了VARNAME接受2y這樣的東西作爲潛在的變量名稱。 –
那麼,如何糾正它? –
Word也有一個2參數的構造函數 - 如果使用該構造函數,那麼第一個參數是有效前導字符的字符串,第二個參數是有效正文字符的字符串。嘗試'VARNAME = Word(alphas,alphanums,max = 3)'。 – PaulMcG