[antlr-interest] rule parameter question

Mark Truluck mark.truluck at cogiton.com
Thu Jun 30 05:26:34 PDT 2011


Hello,

I am trying to do what I think is a simple parameter passing to a rule in
Antlr 3.3:

-----------
grammar rule_params;


options
{
    output = AST;
}

rule_params
    :   outer;


outer:  outer_id '[' inner[$outer_id.tree] ']';

inner[CommonTree parent]    :   inner_id '['  ']';


outer_id    : '#'! ID;

inner_id    : '$'! ID ;


ID   :  ('a'..'z' | 'A'..'Z') ('a'..'z' | 'A'..'Z' | '0'..'9' | '_' )* ;

---------

However the inner[CommonTree parent] generates the following:

*** inner4=inner((outer_id2!=null?((Object)outer_id2.tree):null));


Resulting in this error:

*** The method inner(CommonTree) in the type rule_paramsParser is not
applicable for the arguments (Object)


As best I can tell, this is the exact same as the example in the Antrl
book:


classDefinition[CommonTree mod]

(Kindle Location 3993) - sorry I don't know the page number but it is
 in the middle of the book in chapter 9, section labeled "Creating Nodes
 with Arbitrary Actions".

Thanks for any help.



Mark Truluck
COGITON, Inc.





More information about the antlr-interest mailing list