我最近开始学习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/