C++ parser generator