尝试编写一个antlr语法,它只解析相同类型变量的算术表达式。如果它与左侧或右侧不是同一类型,则不应对其进行解析。这是我所拥有的;
stat
: Left = VARIABLE Op = ASSIGMENT Right = expr # Assigment
;
expr
: '(' Exp = expr ')' # Parens
| MINUS Exp = expr # UnaryMinus
| Left = expr Op = (TIMES | DIV) Right = expr # MulDiv
| Left = expr Op = (PLUS | MINUS) Right = expr # AddSub
| (VARIABLE | CONSTANT) # Element
;
ASSIGMENT : '=' ;
PLUS : '+' ;
MINUS : '-' ;
TIMES : '*' ;
DIV : '/' ;
LPAREN : '(' ;
RPAREN : ')' ;我不想要像x= 5 + 'f‘或x=c-5这样的东西(如果c是不是整数的变量)
发布于 2019-03-11 20:10:52
它被称为Semantic analysis。
解析完成后,您必须遍历生成的AST并检查每个表达式和变量的正确性。
https://stackoverflow.com/questions/55067020
复制相似问题