public void Visit(SelectAll all) { all.Parent.Parent.Children.Remove(all.Parent); var tableMatches = Scope.Current.FindAll(); foreach(var match in tableMatches) { var tableReferance = new TableMemberReference { Member = match.TableVariable.Variable, RowReference = new TableVariableRowReference { Id = match.TableAlias } }; var arg = new SelectArg(); arg.Children.Add(tableReferance); all.Parent.Parent.Children.Add(arg); } }
public void Visit(SelectArg arg) { var childDomArgs = new List<CodeDomArg>(); foreach (var childArg in arg.Args) { var domArgs = VisitChild(childArg, new CodeDomArg() { Scope = _codeStack.Peek().Scope }); childDomArgs.Add(domArgs); } var expression = childDomArgs[0].CodeExpression; var scope = childDomArgs[0].Scope; for (int x = 1; x < childDomArgs.Count; x++) { expression = new CodeMethodInvokeExpression(new CodeTypeReferenceExpression(typeof(Helper)), "NullConcat", expression, childDomArgs[x].CodeExpression); scope = childDomArgs[x].Scope; } if (childDomArgs[0].ParentStatements.Count == 0 || arg.Args.Length > 1) //if no statements or more than one statement (arg + arg) { _codeStack.Peek() .ParentStatements.Add(new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("result"), "AddColumn", new CodePrimitiveExpression("(No column name)"))); } else if(arg.Args.Length == 1) //only add column name _codeStack.Peek().ParentStatements.AddRange(childDomArgs[0].ParentStatements); foreach(var childDomArg in childDomArgs) { if (childDomArg.Tag != null) _codeStack.Peek().Tag = childDomArg.Tag; } _codeStack.Peek().Scope = scope; _codeStack.Peek().CodeExpression = expression; }
public void Visit(SelectArg arg, CommonTree tree) { Parent(tree).Children.Add(arg); VisitChildren(tree); }