public SqlRewriteVisitor(SqlExprParams pars) { var exprParamRules = SqlFunctions.ExprParamsRules(pars); //The order of the rule passes is important to the performance and correctness! rules = new List <IEnumerable <RewriteRule> >(); //Primero quita los invokes rules.Add( new[] { DefaultRewrite.InvokeRule(exprParamRules) }); rules.Add(DefaultRewrite.BooleanSimplify); rules.Add( exprParamRules ); rules.Add( SqlFunctions.rawAtom .Concat(SqlFunctions.AtomInvokeParam(pars)) .Concat( new[] { SqlConst.constToSqlRule, DefaultRewrite.StringFormat, SqlFunctions.rawCallRule } ) .Concat(SqlOperators.eqNullRule) .Concat(SqlOperators.nullableRules) .Concat(SqlOperators.unaryRules) .Concat(SqlOperators.binaryRules) .Concat(SqlStar.starRules) .Concat(SqlOperators.compareTo) .Concat(SqlFunctions.stringCalls) .Concat(SqlFunctions.subqueryExprs) .Concat(SqlFunctions.sqlCalls) .Concat(SqlFunctions.AtomRawRule(pars)) .ToList() ) ; }