This one understands c declarations as found in header files.
The output is valid python code; the parse tree, in fact, along with the source and an explanation.
[simon@arrow]$ ./cdecl.py "int foo;"
#int foo;
Declaration(
  Declarator(
    Identifier('foo'),
    DeclarationSpecifiers(BasicType('int'))))
# explanation : foo is int.
#-----------------------------------------------#
[simon@arrow]$ ./cdecl.py "void (*signal(void(*)(int)))(int);"
#void (*signal(void(*)(int)))(int);
Declaration(
  Declarator(
    Identifier('signal'),
    Function(
      ParameterDeclaration(
        AbstractDeclarator(
          Pointer(),
          Function(
            ParameterDeclaration(
              AbstractDeclarator(TypeSpecifiers(BasicType('int'))))),
          TypeSpecifiers(BasicType('void'))))),
    Pointer(),
    Function(
      ParameterDeclaration(
        AbstractDeclarator(TypeSpecifiers(BasicType('int'))))),
    DeclarationSpecifiers(BasicType('void'))))
# explanation : signal is function (pointer to function (int), returning void), returning pointer to function (int), returning void.
#-----------------------------------------------#
He doesn't inspect (non-trivial) expressions, as found in array sizes, enums, initializers etc.
int wont_look_at_this_next_bit[sizeof(struct foo)*3];
There are also some hacks so that (gcc) standard include files can be parsed:
[simon@arrow]$ ./harvest.py /usr/include/stdio.h ...
Maybe someone will extend the grammar to understand all of ANSI-C.
cdecl-0.45.tar.gz - 22nd january
cdecl-0.41.tar.gz - some type manipulations
cdecl-0.38.tar.gz - explanations broken, but now produces c code from parse tree.
cdecl-0.29.tar.gz - explanations work, but has some other bugs that have since been cleaned out.