You probably have to double escape it: \\\%
Jim > -----Original Message----- > From: [email protected] [mailto:[email protected]] > On Behalf Of Alan Condit > Sent: Friday, February 03, 2012 8:23 AM > To: Terence Parr > Cc: ANTLR-dev Dev > Subject: Re: [antlr-dev] ANTLR barfs on %c in format string in ObjC > > I tried changing the character after the escaped \% to d, f, s, x, @, > all valid ObjC format options (in fact all but @ are valid for 'C' as > well. They all generated the same syntax error message (except for the > format character). > > This error is not occurring in "a group file" but the "group.g" grammar > for ST4. Still as Ter says, it appears to be an error in an ANTLR > grammar not passing the escaped % but rather seeing it as the start of > a string template. > > Now this is really wierd, I opened the file in ANTLRWorks and just > tried generating the code after changing the character after the > escape. I tried about four times on the fourth try it accepted \%d. > Then I exited out of ANTLRWorks and reloaded the file with the \%d in > it and it failed, so I cycled through a bunch more changing trying to > generate the code after each change. On about the fourth change it > accepted \%c. > > Then I tried the same thing again and couldn't get anything but the > syntax error after repeated trys. > > Alan > --- > > Alan Condit > 1085 Tierra Ct. > Woodburn, OR 97071 > > Email -- [email protected] > Home-Office (503) 982-0906 > > On Feb 2, 2012, at 10:58 AM, Terence Parr wrote: > > > "@lexer::methods {" tells me that it is an action within an antlr > > grammar not group file. still, \% should work! :( Ter On Feb 2, 2012, > > at 10:47 AM, Alan Condit wrote: > > > >> Ter, > >> > >> It is the group.g file from ST4 with option {language=ObjC}; I have > tried it with the escape and without and still get the same error > message. I have inserted the portion of the file below. > >> > >> Alan > >> > >> @lexer::methods { > >> @synthesize group; > >> > >> - (void) reportError:(RecognitionException *)e { > >> NSString *msg = nil; > >> if ( [e isKindOfClass:[NoViableAltException class]] ) { #pragma > >> error fix formatting > >> msg = [NSString stringWithFormat:@"invalid character '\%c'", > [input LA:1]]; > >> } > >> else if ( [e isKindOfClass:[MismatchedTokenException class]] && > ((MismatchedTokenException *)e).expecting=='"' ) { > >> msg = @"unterminated string"; > >> } > >> else { > >> msg = [self getErrorMessage:e TokenNames:[self > getTokenNames]]; > >> } > >> [group.errMgr groupSyntaxError:SYNTAX_ERROR srcName:[self > >> getSourceName] e:e msg:msg]; } > >> > >> - (NSString *) getSourceName > >> { > >> return [super getSourceName]; > >> } > >> > >> } > >> > >> --- > >> > >> Alan Condit > >> 1085 Tierra Ct. > >> Woodburn, OR 97071 > >> > >> Email -- [email protected] > >> Home-Office (503) 982-0906 > >> > >> On Feb 2, 2012, at 9:42 AM, Terence Parr wrote: > >> > >>> that error message sounds like it is coming from ANTLR not ST. Are > you sure you are not using an action with % in it within an ANTLR > grammar or something? Hmm.% by itself should be no problem without an > escape in a group file. > >>> > >>> does this happen at load time when you run ANTLR with an ObjC > targeted grammar? > >>> T > >>> On Feb 2, 2012, at 8:58 AM, Alan Condit wrote: > >>> > >>>> In trying to build the error message string in group.g I use: > >>>> msg = [NSString stringWithFormat:@"invalid character '\%c'", > >>>> [input LA:1]]; but I get invalid StringTemplate % shorthand syntax > '%c'. > >>>> > >>>> This is a valid format string. What is going on? > >>>> > >>>> Alan > >>>> --- > >>>> > >>>> Alan Condit > >>>> 1085 Tierra Ct. > >>>> Woodburn, OR 97071 > >>>> > >>>> Email -- [email protected] > >>>> Home-Office (503) 982-0906 > >>>> > >>>> _______________________________________________ > >>>> antlr-dev mailing list > >>>> [email protected] > >>>> http://www.antlr.org/mailman/listinfo/antlr-dev > >>> > >> > > > > _______________________________________________ > antlr-dev mailing list > [email protected] > http://www.antlr.org/mailman/listinfo/antlr-dev _______________________________________________ antlr-dev mailing list [email protected] http://www.antlr.org/mailman/listinfo/antlr-dev
