我最近开始学习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应该生成一棵仅捕获一个节点的树。那不是你的方式吗?我无法使其与生根('^')或忽略('!')一起使用。我很困惑

最佳答案

选项{output = AST;}

关于antlr - Antlr 3.2重写规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4247961/

10-13 07:10