views:

769

answers:

6

I'm looking for the C grammar in GCC source code, more specifically for the grammar in the yacc/bison form.

+3  A: 

GCC of version 4.3 did not contain explicitly written C grammar. Parsing and semantical analysis were performed simultaneously, without presenting syntax tree as a separate data structure.

Information source: I read the GCC source code.

Pavel Shved
+7  A: 

You will not find a C grammar yacc/bison file within the current GCC source code. It was done in the past, before the egcs fork stuff. I cannot give you the exact version and location, but i can tell you that it should be in the 2.x release

The current version of GCC has its own C parser

Francisco Garcia
So there is a grammar specification in GCC source code, right? The one to be parsed with GCC own C parser. Do you know in which file i find it?
Hrukai Whoever
@Hurkai you can find it in comments to subroutines that perform parsing :-)
Pavel Shved
+1  A: 

GCC's g++ switched from a yacc (bison) based parser years ago (probably at least 5 years). They started using a recursive decent parser because C++ is difficult in yacc.

After using this parser in for C++ for several years they switched C to parsing using recursive decent as well.

You will have to go back several versions to locate the grammar in bison format, but it is out there. You should try google's code search with

gcc yyparse

to find a version of gcc that has it and then you should be able to find the yacc/bison source file in there. It will be old, though.

nategoose
I think you meant _descent_ , though the parser is _decent_ enough :)
Tim Post
+1  A: 

GCC doesn't use a generated parser; its parser is a hand-written recursive-descent parser.

Jörg W Mittag
+1  A: 

Found the C grammar in Yacc specification in the GCC version 3.3 in the file "c-parse.y"

Hrukai Whoever
A: 

Also ANSI C Yacc grammar

bogdano