我想写一个词法分析器和解析器,它可以接受像这样的表达式
(4+y)*8
4+5*x
(3)+(z*(4+w))*6
然后考虑乘法优先于加法来解析它们。特别是,我不知道如何避免
4+5*x
被归类为
MULTIPLICATION(ADDITION(4,5),5) instead of ADDITION(4+MULTIPLICATION)
我的词法分析器看起来像这样:
PLUS : '+';
TIMES : '*';
NUMBER : [0-9]+'.'?[0-9]*;
VARIABLE : [(a-z)|(A-Z)]+;
OPENING : '(';
CLOSING : ')';
WHITESPACE : [ \t\r\n]+ -> skip ;