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

Reply via email to