146 references to Child
System.Text.RegularExpressions (146)
System\Text\RegularExpressions\RegexCompiler.cs (25)
1461node = node.Child(0); 1773EmitNode(node.Child(i)); 1897if (analysis.MayBacktrack(node.Child(i))) 1946RegexNode child = node.Child(i); 2026RegexNode child = node.Child(i); 2045case RegexNodeKind.Concatenate when child.Child(0) == startingLiteralNode && (startingLiteralNode.Kind is RegexNodeKind.One or RegexNodeKind.Set or RegexNodeKind.Multi): 2053RegexNode originalFirst = child.Child(0); 2055child.Child(0).Kind is RegexNodeKind.Multi ? 2056CreateSlicedMulti(child.Child(0)) : 2308RegexNode yesBranch = node.Child(0); 2309RegexNode? noBranch = node.Child(1) is { Kind: not RegexNodeKind.Empty } childNo ? childNo : null; 2465RegexNode condition = node.Child(0); 2469RegexNode yesBranch = node.Child(1); 2470RegexNode? noBranch = node.Child(2) is { Kind: not RegexNodeKind.Empty } childNo ? childNo : null; 2664RegexNode child = node.Child(0); 2847RegexNode child = node.Child(0); 3079RegexNode child = node.Child(0); 3181EmitNode(node.Child(i), GetSubsequent(i, node, subsequent), emitLengthChecksIfRequired: false); 3188EmitNode(node.Child(i), GetSubsequent(i, node, subsequent)); 3197RegexNode next = node.Child(i); 4104RegexNode child = node.Child(0); 4950Debug.Assert(!analysis.MayBacktrack(node.Child(0)), $"Expected non-backtracking node {node.Kind}"); 4966EmitNode(node.Child(0)); 4988RegexNode child = node.Child(0); 5605RegexNode root = _regexTree!.Root.Child(0);
System\Text\RegularExpressions\RegexFindOptimizations.cs (1)
26RegexFindOptimizations positiveLookaheadOpts = new(positiveLookahead.Child(0), options, isLeadingPartial: true);
System\Text\RegularExpressions\RegexNode.cs (79)
210loopAsChild.AddChild(Child(0)); 255RegexNode child = node.Child(i); 409RegexNode node = rootNode.Child(0); // skip implicit root capture node 416node = node.Child(0); 421node = node.Child(0); 486node = node.Child(0); 497RegexNode existingChild = node.Child(node.ChildCount() - 1); 518node.Child(i).EliminateEndingBacktracking(); 523node = node.Child(0); 546node = node.Child(0); 552if (node.N == 1 || CanBeMadeAtomic(node.Child(0), node.Child(0), iterateNullableSubsequent: false, allowLazy: false)) 559node = node.Child(0); 6161 => Child(0), 635u = u.Child(0); 661RegexNode child = Child(0); 665child = atomic.Child(0); 796(child.Child(0).Kind is RegexNodeKind.Empty || child.Child(1).Kind is RegexNodeKind.Empty); // can be transformed into a ? or ?? 803child = atomic.Child(0); 836RegexNode child = u.Child(0); 904RegexNode child = u.Child(0); 1026return Child(0); 1047if (node.Child(1).Kind is RegexNodeKind.Empty) 1049node = node.Child(0).MakeQuantifier(lazy: false, min: 0, max: 1); 1051else if (node.Child(0).Kind is RegexNodeKind.Empty) 1053node = node.Child(1).MakeQuantifier(lazy: true, min: 0, max: 1); 1205RegexNode required = startingNode.Kind == RegexNodeKind.Concatenate ? startingNode.Child(0) : startingNode; 1226RegexNode other = endingNode.Kind == RegexNodeKind.Concatenate ? endingNode.Child(0) : endingNode; 1427ProcessOneOrMulti(branch.Kind == RegexNodeKind.Concatenate ? branch.Child(0) : branch, startingSpan); 1479return alternation.ChildCount() == 1 ? alternation.Child(0) : alternation; 1492RegexNode branch = Kind == RegexNodeKind.Concatenate ? Child(0) : this; 1529if (Child(i).FindStartingLiteralNode(allowZeroWidth: false) is not RegexNode startingLiteralNode || 1599node = node.Child(0); 1692return Child(0); 1699RegexNode child = Child(i); 2006Child(i).FindAndMakeLoopsAtomic(); 2037node = node.Child(node.ChildCount() - 1); 2086RegexNode loopChild = node.Child(0); 2089loopChild = loopChild.Child(loopChild.ChildCount() - 1); 2102!MayContainBacktracking(node.Child(0))) 2120RegexNode child = node.Child(0); 2130RegexNode child = node.Child(0); 2151ProcessNode(node.Child(b), subsequent); 2171if (Kind is RegexNodeKind.NegativeLookaround && ContainsKind(Child(0), [RegexNodeKind.Backreference, RegexNodeKind.BackreferenceConditional]) is false) 2177ReplaceChild(0, Child(0)); 2182RegexNode node = parent.Child(nodeIndex); 2188parent.ReplaceChild(nodeIndex, node.Child(0)); 2212RegexNode child = Child(0); 2271if (ContainsKind(node.Child(i), kinds) is true) 2318RegexNode condition = Child(0); 2321ReplaceChild(0, condition.Child(0)); 2326condition = Child(0); 2348node = node.Child(node.ChildCount() - 1); 2379subsequent = subsequent.Child(0); 2406if (!CanBeMadeAtomic(node, subsequent.Child(i), iterateNullableSubsequent, allowLazy: false)) 2502RegexNode loopChild = node.Child(0); 2632if (MayContainBacktracking(node.Child(i))) 2731return (int)Math.Min(int.MaxValue - 1, (long)M * Child(0).ComputeMinLength()); 2738int min = Child(0).ComputeMinLength(); 2741min = Math.Min(min, Child(i).ComputeMinLength()); 2748return Math.Min(Child(0).ComputeMinLength(), Child(1).ComputeMinLength()); 2752return Math.Min(Child(1).ComputeMinLength(), Child(2).ComputeMinLength()); 2761sum += Child(i).ComputeMinLength(); 2771return Child(0).ComputeMinLength(); 2839if (Child(0).ComputeMaxLength() is int childMaxLength) 2855if (Child(0).ComputeMaxLength() is not int maxLength) 2862if (Child(i).ComputeMaxLength() is not int next) 2878return Child(i).ComputeMaxLength() is int yes && Child(i + 1).ComputeMaxLength() is int no ? 2890if (Child(i).ComputeMaxLength() is not int length) 2909return Child(0).ComputeMaxLength(); 2971RegexNode child = Child(i); 3074RegexNode child = Child(childIndex); 3082child = Child(exclusiveEnd); 3250if (ExceedsMaxDepthAllowedDepth(node.Child(i), allowedDepth - 1)) 3283curNode = curNode.Child(curChild);
System\Text\RegularExpressions\RegexPrefixAnalyzer.cs (36)
86node = node.Child(0); 217if (!FindPrefixesCore(node.Child(i), results, ignoreCase)) 231if (!FindPrefixesCore(node.Child(0), results, ignoreCase)) 258_ = FindPrefixesCore(node.Child(i), alternateBranchResults, ignoreCase); 368if (!Process(node.Child(i), ref vsb)) 385Process(node.Child(0), ref vsb); 401Process(node.Child(i), ref alternateSb); 445if (!Process(node.Child(0), ref vsb)) 456return Process(node.Child(0), ref vsb); 494node = node.Child(0); 684return TryFindRawFixedSets(node.Child(0), results, ref distance, thorough); 693TryFindRawFixedSets(node.Child(0), results, ref distance, thorough); 701if (!TryFindRawFixedSets(node.Child(i), results, ref distance, thorough)) 721allSameSize &= TryFindRawFixedSets(node.Child(i), localResults, ref localDistance, thorough); 1032return TryFindFirstOrLastCharClass(node.Child(0), findFirst, ref cc); 1039return TryFindFirstOrLastCharClass(node.Child(0), findFirst, ref cc) switch 1057bool? childResult = TryFindFirstOrLastCharClass(node.Child(i), findFirst, ref cc); 1068bool? childResult = TryFindFirstOrLastCharClass(node.Child(i), findFirst, ref cc); 1087bool? childResult = TryFindFirstOrLastCharClass(node.Child(i), findFirst, ref cc); 1105return (TryFindFirstOrLastCharClass(node.Child(branchStart), findFirst, ref cc), TryFindFirstOrLastCharClass(node.Child(branchStart + 1), findFirst, ref cc)) switch 1140node = node.Child(0); 1154RegexNode firstChild = node.Child(0); 1157firstChild = firstChild.Child(0); 1166RegexNode nextChild = node.Child(1); 1174nextChild = node.Child(2); 1227nextChild = nextChild.Child(0); 1300node = node.Child(0); 1306FindLeadingPositiveLookahead(node.Child(0), ref positiveLookahead); 1314if (!FindLeadingPositiveLookahead(node.Child(i), ref positiveLookahead)) 1370node = node.Child(0); 1385RegexNode tmpChild = node.Child(i); 1416if (node.Child(i).Kind is not (RegexNodeKind.Empty or RegexNodeKind.PositiveLookaround or RegexNodeKind.NegativeLookaround)) 1418child = node.Child(i); 1481RegexNodeKind anchor = FindLeadingOrTrailingAnchor(node.Child(0), leading); 1492if (FindLeadingOrTrailingAnchor(node.Child(i), leading) != anchor)
System\Text\RegularExpressions\RegexReplacement.cs (1)
46RegexNode child = concat.Child(i);
System\Text\RegularExpressions\RegexTreeAnalyzer.cs (1)
81RegexNode child = node.Child(i);
System\Text\RegularExpressions\RegexWriter.cs (1)
91curNode = curNode.Child(curChild);
System\Text\RegularExpressions\Symbolic\RegexNodeConverter.cs (2)
99stack.Push((node.Child(i), childResults[i], CreateChildResultArray(node.Child(i).ChildCount())));