对于一个编译项目,我和我的团队正在用 Antlr 定义一个语法。我们目前对这些规则有疑问:
expr: ...
| lvalue expr3 expr2
| ID '('exprList')' expr2
|... ;
lvalue: ID lvalue2;
lvalue2: '.' ID lvalue2
| '[' expr ']' lvalue2
| ;
如您所见,左值可以产生 ID,从而导致非 LL( ) 语法。所以我的问题是:我们如何修改语法以使其成为 LL( ) 而不允许额外的东西。
先感谢您 !