2
Also, ich habe folgende ParserParsing Ausdruck mit Multiplikation
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)
Und der Ausdruck, so etwas wie, dass 2 * y + 7, und es ist ok, leider sowie 2j + 7. So ist parsen, wie EXPRESS ändern, um eine Ausnahme auszulösen, wenn 2 und y zusammenkommen? Danke
Sie haben VARNAME definiert, um Dinge wie 2y als möglichen Variablennamen zu akzeptieren. –
Also, wie man es korrigiert? –
Word hat auch einen Konstruktor mit zwei Argumenten - wenn Sie das verwenden, dann ist das erste Argument eine Zeichenfolge mit gültigen führenden Zeichen, und das zweite Argument ist eine Zeichenfolge mit gültigen Körperzeichen. Versuchen Sie 'VARNAME = Word (alphas, alphanums, max = 3)'. – PaulMcG