В следующей грамматике:Предотвращение неясной неоднозначности в грамматике
expr : r1 EOF
| r2 EOF
;
r1 : '1' L1 'x' ;
r2 : '1' L2 'y' ;
L1: 'a' ;
L2: 'a' ;
Когда я разбор выражения
1ay
Я ожидаю, что синтаксический анализатор для создания соответствующего синтаксического дерева, однако я получаю следующая ошибка:
line 1:2 mismatched input 'y' expecting 'x'
Почему он не может быть правильно разобран? Могу ли я дать ему директивы для этого?
Синтаксический код:
private static void parse(String str)
{
ANTLRInputStream input = new ANTLRInputStream(str);
AmbLexer lexer = new AmbLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
AmbParser parser = new AmbParser(tokens);
ParseTree tree = parser.expr();
System.err.println(tree.toStringTree(parser));
}