private static IASTNode MakeIdent(IASTNode source, string text) { var ident = source.DupNode(); ident.Type = HqlSqlWalker.IDENT; ident.Text = text; return ident; }
private IASTNode Expand() { IList <IASTNode> parameters = ParameterDetector.LocateParameters(_tree, new HashSet <string>(_map.Keys)); var nodeMapping = new Dictionary <IASTNode, IEnumerable <IASTNode> >(); foreach (IASTNode param in parameters) { IASTNode paramName = param.GetChild(0); List <string> aliases = _map[paramName.Text]; var astAliases = new List <IASTNode>(); foreach (string alias in aliases) { IASTNode astAlias = param.DupNode(); IASTNode astAliasName = paramName.DupNode(); astAliasName.Text = alias; astAlias.AddChild(astAliasName); astAliases.Add(astAlias); } nodeMapping.Add(param, astAliases); } return(DuplicateTree(_tree, nodeMapping)); }
private static IASTNode MakeIdent(IASTNode source, string text) { var ident = source.DupNode(); ident.Type = HqlSqlWalker.IDENT; ident.Text = text; return(ident); }
private static IASTNode DuplicateTree(IASTNode ast) { var thisNode = ast.DupNode(); foreach (var child in ast) { thisNode.AddChild(DuplicateTree(child)); } return(thisNode); }
private void TransformUnshardedAverageNode(IASTNode average) { var star = average.DupNode(); star.Type = HqlSqlWalker.ROW_STAR; star.Text = "*"; var count = average.DupNode(); count.Type = HqlSqlWalker.COUNT; count.Text = "count"; count.AddChild(star); while (average.Parent.Type != HqlSqlWalker.SELECT) { average = average.Parent; } average.AddSibling(count); }
private static IASTNode DuplicateTree(IASTNode ast, IDictionary<IASTNode, IASTNode> nodeMapping) { IASTNode candidate; if (nodeMapping.TryGetValue(ast, out candidate)) { return candidate; } var dup = ast.DupNode(); foreach (var child in ast) { dup.AddChild(DuplicateTree(child, nodeMapping)); } return dup; }
private static IASTNode DuplicateTree(IASTNode ast, IDictionary <IASTNode, IASTNode> nodeMapping) { IASTNode candidate; if (nodeMapping.TryGetValue(ast, out candidate)) { return(candidate); } var dup = ast.DupNode(); foreach (var child in ast) { dup.AddChild(DuplicateTree(child, nodeMapping)); } return(dup); }
private static IASTNode DuplicateTree(IASTNode ast, IDictionary <IASTNode, IEnumerable <IASTNode> > nodeMapping) { IASTNode thisNode = ast.DupNode(); foreach (IASTNode child in ast) { IEnumerable <IASTNode> candidate; if (nodeMapping.TryGetValue(child, out candidate)) { foreach (IASTNode replacement in candidate) { thisNode.AddChild(replacement); } } else { thisNode.AddChild(DuplicateTree(child, nodeMapping)); } } return(thisNode); }
private static IASTNode DuplicateTree(IASTNode ast, IDictionary<IASTNode, IEnumerable<IASTNode>> nodeMapping) { IASTNode thisNode = ast.DupNode(); foreach (IASTNode child in ast) { IEnumerable<IASTNode> candidate; if (nodeMapping.TryGetValue(child, out candidate)) { foreach (IASTNode replacement in candidate) { thisNode.AddChild(replacement); } } else { thisNode.AddChild(DuplicateTree(child, nodeMapping)); } } return thisNode; }
public UnfinishedNodeCopy(IASTNode node, Action <IASTNode> transformer) { this.Node = node.DupNode(); this.Children = GetChildren(node); this.Transformer = transformer; }