Bison is an extremely useful and very fast CompilerCompiler. It takes an EBNF grammar, a small snippet of C code for each rule, and a source of tokens and generates a table based parser. The grammar may not contain right recursive rules. The parser generated is usually paired with a lexer generated by Flex.
You should investigate Bison's use for any non-trivial parsing tasks.
5 pages link to Bison: