-std::ostream & operator<< (std::ostream & out, const OperatorExpr & o) {\r
- out << *o.lexpr << " ";\r
-\r
- switch (o.type) {\r
- case OperatorType::Plus: out << "+"; break;\r
- case OperatorType::Minus: out << "-"; break;\r
- case OperatorType::Multiply: out << "*"; break;\r
- case OperatorType::Divide: out << "/"; break;\r
- case OperatorType::Equals: out << "=="; break;\r
- case OperatorType::NotEquals: out << "!="; break;\r
- case OperatorType::LessThan: out << "<"; break;\r
- case OperatorType::GreaterThan: out << ">"; break;\r
+std::ostream & operator<< (std::ostream & out, const UnaryOperatorExpr & o) {\r
+ if (o.type == UnaryOperatorType::IncrementPost || o.type == UnaryOperatorType::DecrementPost) {\r
+ out << UnaryOperatorTypeStrings[(int)o.type] << *o.expr;\r
+ }\r
+ else {\r
+ out << *o.expr << UnaryOperatorTypeStrings[(int)o.type];\r