[antlr-interest] rewrite rule translation to tree grammar

Terence Parr parrt at cs.usfca.edu
Fri Dec 14 14:23:59 PST 2007


On Dec 14, 2007, at 1:34 PM, Johannes Luber wrote:

> Terence Parr schrieb:
>> First, allow me to suggest:
>>
>> expr : INT ('+'^ INT)* ;
>>
>> To match either in tree grammar:
>>
>> expr : ^('+' expr expr)
>>    | INT
>>    ;
>
> So my rule should be:
>
> qualified_identifier
>   :   (i1=IDENTIFIER -> ^(QUALIFIED_IDENTIFIER $i1))
>       (DOT i2=IDENTIFIER -> ^(ROOT $qualified_identifier DOT $i2))*
>   ;

why not

qid : ID (DOT^ ID)* ;

> And the tree grammar equivalent:
>
> qualified_identifier
>   :   ^(ROOT qualified_identifier DOT i2=IDENTIFIER)
>   |   ^(QUALIFIED_IDENTIFIER IDENTIFIER)
>   ;

qid : ^(DOT qid)
       |  ID
       ;

Ter


More information about the antlr-interest mailing list