2

我最近开始学习 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 应该生成一棵树,其中只捕获 a 节点。你不就是这样吗?我不能让它与生根('^')或忽略('!')一起工作。我很困惑。

4

1 回答 1

8

选项 {输出=AST;}

于 2010-11-22T17:49:15.070 回答