Antlr 3.2 Правила переписывания - PullRequest
2 голосов
/ 22 ноября 2010

Я недавно начал изучать Antlr и загружать AntlrWorks 1.4, который предположительно включает в себя Antlr 3.2. Предполагается, что 3.2 поддерживает грамматики правил перезаписи, такие как '->', но я не смог получить даже самый простой случай, который я мог бы построить, чтобы он работал на основе правил Lexer или Parser:

grammar TestRewrite;

ab  :   a b -> a;

a   :   A;
b   :   B;

A   :   'a';
B   :   'b';

Когда я пытаюсь это скомпилировать, я получаю сообщение об ошибке:

[11:26:29] error(100): TestRewrite.g:3:13: syntax error: antlr: TestRewrite.g:3:13: unexpected token: a

Почему это так? Конструкция кажется достаточно простой: ab должен генерировать дерево, в которое захватывается только узел. Разве не так ты это делаешь? Я не могу заставить его работать с рутом ('^') или игнорированием ('!'). Я очень смущен.

1 Ответ

8 голосов
/ 22 ноября 2010

options {output = AST;}

...