[antlr-interest] compilation error with tree filters under 3.4

Tom Smith yotommy at gmail.com
Thu Jan 5 13:41:30 PST 2012


Following up with different versions of antlr: the error does not
occur with 3.1.3, but does with 3.2+.

Thanks,
Tom.

On Thu, Jan 5, 2012 at 1:13 PM, Tom Smith <yotommy at gmail.com> wrote:
> I am trying to upgrade from 3.1.3 to 3.4, but I am now encountering a
> compile error on the generated code.  The toy tree filter shown below
> reproduces the problem.  The compilation error is:
>
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile
> (default-compile) on project treeNotFound: Compilation failure
> [ERROR] /Users/tsmith/devel/antlr/treeNotFound/target/generated-sources/antlr3/example/TFilter.java:[249,52]
> cannot find symbol
> [ERROR] symbol  : variable tree
> [ERROR] location: class org.antlr.runtime.RuleReturnScope
>
> The generated source line in question is:
>
>  if ( _first_1==null ) _first_1 = vl.tree;
>
> vl is declared as RuleReturnScope, which does not have a public field
> named 'tree'.
>
> Suggestions?
>
> Thanks,
> Tom Smith.
> ===
> tree grammar TFilter;
>
> options {
>        tokenVocab=TParser;
>        output=AST;
>        ASTLabelType=CommonTree;
>        filter = true;
> }
>
> @header {
> package example;
>
> import java.util.List;
> }
>
> topdown
>  :  topRule
>  ;
>
> topRule
>  :  assignListLhs { System.out.println($assignListLhs.variableList); }
>  ;
>
> assignListLhs returns[List<Tree> variableList]
>  :  ^(LIST vl+=varName+) { $variableList = $vl; }
>  ;
>
> varName
>  :  Identifier
>  ;


More information about the antlr-interest mailing list