【问题标题】:Antlr 3.2 Rewrite RulesAntlr 3.2 重写规则
【发布时间】:2010-11-22 16:56:14
【问题描述】:

我最近开始学习 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 节点。你不就是这样吗?我不能让它与生根('^')或忽略('!')一起工作。我很困惑。

【问题讨论】:

    标签: antlr antlr3 antlrworks


    【解决方案1】:

    选项 {输出=AST;}

    【讨论】:

    • @TimeHorse,options {output=AST;} 应该直接放在你的 grammar TestRewrite; 语句之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多