[antlr-interest] Rewrite rule problem

John B. Brodie jbb at acm.org
Tue Nov 6 14:55:50 PST 2012


Greetings!

use a sub-rule. apparently ANTLRv3 is unable to maintain the tuple 
relationship inside the loop.

qualified_open_type_name: 'Global' helper+ ;

helper : PERIOD identifier_or_keyword type_arity_list?
       -> ^(PERIOD identifier_or_keyword type_arity_list?) ;

Hope this helps....
    -jbb

On 11/05/2012 03:07 PM, Roger Jack wrote:
> Bart,
>
> Thanks for the reply! I tried both
>
>        -> ^('Global' (^(PERIOD identifier_or_keyword type_arity_list?))+)
>
> and
>
>        -> 'Global' (^(PERIOD identifier_or_keyword type_arity_list?))+
>
> and still had the same problem with type_arity_list.
>
> Any other suggestions?
> *
> Roger Jack*
> On 11/5/2012 2:14 PM, Bart Kiers wrote:
>> What happens if you try:
>>
>> qualified_open_type_name
>> : 'Global' (PERIOD identifier_or_keyword type_arity_list?)+
>>       -> ^('Global' (^(PERIOD identifier_or_keyword type_arity_list?))+)
>>    ;
>>
>> ?
>>
>> Regards,
>>
>> Bart.
>>
>>
>>
>> On Mon, Nov 5, 2012 at 2:39 PM, Roger Jack <rjack at elegancetech.com
>> <mailto:rjack at elegancetech.com>> wrote:
>>
>>      Below are 3 rules from a grammar that I'm working on:
>>
>>      Snippet qualified_open_type_name:
>>      'Global' (PERIOD identifier_or_keyword type_arity_list?)+
>>      -> 'Global' ^(PERIOD identifier_or_keyword type_arity_list?)+;
>>
>>      type_arity_list: OPEN_PARENTHESIS 'Of' comma_list? CLOSE_PARENTHESIS
>>      -> ^('Of' comma_list?);
>>
>>      comma_list: COMMA+;
>>
>>      When I call the qualified_open_type_name rule, I get the following
>>      results:
>>
>>      input: Global.AnId1.AnId2
>>      tree: Global (. (ID AnId1)) (. (ID AnId2)) <- This is correct.
>>
>>      input: Global.AnId1 (Of ,,,).AnId2
>>      tree: Global (. (ID AnId1) (Of , , ,)) (. (ID AnId2) (Of , , ,)) <-
>>      Incorrect. The last (Of , , ,) should not be there.
>>
>>      Is my grammar incorrect? Is this a known bug? If it matters I'm
>>      using C#
>>      as the output language.
>>
>>      Thanks!
>>
>>      --
>>      Roger Jack
>>
>>
>>      List: http://www.antlr.org/mailman/listinfo/antlr-interest
>>      Unsubscribe:
>>      http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>>
>>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address



More information about the antlr-interest mailing list