[antlr-interest] transforming AST's in place when generated

Mark Wright markwright at internode.on.net
Fri Feb 22 16:32:26 PST 2008


Hello Carter,

The idea is to pass the int type_id AST as a paramater to the
init_declarator_list, and the init_declarator_list passes it as a
parameter to the init_declarator, something like:

declaration
  :    storage_class_specifier? type_id init_declarator_list[$storage_class_specifier.tree, $type_id.tree] ';'
          -> init_declarator_list
  ;

init_declarator_list[CommonTree scs, CommonTree ti]
  :   init_declarator[$scs, $ti] (',' init_declarator[$scs, $ti])*
          -> init_declarator+
  ;

init_declarator[CommonTree scs, CommonTree ti]
  :    function_declarator
          -> {(scs == null)}? ^(FUNCTION_DECLARATION {$ti} function_declarator)
          -> {(scs != null)}? ^(FUNCTION_DECLARATION {$scs} {$ti} function_declarator)
          ->
  |   declarator initializer?
          -> {(scs == null)}? ^(DD {$ti} declarator initializer?)
          -> {(scs != null)}? ^(DD {$scs} {$ti} declarator initializer?)
          ->
  ;

etc.

Regards, Mark

-- 


More information about the antlr-interest mailing list