The history of C is described by Ritchie in a paper from the HoPL II (History of Programming Languages II) conference which you can read here.
There are three major versions of C.
We have two grammars available
This is the grammar from Appendix A (pages 234--239) of KR2 ('The C Programming Language' second edition, Brian W. Kernighan and Dennis M. Ritchie; Prentice Hall; 1988 ISBN 0-13-110362).
NB: The preprocessor is only approximately described in this grammar. In addition, there are errors in the preprocessor part of the grammar that we have corrected. See the comments in the .raw file for details.
We recommend that the ansi_c_89 grammar (below) is used instead of this one.
ansi_c_kr2.raw raw grammar from
the typeset document
ansi_c_kr2.gex grammar
rules extracted using gramex V1.2
This is the grammar from Annex B of the 1989 ANSI standard. It contains a full description of the preprocessor's syntax. We recommend that this grammar is used in preference to the K&R version (above).
ansi_c_89.raw raw grammar from
the typeset document
ansi_c_89.gex grammar
rules extracted using gramex V1.2
ll1.tbl
lr0.tbl
slr1.tbl
lr1.tbl
lalr1.tbl
generated by gtb V2.6