Yup, I just found that out separately and checked it in in CL7221. Sam
-----Original Message----- From: Terence Parr [mailto:[email protected]] Sent: Sunday, November 28, 2010 4:45 PM To: Sam Harwell Cc: 'Johannes Luber'; [email protected] Subject: Re: please remove hasDelegates Yes, null is very different than "". Hmm...so map.(null) does not yield default value, eh? Do we have a "null" keyword for maps in ST? Can't remember. maybe just do > <csharpVisibilityMap.(ruleDescriptor.modifier); null="private"> for now Ter On Nov 28, 2010, at 2:26 PM, Sam Harwell wrote: > I'm not seeing a Rule.getRuleModifier() method. > > The modifier field is only used in two places. One is CSharp3.stg, > where the change will make it work correctly. I'm using the following > template expression, with the hope that "private" is used whenever no > rule modifier is given. > > csharpVisibilityMap ::= [ > "private":"private", > "protected":"protected", > "public":"public", > "fragment":"private", > default:"private" > ] > > ... > > <csharpVisibilityMap.(ruleDescriptor.modifier)> > > > > The other usage is in Ruby.stg, where it's gated as follows: > > <if(ruleDescriptor.modifier)>...<endif> > > If StringTemplate evaluates this condition the same way for a null > string and an empty string, then there is no change. Otherwise, the > change would could cause a problem for this template. > > Sam > > -----Original Message----- > From: Terence Parr [mailto:[email protected]] > Sent: Sunday, November 28, 2010 3:40 PM > To: Sam Harwell > Cc: 'Johannes Luber'; [email protected] > Subject: Re: please remove hasDelegates > > Are you sure this won't mess something else up? What template expr > are you using that messes up? You're referencing Rule.getRuleModifier() right? > > Ter > > On Nov 28, 2010, at 1:28 PM, Sam Harwell wrote: > >> Can you also update the modifier field as mentioned in the last >> paragraph (to an empty string instead of null)? >> >> Thanks, >> Sam > >>> The Java version of the tool does properly track the rule modifiers. >>> However, when the modifier isn't specified, the 'modifier' field in >>> Rule.java defaults to null. Due to the early out in >>> ASTExpr.getObjectProperty, a null value doesn't end up pulling the >>> default value from the map defined in my template. If you use an >>> empty string in Grammar.defineRule whenever the modifier argument is >>> null, it corrects the issue. >>> >>> Sam >> >> > > _______________________________________________ antlr-dev mailing list [email protected] http://www.antlr.org/mailman/listinfo/antlr-dev
