Here's a recursive descent parser done using template meta-programming. You write constructs using something very close to BNF directly in the C++ code.
http://isis-tech.n3.net/