[antlr-interest] [CSharp3] rule visibility in composite grammars

Ranco Marcus ranco.marcus at epirion.nl
Wed Mar 23 04:39:53 PDT 2011


Hi all/Sam,

While using the CSharp3 target on a composite grammar, I came across a few issues regarding rule visibility.

If no modifier (private, protected, public, ...) is specified for a rule, the Java target generates public methods (since it is not implemented IIRC) and the CSharp3 target generates private methods.

I like the idea to explicitly specify which rules are callable (by making them public). However, for composite grammars the generated parser contains delegate rules for every rule of the imported grammar, even for rules in the imported grammar that aren't public (causing compile errors). This can solved this adding a public modifier to every rule of the imported grammar, but I was wondering if there's a more convenient way of doing this.

Furthermore, the methods for the delegate rules in the composite grammars are all public, regardless of the visibility of the rule in the imported grammar. IMHO, it would be better to make them private and use the composite grammar to explicitly specify the rules that are externally visible. What are your thoughts on this?

Btw, the CSharp3 templates are also included in the original Java tool. Does that mean that we don't need the .NET version of the tool anymore?


Best regards,

Ranco Marcus
Epirion Knowledge Solutions B.V.



More information about the antlr-interest mailing list