非常新的ANTLR4并尝试为目标语言Forth创建表达式分析器。由于Forth使用后缀表示法,我正在尝试为后缀整数算法编写语法规则。
下面是中缀和后缀整数运算的语法,但是我写的后缀语法没有创建一个合适的解析树。
使用输入3 4 + 5 *
进行测试
所需/预期的解析树:
任何人都可以帮我解决这个问题吗?感谢。
grammar ExpAnalyser;
//Parser : grammer
//Infix Arithmetic
/*eval : additionExp ;
additionExp : multiplyExp(PLUS multiplyExp | MINUS multiplyExp)* ;
multiplyExp : unaryExp(MULT unaryExp | DIV unaryExp)* ;
unaryExp : MINUS atomExp | atomExp ;
atomExp : NUMBER | LPAREN eval RPAREN ;*/
//Postfix Arithmetic
eval : operation ;
operation : atomExp(atomExp PLUS | atomExp MINUS | atomExp MULT | atomExp
DIV | atomExp MOD)* ;
atomExp : NUMBER | NUMBER NUMBER eval ;
//Tokenizers : Lexers
MULT : '*' ;
DIV : '/' ;
MOD : 'mod' ;
PLUS : '+' ;
MINUS : '-' ;
//gForth floating point arithmetic tokens
FMULT : 'f*' ;
FDIV : 'f/' ;
FPLUS : 'f+' ;
FMINUS : 'f-' ;
LPAREN : '(' ;
RPAREN : ')' ;
NUMBER : [0-9]+ ('e'[0-9]+)? ;
COMMENT : '//' .+? ('\n'|EOF) -> skip ;
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines