The application I am interested in is ANTLR, post-2.0. Jim asked me to post this.
ANTLR is a recursive-descent parser generator - you specify a grammar, typically for a programming language, in a concise form, and ANTLR will generate C++ or Java code for the parser. What sets ANTLR apart from other parser generators supporting C++ as a target is syntactic and semantic predicates. Using these, it is possible to implement grammars that could not otherwise be easily implemented in any other parser generator. (Example: VHDL. It's possible, but very painful, using an LALR(1) generator such as yacc. Trivial in ANTLR.) ANTLR started off as PCCTS, a package originally coded in C++. With version 2.0, Terence Parr did a complete rewrite, and chose Java as the implementation language. Although ANTLR can generate C++ code, you still require a Java 1.0+ implementation in order to run the generator itself. More information: http://www.antlr.org/