C++ recognizer combinator lib