反同类型算术表达式

时间:2019-03-08 16:15:11

标签: math types expression 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是不是整数的变量)

1 个答案:

答案 0 :(得分:1)

它叫Semantic analysis

解析完成后,您必须遍历生成的AST,并检查每个表达式和变量的正确性。