public virtual void Visit(ArithmeticExpression node)
 {
 }
 public virtual string Format(ArithmeticExpression aexp)
 {
     if (aexp is ArithmeticBinOpExpression) {
         return Format((ArithmeticBinOpExpression)aexp);
     } else if (aexp is UnaryMinus) {
         return Format((UnaryMinus)aexp);
     } else if (aexp is Number) {
         return Format((Number)aexp);
     } else if (aexp is Variable) {
         return Format((Variable)aexp);
     }
     return "ERROR: UNKNOWN ARITHMETICEXPRESSION";
 }