C++ operator precedence parser