Antlr 3.2重写规则

Tim*_*rse 2 antlr antlrworks antlr3

我最近开始学习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';
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到错误:

[11:26:29] error(100): TestRewrite.g:3:13: syntax error: antlr: TestRewrite.g:3:13: unexpected token: a
Run Code Online (Sandbox Code Playgroud)

为什么是这样.结构看起来很简单:ab应该生成一棵树,其中只捕获一个节点.不是你怎么做的?我无法使用rooting('^')或忽略('!').我很困惑.

Ter*_*arr 8

options {output = AST;}

  • 作为Terence Parr的+1.感谢ANTLR!:) (2认同)