protected BooleanExpression(Expression lhs, Expression rhs, string op)
        {
            Contract.Requires(lhs != null);
            Contract.Requires(rhs != null);
            Contract.Requires(!string.IsNullOrEmpty(op));

            m_lhs = lhs;
            m_rhs = rhs;
            m_op = op;
        }
 public OrExpression(Expression lhs, Expression rhs)
     : base(lhs, rhs, "||")
 {
 }
 public ExclusiveOrExpression(Expression lhs, Expression rhs)
     : base(lhs, rhs, "^")
 {
 }
 public AndExpression(Expression lhs, Expression rhs)
     : base(lhs, rhs, "&&")
 {
 }
 public RelationalExpression(Expression lhs, Expression rhs, string op)
     : base(lhs, rhs, op.Trim())
 {
 }
        public NotExpression(Expression expr)
        {
            Contract.Requires(expr != null);

            m_expr = expr;
        }