cparser is a recursive descent C99 parser written in C99. It contains a lexer, parser, constructs an AST, and does semantic analysis. It is currently used as a frontend to the libFirm intermediate representation, but can be used independently. It supports lots of GNU extensions: enough to parse Linux/BSD system headers and compile typical C projects with it. It is able to bootstrap itself, and compiles and runs the spec CINT2000 without problems.