Grammar looks much more similar to Spirit, a C++ parser which looks really simple to use. It uses a very simple domain-specific language for writing grammars in C++ code. It's part of the boost libraries. It would be my first choice for a medium-speed parser that could be used quite easily from Ruby with just a few joining bits of C. Parsers in the style of YACC or Bison are much faster again, but the added complexity of defiing grammar probably makes using it a premature optimisation for most tasks.