[antlr-interest] bug in GnuCParser.g - missing declarations and statements

Andy Tripp antlr at jazillian.com
Fri Apr 10 09:58:46 PDT 2009


Sam,
Good point.
Looks like StdCParser.g was written before the C99 standard:
   // John D. Mitchell (john at non.net), Jul 12, 1997
...and the GnuCParser.g written not much later:
   // Monty Zukowski (jamz at cdsnet.net) April 28, 1998

So they must be based on C89 or C90.

Andy

Sam Barnett-Cormack wrote:
> Andy Tripp wrote:
>> FWIW, I found and fixed a problem in the "cgram" grammar
>> GnuCParser.g and StdCParser.g.  They didn't recognize declarations 
>> coming after statements in a compoundStatement, like this:
>>
>> f() {
>>   printf("hello");
>>   int i;
>> }
>>
>> This is allowed in the C99 standard, section 6.8.2, and
>> by the GCC manual section 5.26 "Mixed Declarations and Code".
> 
> And explicitly not allowed by earlier "standard" (eg ISO, K&R) C 
> standards... do we document what standard StdCPardser is meant to target?
> 



More information about the antlr-interest mailing list