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

John D. Mitchell jdmitchell at gmail.com
Fri Apr 10 15:52:51 PDT 2009


Sorry for the delay, I missed this earlier...

On Apr 10, 2009, at 12:00, Andy Tripp <antlr at jazillian.com> wrote:
[...]
> 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.

Yes, the original was based on the C90 standard (and, respectively,  
the GCC version at the time).

We've got a few random fixes floating around but it hasn't been  
updated to C99.  If someone needs a full update to C99, drop me a line.

Thanks,
John

> 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