0
論理演算子NOT
と演算子PlusおよびMinusが単項演算子または二項演算子となる言語のAntlr4文法を作成中です。Antlr4は単項または二進の演算子を定義します
パーサはそれらを区別できるように、どのように私はAntlr4文法で演算子を定義する必要がありますか?
例:
- しない1が0(単項演算子)
- 1 1でない0(二項演算子)である
ここでは私のAntlr4パーサのごく一部です:
expr: expr ('%') expr #Modulo
| expr op=('*'|'/') expr #MulDiv
| expr op=('+'|'-') expr #AddSub
| NOT expr #NegOp
私のAntlr4 Lexerの一部です:
01私にとってexpr (MOD) expr #Modulo
| op=(ADD|SUB) expr #UnaryPlusMinus
| expr op=(ADD|SUB) expr #AddSub
| expr op=(AND|OR|XOR|NOT) expr #LogOp
| NOT expr #NegOp
を私の言語のような構文をサポートしているので、上記の溶液で結構です:私は私のパーサーに次のルールを追加する必要が同時に私の言語のオペレータは単項およびバイナリ作るために
ADD : '+';
SUB : '-';
NOT : ([nN][oO][tT]|[~]);