[antlr-interest] one rewrite rule for all alternative literals

Christian chwchw at gmx.de
Tue Oct 25 03:06:58 PDT 2011


Wonderful! Thank you, Bart. I have already seen this technique a cupple
of times. I try to apply it the next times if I get stuck again.

Am 25.10.2011 11:51, schrieb Bart Kiers:
> Hi Christian,
>
> Because you can't assign a label to an "OR-ed" group. You need to do
> something similar to this:
>
> class_modifier
>  : mod -> ^(CLASS_MODIFIER mod)
>  ;
>
> mod
>  : 'new'
>  | 'public'
>  | 'protected'
>  | 'internal'
>  | 'private'
>  | 'abstract'
>  | 'sealed'
>  | 'static'
>  | 'unsafe'
>  ;
>
> Or like this:
>
> foo
>  : class_modifier ID -> ^(FOO ID ^(CLASS_MODIFIER class_modifier))
>  ;
>  
> class_modifier
>  : 'new'
>  | 'public'
>  | 'protected'
>  | 'internal'
>  | 'private'
>  | 'abstract'
>  | 'sealed'
>  | 'static'
>  | 'unsafe'
>  ;
>
> Regards,
>
> Bart.
>
>
> On Tue, Oct 25, 2011 at 11:44 AM, Christian <chwchw at gmx.de
> <mailto:chwchw at gmx.de>> wrote:
>
>     Hi community,
>
>     I want to use only one rewrite rule for all alternatives within a
>     rule.
>     Here is an example of what I want to do, but what does not work:
>
>     class_modifier
>      :
>      m=('new'
>      | 'public'
>      | 'protected'
>      | 'internal'
>      | 'private'
>      | 'abstract'
>      | 'sealed'
>      | 'static'
>      | 'unsafe') -> ^(CLASS_MODIFIER $m)
>      ;
>
>     Why does this not work and how can I solve my problem?
>
>     Greetings,
>     Christian
>
>     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