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 -- acon...@ipns.com 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 -- acon...@ipns.com >> 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 -- acon...@ipns.com >>>> Home-Office (503) 982-0906 >>>> >>>> _______________________________________________ >>>> antlr-dev mailing list >>>> antlr-dev@antlr.org >>>> http://www.antlr.org/mailman/listinfo/antlr-dev >>> >> > _______________________________________________ antlr-dev mailing list antlr-dev@antlr.org http://www.antlr.org/mailman/listinfo/antlr-dev