public static void RegExCollectAddSubNodes(RowRegexExprNode regexNode, ITree node, IDictionary <ITree, RowRegexExprNode> astRegExNodeMap) { if (regexNode == null) { throw ASTWalkException.From("Invalid null expression node for '" + ASTUtil.PrintNode(node) + "'"); } RegExAction action = (exprNode, astRegExNodeMapX, nodeX) => { astRegExNodeMapX.Remove(nodeX); regexNode.AddChildNode(exprNode); }; for (var i = 0; i < node.ChildCount; i++) { var childNode = node.GetChild(i); RegExApplyActionRecursive(childNode, astRegExNodeMap, action); } }
public static void RegExApplyActionRecursive( ITree node, IDictionary<ITree, RowRecogExprNode> astRegExNodeMap, RegExAction action) { RowRecogExprNode expr = astRegExNodeMap.Get(node); if (expr != null) { action.Invoke(expr, astRegExNodeMap, node); return; } for (int i = 0; i < node.ChildCount; i++) { RegExApplyActionRecursive(node.GetChild(i), astRegExNodeMap, action); } }