如何在ANTLR文法中使用表达式否定
How to use expression negation in ANTLR grammar
我有以下要在 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)。我该如何写否定?
! EXPR
中的!
大概是字面上的感叹号吧。所以将其添加为词法分析器规则:
expr
: IF expr THEN expr ELSE expr
| ID ASSIGN expr
| OBRACE expr ( SEMICOLON expr )* CBRACE
| NOT expr
;
...
NOT : '!';
我有以下要在 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)。我该如何写否定?
! EXPR
中的!
大概是字面上的感叹号吧。所以将其添加为词法分析器规则:
expr
: IF expr THEN expr ELSE expr
| ID ASSIGN expr
| OBRACE expr ( SEMICOLON expr )* CBRACE
| NOT expr
;
...
NOT : '!';