コンパイル プロジェクトのために、私のグループと私は Antlr で文法を定義しています。現在、次のルールに問題があります。
expr: ...
| lvalue expr3 expr2
| ID '('exprList')' expr2
|... ;
lvalue: ID lvalue2;
lvalue2: '.' ID lvalue2
| '[' expr ']' lvalue2
| ;
ご覧のとおり、左辺値は ID になる可能性があり、LL( ) 以外の文法につながります。そこで私の質問は、余分なものを許可せずに文法を LL( ) にするためにどうすれば文法を変更できるかということです。
前もって感謝します !