enums have to be identifier names, not characters. I suggest naming them PLUS, MINUS, etc. (Also, why would % have higher precedence than ^? The de facto standard is to give % the same precedence as * and /.)