예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }