/// <summary>
 /// Creates an operator with an expression.
 /// </summary>
 /// <param name="expression">The expression.</param>
 /// <returns>The operator.</returns>
 public virtual IOperator Op(Expression expression)
 {
     return(ExpressionProcessor.ParseBoolOperator(expression));
 }
 /// <summary>
 /// Creates a column with an expression.
 /// </summary>
 /// <param name="expression">The column.</param>
 /// <returns>The column.</returns>
 public virtual IColumn Col(Expression expression)
 {
     return(ExpressionProcessor.ParseColumn(expression));
 }
 /// <summary>
 /// Creates a value with an expression.
 /// <para>The value can be a literal value or an <see cref="IQueryFragment"/> that represents a value,
 /// like a column, a function or an arithmetic operator.</para>
 /// </summary>
 /// <param name="expression">The value.</param>
 /// <returns>The value</returns>
 public virtual object Val(Expression expression)
 {
     return(ExpressionProcessor.ParseValue(expression));
 }
 /// <summary>
 /// Creates a column with an expression.
 /// </summary>
 /// <param name="expression">The column.</param>
 /// <returns>The column.</returns>
 public virtual IColumn Col(Expression <Func <object> > expression)
 {
     return(ExpressionProcessor.ParseColumn(expression));
 }
 /// <summary>
 /// Creates a column.
 /// </summary>
 /// <param name="tableName">The table name or his alias.</param>
 /// <param name="expression">The column.</param>
 /// <typeparam name="T">The type of the table.</typeparam>
 /// <returns>The column.</returns>
 public IColumn Col <T>(string tableName, Expression <Func <T, object> > expression)
 {
     return(ExpressionProcessor.ParseColumn <T>(tableName, expression));
 }
 /// <summary>
 /// Creates an alias with an expression.
 /// </summary>
 /// <param name="expression">The alias.</param>
 /// <returns>The alias.</returns>
 public virtual IAlias Alias(Expression expression)
 {
     return(ExpressionProcessor.ParseAlias(expression));
 }
 /// <summary>
 /// Creates an alias with an expression.
 /// </summary>
 /// <param name="expression">The alias.</param>
 /// <returns>The alias.</returns>
 public virtual IAlias Alias(Expression <Func <object> > expression)
 {
     return(ExpressionProcessor.ParseAlias(expression));
 }
 /// <summary>
 /// Creates an alias with an expression.
 /// </summary>
 /// <param name="expression">The alias.</param>
 /// <typeparam name="T">The type of the table.</typeparam>
 /// <returns>The alias.</returns>
 public virtual IAlias <T> Alias <T>(Expression <Func <T> > expression)
 {
     return(ExpressionProcessor.ParseAlias <T>(expression));
 }