【发布时间】:2016-11-08 23:45:35
【问题描述】:
我正在为一种语言创建 Antlr4 语法,其中逻辑运算符 NOT 以及运算符 Plus 和 Minus 可以是一元或二元运算符。
我应该如何定义 Antlr4 语法中的运算符,以便解析器可以区分它们?
例子:
- NOT 1 is 0(一元运算符)
- 1 NOT 1 is 0(二元运算符)
这是我的 Antlr4 解析器的一小部分:
expr: expr ('%') expr #Modulo
| expr op=('*'|'/') expr #MulDiv
| expr op=('+'|'-') expr #AddSub
| NOT expr #NegOp
这是我的 Antlr4 Lexer 的一小部分:
ADD : '+';
SUB : '-';
NOT : ([nN][oO][tT]|[~]);
【问题讨论】: