[antlr-interest] Rewrite rule problem

Roger Jack rjack at elegancetech.com
Tue Nov 6 16:04:01 PST 2012


John,

That worked...thanks!

*Roger Jack*
On 11/6/2012 5:55 PM, John B. Brodie wrote:
> 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