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

Bart Kiers bkiers at gmail.com
Tue Oct 25 02:51:59 PDT 2011


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> 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