antlr - Antlr 3.2重写规则

标签 antlr antlr3 antlrworks

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

相关文章:

java - antlr 4.2.2 输出到控制台警告 (157)

使用 ANTLR 3 解析由两个句点分隔的 float 和范围

intellij-idea - 如何为 Intellij IDEA 配置 antlr4 插件

java - 由于递归规则调用,ANTLR3 错误规则具有非 LL(*) 决策

antlr - ^ 和 !在 ANTLR 语法中代表

java - 变量的 ANTLR 语法

c# - 在 Visual C# Express 2010 中使用 ANTLR 编译时出错

java - 返回 ANTLR 中生成的 java 代码中的值

java - (CommonTree)parser.javaSource() 行中的 antlr 错误

windows - 在 Windows 7 上独立运行 AntlrWorks2