ANTLR 4 支持直接左递归,如下所示:
grammar test2;
options {
language = Java;
}
start : expr;
expr :
NUMBER
| expr ('+'|'-') expr;
NUMBER:
('+'|'-')? DIGIT+;
fragment
DIGIT:
'0'..'9';
但如果 expr
有参数,例如:
expr [ int i] :
NUMBER
| expr[&i] ('+'|'-') expr[&i]
;
它会在编译过程中失败,并显示如下错误消息:
can't find rule grammarSpec or tree structure error:...
。
目前 ANTLR 4 不支持这样的表达方式还是我犯了一些错误?