The description of spirit from it's home page (http://spirit.sourceforge.net) is ``Spirit is an object oriented recursive descent parser generator framework implemented using template meta-programming techniques''.
It allows EBNF grammars to be defined using only C++.
Aside from a changes to the representation to allow for the syntax
of C++, the two grammars in figures 2.13 and 2.14
are identical. Since it is not possible to separate variables using
only whitespace, the symbol
is introduced, and the normal
kleene star representation cannot be allowed so the
is moved to the start of the expression it denotes rather than at
the end.
Spirit does not allow parsing techniques other than top-down, recursive descent to be developed in C++, as the amount of recursion and tail-recursion that occurs with other parsing algorithms is far from easy to implement with an imperative language, especially with the complexities backtracking adds.