144 references to Child
System.Text.RegularExpressions (144)
System\Text\RegularExpressions\RegexCompiler.cs (25)
1455node = node.Child(0); 1767EmitNode(node.Child(i)); 1891if (analysis.MayBacktrack(node.Child(i))) 1940RegexNode child = node.Child(i); 2020RegexNode child = node.Child(i); 2039case RegexNodeKind.Concatenate when child.Child(0) == startingLiteralNode && (startingLiteralNode.Kind is RegexNodeKind.One or RegexNodeKind.Set or RegexNodeKind.Multi): 2047RegexNode originalFirst = child.Child(0); 2049child.Child(0).Kind is RegexNodeKind.Multi ? 2050CreateSlicedMulti(child.Child(0)) : 2287RegexNode yesBranch = node.Child(0); 2288RegexNode? noBranch = node.Child(1) is { Kind: not RegexNodeKind.Empty } childNo ? childNo : null; 2444RegexNode condition = node.Child(0); 2448RegexNode yesBranch = node.Child(1); 2449RegexNode? noBranch = node.Child(2) is { Kind: not RegexNodeKind.Empty } childNo ? childNo : null; 2643RegexNode child = node.Child(0); 2826RegexNode child = node.Child(0); 3058RegexNode child = node.Child(0); 3160EmitNode(node.Child(i), GetSubsequent(i, node, subsequent), emitLengthChecksIfRequired: false); 3167EmitNode(node.Child(i), GetSubsequent(i, node, subsequent)); 3176RegexNode next = node.Child(i); 4083RegexNode child = node.Child(0); 4929Debug.Assert(!analysis.MayBacktrack(node.Child(0)), $"Expected non-backtracking node {node.Kind}"); 4945EmitNode(node.Child(0)); 4967RegexNode child = node.Child(0); 5584RegexNode 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 (77)
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); 1213RegexNode required = children[startingIndex].Child(0); 1233RegexNode other = children[endingIndex].Child(0); 1426ProcessOneOrMulti(branch.Kind == RegexNodeKind.Concatenate ? branch.Child(0) : branch, startingSpan); 1478return alternation.ChildCount() == 1 ? alternation.Child(0) : alternation; 1491RegexNode branch = Kind == RegexNodeKind.Concatenate ? Child(0) : this; 1528if (Child(i).FindStartingLiteralNode(allowZeroWidth: false) is not RegexNode startingLiteralNode || 1598node = node.Child(0); 1691return Child(0); 1698RegexNode child = Child(i); 2005Child(i).FindAndMakeLoopsAtomic(); 2036node = node.Child(node.ChildCount() - 1); 2085RegexNode loopChild = node.Child(0); 2088loopChild = loopChild.Child(loopChild.ChildCount() - 1); 2113RegexNode child = node.Child(0); 2123RegexNode child = node.Child(0); 2144ProcessNode(node.Child(b), subsequent); 2164if (Kind is RegexNodeKind.NegativeLookaround && ContainsKind(Child(0), [RegexNodeKind.Backreference, RegexNodeKind.BackreferenceConditional]) is false) 2170ReplaceChild(0, Child(0)); 2175RegexNode node = parent.Child(nodeIndex); 2181parent.ReplaceChild(nodeIndex, node.Child(0)); 2205RegexNode child = Child(0); 2264if (ContainsKind(node.Child(i), kinds) is true) 2311RegexNode condition = Child(0); 2314ReplaceChild(0, condition.Child(0)); 2319condition = Child(0); 2341node = node.Child(node.ChildCount() - 1); 2372subsequent = subsequent.Child(0); 2399if (!CanBeMadeAtomic(node, subsequent.Child(i), iterateNullableSubsequent, allowLazy: false)) 2495RegexNode loopChild = node.Child(0); 2678return (int)Math.Min(int.MaxValue - 1, (long)M * Child(0).ComputeMinLength()); 2685int min = Child(0).ComputeMinLength(); 2688min = Math.Min(min, Child(i).ComputeMinLength()); 2695return Math.Min(Child(0).ComputeMinLength(), Child(1).ComputeMinLength()); 2699return Math.Min(Child(1).ComputeMinLength(), Child(2).ComputeMinLength()); 2708sum += Child(i).ComputeMinLength(); 2718return Child(0).ComputeMinLength(); 2786if (Child(0).ComputeMaxLength() is int childMaxLength) 2802if (Child(0).ComputeMaxLength() is not int maxLength) 2809if (Child(i).ComputeMaxLength() is not int next) 2825return Child(i).ComputeMaxLength() is int yes && Child(i + 1).ComputeMaxLength() is int no ? 2837if (Child(i).ComputeMaxLength() is not int length) 2856return Child(0).ComputeMaxLength(); 2918RegexNode child = Child(i); 3021RegexNode child = Child(childIndex); 3029child = Child(exclusiveEnd); 3197if (ExceedsMaxDepthAllowedDepth(node.Child(i), allowedDepth - 1)) 3230curNode = 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)
85RegexNode 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())));