public void Visit(SelectAll all) { all.Parent.Parent.Children.Remove(all.Parent); var tableMatches = Scope.Current.FindAll(); if (tableMatches.Length == 0) //only has a dynamic object and we can't tell the property names till runtime. Compile error. { Errors.Add(new SelectNoColumnsFound(new Semantic.LineInfo(all.Line.Line, all.Line.CharacterPosition))); } foreach (var match in tableMatches) { var tableReferance = new TableMemberReference { Member = match.TableVariable.Variable, RowReference = new TableVariableRowReference { Id = match.TableAlias }, Line = all.Line }; var arg = new SelectArg(); arg.Children.Add(tableReferance); all.Parent.Parent.Children.Add(arg); } }
public void Visit(SelectArg arg) { var selectInfo = new SelectArgsInfo(); 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 (arg.Args.Length > 1) //more than one statement (arg + arg) { selectInfo.ColumnName = null; } else if (arg.Args.Length == 1 && childDomArgs[0].Tag != null) //only add column name { selectInfo.ColumnName = ((SelectArgsInfo)childDomArgs[0].Tag).ColumnName; } foreach (var childDomArg in childDomArgs) { if (childDomArg.Tag != null && ((SelectArgsInfo)childDomArg.Tag).IsPickStatement) { selectInfo.IsPickStatement = true; } } if (arg.As != null) { selectInfo.ColumnName = arg.As.Alias; } _codeStack.Peek().Tag = selectInfo; _codeStack.Peek().Scope = scope; _codeStack.Peek().CodeExpression = expression; }
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(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, CommonTree tree) { Parent(tree).Children.Add(arg); SetLine(arg, tree); VisitChildren(tree); }