The BNF parser generator takes a syntax not unlike BNF and generates
a "C" parser for it, a parser that can parse either strings or files.

This is a flexible tool, meant for smaller parsing tasks where
bison+flex are just too big to use.
