9 writes to Ch
System.Text.RegularExpressions (9)
System\Text\RegularExpressions\RegexNode.cs (9)
61
Ch
= ch;
191
Ch
= '\0';
199
Ch
= '\0';
1023
Ch
= RegexCharClass.SingletonChar(Str);
1033
Ch
= RegexCharClass.SingletonChar(Str);
1498
node.
Ch
= '\0';
1512
node.
Ch
= node.Str[node.Str.Length - 1];
1982
nextNode.
Ch
= nextNode.Str[nextNode.Str.Length - 1];
3305
Ch
= '\0';
119 references to Ch
System.Text.RegularExpressions (119)
System\Text\RegularExpressions\RegexCompiler.cs (20)
3258
Ldc(node.
Ch
);
3676
Ldc(literal.
Ch
);
3681
Ldc(literal.
Ch
);
3918
(literal.Range.LowInclusive <= node.
Ch
&& node.
Ch
<= literal.Range.HighInclusive))) // for ranges, only allow when the range overlaps with the target, since there's no accelerated way to search for the union
3931
overlap = literal.String[0] == node.
Ch
;
3935
Ldc(node.
Ch
);
3941
Ldc(node.
Ch
);
3948
overlap = literal.SetChars.Contains(node.
Ch
);
3973
Ldc(node.
Ch
);
3981
EmitIndexOfAnyWithSearchValuesOrLiteral($"{node.
Ch
}{literal.SetChars}");
3987
overlap = literal.Range.LowInclusive == node.
Ch
;
3991
Ldc(node.
Ch
);
3997
Ldc(node.
Ch
);
4039
Ldc(node.
Ch
);
4539
EmitMultiCharString(new string(node.
Ch
, iterations), emitLengthChecksIfRequired, rtl);
4730
Ldc(node.
Ch
);
4845
Ldc(node.
Ch
);
4967
Ldc(node.
Ch
);
5494
Ldc(node.
Ch
);
System\Text\RegularExpressions\RegexNode.cs (73)
96
new RegexNode(Kind, Options,
Ch
);
198
Str = new string(
Ch
, N);
1193
prevCharClass.AddChar(prev.
Ch
);
1202
prevCharClass.AddChar(at.
Ch
);
1286
required.
Ch
!= other.
Ch
||
1416
scratchChar[0] = startingNode.
Ch
;
1436
if (startingSpan[0] != startingNode.
Ch
)
1496
Debug.Assert(startingSpan[0] == node.
Ch
);
1559
return IsOneFamily ?
Ch
: Str![0];
1678
return new StartingLiteralData(range: (node.
Ch
, node.
Ch
), negated: false);
1681
return new StartingLiteralData(range: (node.
Ch
, node.
Ch
), negated: true);
1837
prev.Str = prev.
Ch
.ToString();
1841
((at.Kind == RegexNodeKind.One) ? $"{prev.Str}{at.
Ch
}" : prev.Str + at.Str) :
1842
((at.Kind == RegexNodeKind.One) ? $"{at.
Ch
}{prev.Str}" : at.Str + prev.Str);
1905
case RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic or RegexNodeKind.Onelazy or RegexNodeKind.Notoneloop or RegexNodeKind.Notoneloopatomic or RegexNodeKind.Notonelazy when nextNode.Kind == currentNode.Kind && currentNode.
Ch
== nextNode.
Ch
:
1931
case RegexNodeKind.Oneloop or RegexNodeKind.Onelazy when nextNode.Kind == RegexNodeKind.One && currentNode.
Ch
== nextNode.
Ch
:
1932
case RegexNodeKind.Notoneloop or RegexNodeKind.Notonelazy when nextNode.Kind == RegexNodeKind.Notone && currentNode.
Ch
== nextNode.
Ch
:
1950
currentNode.
Ch
== nextNode.Str![0]:
1955
while (matchingCharsInMulti < nextNode.Str.Length && currentNode.
Ch
== nextNode.Str[matchingCharsInMulti])
1999
case RegexNodeKind.One when (nextNode.Kind is RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic or RegexNodeKind.Onelazy) && currentNode.
Ch
== nextNode.
Ch
:
2000
case RegexNodeKind.Notone when (nextNode.Kind is RegexNodeKind.Notoneloop or RegexNodeKind.Notoneloopatomic or RegexNodeKind.Notonelazy) && currentNode.
Ch
== nextNode.
Ch
:
2014
case RegexNodeKind.Notone when nextNode.Kind == currentNode.Kind && currentNode.
Ch
== nextNode.
Ch
:
2413
case RegexNodeKind.One when CharInLoopSet(loopNode, literal.
Ch
): // e.g. \w+a\s : 'a' is in \w, check \s is disjoint
2438
RegexNodeKind.Oneloop => loopNode.
Ch
== ch,
2439
RegexNodeKind.Notoneloop => loopNode.
Ch
!= ch,
2538
case RegexNodeKind.One when node.
Ch
!= subsequent.
Ch
:
2539
case RegexNodeKind.Notone when node.
Ch
== subsequent.
Ch
:
2540
case RegexNodeKind.Set when !RegexCharClass.CharInClass(node.
Ch
, subsequent.Str!):
2541
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M > 0 && node.
Ch
!= subsequent.
Ch
:
2542
case RegexNodeKind.Notonelazy or RegexNodeKind.Notoneloop or RegexNodeKind.Notoneloopatomic when subsequent.M > 0 && node.
Ch
== subsequent.
Ch
:
2543
case RegexNodeKind.Setlazy or RegexNodeKind.Setloop or RegexNodeKind.Setloopatomic when subsequent.M > 0 && !RegexCharClass.CharInClass(node.
Ch
, subsequent.Str!):
2544
case RegexNodeKind.Multi when node.
Ch
!= subsequent.Str![0]:
2546
case RegexNodeKind.EndZ or RegexNodeKind.Eol when node.
Ch
!= '\n':
2547
case RegexNodeKind.Boundary when node.M > 0 && RegexCharClass.IsBoundaryWordChar(node.
Ch
):
2548
case RegexNodeKind.NonBoundary when node.M > 0 && !RegexCharClass.IsBoundaryWordChar(node.
Ch
):
2549
case RegexNodeKind.ECMABoundary when node.M > 0 && RegexCharClass.IsECMAWordChar(node.
Ch
):
2550
case RegexNodeKind.NonECMABoundary when node.M > 0 && !RegexCharClass.IsECMAWordChar(node.
Ch
):
2553
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M == 0 && node.
Ch
!= subsequent.
Ch
:
2554
case RegexNodeKind.Notonelazy or RegexNodeKind.Notoneloop or RegexNodeKind.Notoneloopatomic when subsequent.M == 0 && node.
Ch
== subsequent.
Ch
:
2555
case RegexNodeKind.Setlazy or RegexNodeKind.Setloop or RegexNodeKind.Setloopatomic when subsequent.M == 0 && !RegexCharClass.CharInClass(node.
Ch
, subsequent.Str!):
2568
case RegexNodeKind.One when node.
Ch
== subsequent.
Ch
:
2569
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M > 0 && node.
Ch
== subsequent.
Ch
:
2570
case RegexNodeKind.Multi when node.
Ch
== subsequent.Str![0]:
2574
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M == 0 && node.
Ch
== subsequent.
Ch
:
2587
case RegexNodeKind.One when !RegexCharClass.CharInClass(subsequent.
Ch
, node.Str!):
2589
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M > 0 && !RegexCharClass.CharInClass(subsequent.
Ch
, node.Str!):
2600
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M == 0 && !RegexCharClass.CharInClass(subsequent.
Ch
, node.Str!):
2634
case RegexNodeKind.One when !CharInStartingOrEndingSet(subsequent.
Ch
):
2636
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M > 0 && !CharInStartingOrEndingSet(subsequent.
Ch
):
2647
case RegexNodeKind.Onelazy or RegexNodeKind.Oneloop or RegexNodeKind.Oneloopatomic when subsequent.M == 0 && !CharInStartingOrEndingSet(subsequent.
Ch
):
3138
if (child.
Ch
>= 128 ||
3139
RegexCharClass.ParticipatesInCaseConversion(child.
Ch
))
3144
vsb.Append(child.
Ch
);
3304
Str = new string(
Ch
, max);
3515
sb.Append(" '").Append(RegexCharClass.DescribeChar(
Ch
)).Append('\'');
System\Text\RegularExpressions\RegexNodeKind.cs (8)
16
/// <remarks>The character is specified in <see cref="RegexNode.
Ch
"/>.</remarks>
19
/// <remarks>The character is specified in <see cref="RegexNode.
Ch
"/>.</remarks>
31
/// The character is specified in <see cref="RegexNode.
Ch
"/>, the minimum number of iterations in <see cref="RegexNode.M"/>, and the maximum number of iterations in <see cref="RegexNode.N"/>.
36
/// <remarks>The character is specified in <see cref="RegexNode.
Ch
"/>, the minimum number of iterations in <see cref="RegexNode.M"/>, and the maximum number of iterations in <see cref="RegexNode.N"/>.</remarks>
45
/// <remarks>The character is specified in <see cref="RegexNode.
Ch
"/>, the minimum number of iterations in <see cref="RegexNode.M"/>, and the maximum number of iterations in <see cref="RegexNode.N"/>.</remarks>
49
/// <remarks>The character is specified in <see cref="RegexNode.
Ch
"/>, the minimum number of iterations in <see cref="RegexNode.M"/>, and the maximum number of iterations in <see cref="RegexNode.N"/>.</remarks>
59
/// The character is specified in <see cref="RegexNode.
Ch
"/>, the minimum number of iterations in <see cref="RegexNode.M"/>, and the maximum number of iterations in <see cref="RegexNode.N"/>.
65
/// The character is specified in <see cref="RegexNode.
Ch
"/>, the minimum number of iterations in <see cref="RegexNode.M"/>, and the maximum number of iterations in <see cref="RegexNode.N"/>.
System\Text\RegularExpressions\RegexPrefixAnalyzer.cs (11)
112
case RegexNodeKind.One or RegexNodeKind.Oneloop or RegexNodeKind.Onelazy or RegexNodeKind.Oneloopatomic when !ignoreCase || !RegexCharClass.ParticipatesInCaseConversion(node.
Ch
):
117
sb.Append(node.
Ch
, reps);
423
vsb.Append(node.
Ch
);
435
vsb.Append(node.
Ch
, count);
603
string setString = RegexCharClass.OneToStringClass(node.
Ch
);
611
string setString = RegexCharClass.OneToStringClass(node.
Ch
);
958
cc.AddChar(node.
Ch
);
967
if (node.
Ch
> 0)
970
cc.AddRange((char)0, (char)(node.
Ch
- 1));
972
if (node.
Ch
< char.MaxValue)
975
cc.AddRange((char)(node.
Ch
+ 1), char.MaxValue);
System\Text\RegularExpressions\RegexReplacement.cs (1)
55
vsb.Append(child.
Ch
);
System\Text\RegularExpressions\RegexWriter.cs (3)
383
Emit((RegexOpcode)node.Kind | bits, node.
Ch
);
395
RegexOpcode.Onerep : RegexOpcode.Notonerep) | bits, node.
Ch
, node.M);
399
Emit((RegexOpcode)node.Kind | bits, node.
Ch
, node.N == int.MaxValue ? int.MaxValue : node.N - node.M);
System\Text\RegularExpressions\Symbolic\RegexNodeConverter.cs (3)
58
result.AddLast(_builder.CreateSingleton(_builder._charSetSolver.CreateBDDFromChar(node.
Ch
)));
62
result.AddLast(_builder.CreateSingleton(_builder._solver.Not(_builder._charSetSolver.CreateBDDFromChar(node.
Ch
))));
112
BDD bdd = _builder._charSetSolver.CreateBDDFromChar(node.
Ch
);