C grammar in GCC source code
Asked Answered
S

7

15

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

Spumescent answered 27/4, 2010 at 12:24 Comment(5)
That's more of a statement than a question? (I decided to reciprocate by phrasing my statement as a question. fun!)Pasturage
Did you try googling? I searched for "c yacc grammar" and came up with lysator.liu.se/c/ANSI-C-grammar-y.html among many other hits.Existentialism
@Neil, perhaps it's not what Hurkai meant, but GCC has some C extensions, and generic C grammar wouldn't precisely fit it.Csch
I've looked into C-standard grammar already, but its old compared to the grammar used in gcc, that's why I'm looking for it.Spumescent
It's just imparsable ...Cephalo
S
14

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

Spumescent answered 29/4, 2010 at 18:38 Comment(0)
B
11

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

Benefield answered 27/4, 2010 at 12:39 Comment(2)
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?Spumescent
@Hurkai you can find it in comments to subroutines that perform parsing :-)Csch
H
10

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

Update: Google Code Search Shutdown in 2012

http://en.wikipedia.org/wiki/Google_Code_Search

Old: http://yaxx.googlecode.com/svn/branches/yaxx-proc/gcc-3.4.0/gcc/c-parse.y

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.

Horan answered 27/4, 2010 at 14:20 Comment(1)
I think you meant descent , though the parser is decent enough :)Declassify
C
9

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.

Csch answered 27/4, 2010 at 12:38 Comment(0)
C
6

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

Canaigre answered 27/4, 2010 at 14:34 Comment(2)
it's true from version 4.6+Launcelot
@Jack: Interesting! Can you point me to any documentation? I know they switched from a generated parser to the new hand-written one for performance and (more importantly) maintainability reasons, probably somewhere around the 3.4–4.2 timeframe (I don't precisely remember). What were the reasons for switching back and which parser generator do they use?Devilmaycare
R
5

Also ANSI C Yacc grammar

Royo answered 5/10, 2010 at 20:3 Comment(0)
L
0

The C grammar can be found in comments in c-parser.c file in GCC sources. It is not a yacc/bison though as it has already been said.

Lammas answered 27/3, 2015 at 2:46 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.