public override void visit(un_expr node)
 {
     node.visit(this);
     int val = intStack.Pop();
     switch (node.operation_type)
     {
         case Operators.Minus:
             intStack.Push(-val);
             break;
         case Operators.Plus:
             intStack.Push(val);
             break;
         case Operators.BitwiseNOT:
             intStack.Push(~val);
             break;
         case Operators.LogicalNOT:
             intStack.Push(val == 0 ? 1 : 0);
             break;
         default:
             throw new InvalidIntegerExpression();
     }
 }