public override string ToString(int level)
        {
            var outstr = "";

            for (var i = 0; i < level; i++)
            {
                outstr += "-";
            }
            switch (operation)
            {
            case Op.Add:
                outstr += "OP.ADD\n";
                break;

            case Op.Sub:
                outstr += "OP.SUB\n";
                break;

            case Op.Mult:
                outstr += "OP.MULT\n";
                break;

            case Op.Divide:
                outstr += "OP.DIVIDE\n";
                break;

            case Op.Eq:
                outstr += "RELOP.EQ\n";
                break;

            case Op.Grt:
                outstr += "RELOP.GRT\n";
                break;

            case Op.Lst:
                outstr += "RELOP.LST\n";
                break;

            case Op.Geq:
                outstr += "RELOP.GEQ\n";
                break;

            case Op.Leq:
                outstr += "RELOP.LEQ\n";
                break;
            }
            outstr += Expression1.ToString(level + 1) + "\n";
            outstr += Expression2.ToString(level + 1);
            return(outstr);
        }
 public override string ToString()
 {
     return('(' + Expression1.ToString() + '|' + Expression2.ToString() + ')');
 }