我要在下面实现ANTLR语法。
INPUT → EXPR ;
EXPR → if EXPR then EXPR else EXPR
| { EXPR (; EXPR)* }
| ! EXPR
| id := EXPR
我已经完成了'expr'的工作,但是在编写!expr时出错。
input : expr SEMICOLON;
expr : IF expr THEN expr ELSE expr
| ID ASSIGN expr
| OBRACE expr ( SEMICOLON expr )* CBRACE
| !expr
;
此行显示错误-(!expr)。如何写取反符?
答案 0 :(得分:0)
!
中的! EXPR
可能是文字感叹号。因此,将其添加为词法分析器规则:
expr
: IF expr THEN expr ELSE expr
| ID ASSIGN expr
| OBRACE expr ( SEMICOLON expr )* CBRACE
| NOT expr
;
...
NOT : '!';