297 references to SymbolicRegexNodeKind
System.Text.RegularExpressions (297)
System\Text\RegularExpressions\Symbolic\MatchingState.cs (1)
147
if (Node.Kind !=
SymbolicRegexNodeKind
.DisableBacktrackingSimulation)
System\Text\RegularExpressions\Symbolic\SymbolicRegexBuilder.cs (29)
31
internal SymbolicRegexNode<TSet> BeginningAnchor => _beginningAnchor ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.BeginningAnchor);
34
internal SymbolicRegexNode<TSet> EndAnchor => _endAnchor ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.EndAnchor);
37
internal SymbolicRegexNode<TSet> EndAnchorZ => _endAnchorZ ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.EndAnchorZ);
40
internal SymbolicRegexNode<TSet> EndAnchorZReverse => _endAnchorZReverse ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.EndAnchorZReverse);
43
internal SymbolicRegexNode<TSet> BolAnchor => _bolAnchor ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.BOLAnchor);
46
internal SymbolicRegexNode<TSet> EolAnchor => _eolAnchor ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.EOLAnchor);
49
internal SymbolicRegexNode<TSet> BoundaryAnchor => _wbAnchor ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.BoundaryAnchor);
52
internal SymbolicRegexNode<TSet> NonBoundaryAnchor => _nwbAnchor ??= SymbolicRegexNode<TSet>.CreateAnchor(this,
SymbolicRegexNodeKind
.NonBoundaryAnchor);
72
SymbolicRegexNodeKind
kind, SymbolicRegexNode<TSet>? left, SymbolicRegexNode<TSet>? right,
76
public readonly
SymbolicRegexNodeKind
Kind = kind;
232
if (!isLazy && lower == 0 && upper == int.MaxValue && node._kind ==
SymbolicRegexNodeKind
.Singleton)
242
if (node.Kind ==
SymbolicRegexNodeKind
.Loop && node._lower == 0 && node._upper == 1 && lower == 0 && upper == 1)
293
case
SymbolicRegexNodeKind
.BeginningAnchor:
296
case
SymbolicRegexNodeKind
.EndAnchor:
299
case
SymbolicRegexNodeKind
.EndAnchorZ:
302
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
305
case
SymbolicRegexNodeKind
.BOLAnchor:
308
case
SymbolicRegexNodeKind
.EOLAnchor:
311
case
SymbolicRegexNodeKind
.BoundaryAnchor:
314
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
317
case
SymbolicRegexNodeKind
.FixedLengthMarker:
320
case
SymbolicRegexNodeKind
.Epsilon:
323
case
SymbolicRegexNodeKind
.Singleton:
327
case
SymbolicRegexNodeKind
.Loop:
331
case
SymbolicRegexNodeKind
.Alternate:
338
case
SymbolicRegexNodeKind
.CaptureStart:
341
case
SymbolicRegexNodeKind
.CaptureEnd:
344
case
SymbolicRegexNodeKind
.Concat:
355
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Automata.cs (9)
196
if (node._kind is not
SymbolicRegexNodeKind
.Concat)
198
if (node._kind is
SymbolicRegexNodeKind
.CaptureStart)
208
if (left._kind is
SymbolicRegexNodeKind
.CaptureEnd or
SymbolicRegexNodeKind
.BoundaryAnchor or
SymbolicRegexNodeKind
.Singleton)
211
if (left._kind is
SymbolicRegexNodeKind
.Singleton)
216
else if (left._kind is
SymbolicRegexNodeKind
.Loop)
218
if (left._lower <= 0 || left._left!.Kind is not
SymbolicRegexNodeKind
.Singleton)
296
Debug.Assert(node.Kind !=
SymbolicRegexNodeKind
.Alternate);
System\Text\RegularExpressions\Symbolic\SymbolicRegexNode.cs (258)
35
internal readonly
SymbolicRegexNodeKind
_kind;
62
private SymbolicRegexNode(SymbolicRegexBuilder<TSet> builder,
SymbolicRegexNodeKind
kind, SymbolicRegexNode<TSet>? left, SymbolicRegexNode<TSet>? right, int lower, int upper, TSet set, SymbolicRegexInfo info)
78
private static SymbolicRegexNode<TSet> Create(SymbolicRegexBuilder<TSet> builder,
SymbolicRegexNodeKind
kind, SymbolicRegexNode<TSet>? left, SymbolicRegexNode<TSet>? right, int lower, int upper, TSet? set, SymbolicRegexInfo info)
80
Debug.Assert(kind !=
SymbolicRegexNodeKind
.Singleton || set is not null);
81
TSet setOrStartSet = kind ==
SymbolicRegexNodeKind
.Singleton ? set! : ComputeStartSet(builder, kind, left, right);
123
case
SymbolicRegexNodeKind
.Loop:
127
case
SymbolicRegexNodeKind
.Concat:
138
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
139
case
SymbolicRegexNodeKind
.Effect:
140
case
SymbolicRegexNodeKind
.Alternate:
153
Debug.Assert(node._kind is
SymbolicRegexNodeKind
.BeginningAnchor or
154
SymbolicRegexNodeKind
.EndAnchor or
155
SymbolicRegexNodeKind
.BOLAnchor or
156
SymbolicRegexNodeKind
.EOLAnchor or
157
SymbolicRegexNodeKind
.BoundaryAnchor or
158
SymbolicRegexNodeKind
.NonBoundaryAnchor or
159
SymbolicRegexNodeKind
.EndAnchorZ or
160
SymbolicRegexNodeKind
.EndAnchorZReverse);
185
public List<SymbolicRegexNode<TSet>> ToList(List<SymbolicRegexNode<TSet>>? list = null,
SymbolicRegexNodeKind
listKind =
SymbolicRegexNodeKind
.Concat)
187
Debug.Assert(listKind is
SymbolicRegexNodeKind
.Concat or
SymbolicRegexNodeKind
.Alternate);
192
static void AppendToList(SymbolicRegexNode<TSet> concat, List<SymbolicRegexNode<TSet>> list,
SymbolicRegexNodeKind
listKind)
257
case
SymbolicRegexNodeKind
.Loop:
262
case
SymbolicRegexNodeKind
.Concat:
267
case
SymbolicRegexNodeKind
.Alternate:
272
case
SymbolicRegexNodeKind
.BeginningAnchor:
276
case
SymbolicRegexNodeKind
.EndAnchor:
280
case
SymbolicRegexNodeKind
.BOLAnchor:
286
case
SymbolicRegexNodeKind
.EOLAnchor:
292
case
SymbolicRegexNodeKind
.BoundaryAnchor:
297
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
302
case
SymbolicRegexNodeKind
.EndAnchorZ:
308
case
SymbolicRegexNodeKind
.CaptureStart:
309
case
SymbolicRegexNodeKind
.CaptureEnd:
313
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
314
case
SymbolicRegexNodeKind
.Effect:
323
Debug.Assert(_kind ==
SymbolicRegexNodeKind
.EndAnchorZReverse);
340
if (_left._kind ==
SymbolicRegexNodeKind
.Singleton)
353
if (_kind ==
SymbolicRegexNodeKind
.Singleton)
366
public bool IsEpsilon => _kind ==
SymbolicRegexNodeKind
.Epsilon;
369
internal
SymbolicRegexNodeKind
Kind => _kind;
379
Create(builder,
SymbolicRegexNodeKind
.Singleton, null, null, -1, -1, builder._solver.Empty, default);
382
Create(builder,
SymbolicRegexNodeKind
.Singleton, null, null, -1, -1, builder._solver.Full, default);
385
Create(builder,
SymbolicRegexNodeKind
.FixedLengthMarker, null, null, length, -1, default, SymbolicRegexInfo.Epsilon());
388
Create(builder,
SymbolicRegexNodeKind
.Epsilon, null, null, -1, -1, default, SymbolicRegexInfo.Epsilon());
390
internal static SymbolicRegexNode<TSet> CreateAnchor(SymbolicRegexBuilder<TSet> builder,
SymbolicRegexNodeKind
kind)
393
SymbolicRegexNodeKind
.BoundaryAnchor or
SymbolicRegexNodeKind
.NonBoundaryAnchor or
394
SymbolicRegexNodeKind
.BeginningAnchor or
SymbolicRegexNodeKind
.EndAnchor or
395
SymbolicRegexNodeKind
.EndAnchorZ or
SymbolicRegexNodeKind
.EndAnchorZReverse or
396
SymbolicRegexNodeKind
.EOLAnchor or
SymbolicRegexNodeKind
.BOLAnchor);
400
isLineAnchor: kind is
SymbolicRegexNodeKind
.EndAnchorZ or
SymbolicRegexNodeKind
.EndAnchorZReverse or
SymbolicRegexNodeKind
.EOLAnchor or
SymbolicRegexNodeKind
.BOLAnchor,
401
isEndZAnchor: kind is
SymbolicRegexNodeKind
.EndAnchorZ));
407
Create(builder,
SymbolicRegexNodeKind
.Singleton, null, null, -1, -1, set, default);
414
if (lower == 0 && upper == 1 && body._kind ==
SymbolicRegexNodeKind
.Loop && body._lower == 0 && body._upper == 1)
419
return Create(builder,
SymbolicRegexNodeKind
.Loop, body, null, lower, upper, default, SymbolicRegexInfo.Loop(body._info, lower, isLazy));
430
if (node._kind ==
SymbolicRegexNodeKind
.Effect)
436
return Create(builder,
SymbolicRegexNodeKind
.Effect, node, effectNode, -1, -1, default, SymbolicRegexInfo.Effect(node._info));
440
Create(builder,
SymbolicRegexNodeKind
.CaptureStart, null, null, captureNum, -1, default, SymbolicRegexInfo.Epsilon());
443
Create(builder,
SymbolicRegexNodeKind
.CaptureEnd, null, null, captureNum, -1, default, SymbolicRegexInfo.Epsilon());
446
Create(builder,
SymbolicRegexNodeKind
.DisableBacktrackingSimulation, child, null, -1, -1, default, child._info);
462
Debug.Assert(right._kind is not
SymbolicRegexNodeKind
.Effect);
463
if (left._kind ==
SymbolicRegexNodeKind
.Effect)
469
return Create(builder,
SymbolicRegexNodeKind
.Concat, left, right, -1, -1, default, SymbolicRegexInfo.Concat(left._info, right._info));
497
SymbolicRegexNode<TSet> head = right._kind ==
SymbolicRegexNodeKind
.Alternate ? right._left! : right;
498
SymbolicRegexNode<TSet> tail = right._kind ==
SymbolicRegexNodeKind
.Alternate ? right._right! : builder._nothing;
514
if (!deduplicated && left._kind !=
SymbolicRegexNodeKind
.Alternate)
519
while (current._kind ==
SymbolicRegexNodeKind
.Alternate)
523
Debug.Assert(current._left._kind !=
SymbolicRegexNodeKind
.Alternate);
537
if (!deduplicated || left._kind ==
SymbolicRegexNodeKind
.Alternate)
540
List<SymbolicRegexNode<TSet>> elems = left.ToList(listKind:
SymbolicRegexNodeKind
.Alternate);
542
right.ToList(elems, listKind:
SymbolicRegexNodeKind
.Alternate);
583
Debug.Assert(left._kind !=
SymbolicRegexNodeKind
.Alternate);
586
return Create(builder,
SymbolicRegexNodeKind
.Alternate, left, right, -1, -1, default, SymbolicRegexInfo.Alternate(left._info, right._info));
651
if (left._kind ==
SymbolicRegexNodeKind
.Effect)
659
if (right._kind ==
SymbolicRegexNodeKind
.Effect)
667
if (left._kind ==
SymbolicRegexNodeKind
.Concat && right._kind ==
SymbolicRegexNodeKind
.Concat)
671
if (left._left.IsNullable && rl._kind ==
SymbolicRegexNodeKind
.Loop && rl._lower == 0 && rl._upper == 1 && rl.IsLazy)
681
if (left._kind ==
SymbolicRegexNodeKind
.Concat && right._kind ==
SymbolicRegexNodeKind
.Concat)
685
if (ll._kind ==
SymbolicRegexNodeKind
.Loop && ll._lower == 0 && ll._upper == 1 && ll.IsLazy)
694
if (left._kind ==
SymbolicRegexNodeKind
.Concat)
713
while (prefix._kind ==
SymbolicRegexNodeKind
.Concat)
716
if (node._kind !=
SymbolicRegexNodeKind
.Concat)
728
if (node._kind !=
SymbolicRegexNodeKind
.Concat)
750
while (current._kind ==
SymbolicRegexNodeKind
.Effect)
789
if (left._kind ==
SymbolicRegexNodeKind
.Effect)
812
if (right._kind ==
SymbolicRegexNodeKind
.Effect)
821
if (right._kind ==
SymbolicRegexNodeKind
.Concat)
842
while (suffix._kind ==
SymbolicRegexNodeKind
.Concat)
892
case
SymbolicRegexNodeKind
.FixedLengthMarker:
893
case
SymbolicRegexNodeKind
.Epsilon:
894
case
SymbolicRegexNodeKind
.BOLAnchor:
895
case
SymbolicRegexNodeKind
.EOLAnchor:
896
case
SymbolicRegexNodeKind
.EndAnchor:
897
case
SymbolicRegexNodeKind
.BeginningAnchor:
898
case
SymbolicRegexNodeKind
.EndAnchorZ:
899
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
900
case
SymbolicRegexNodeKind
.BoundaryAnchor:
901
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
902
case
SymbolicRegexNodeKind
.CaptureStart:
903
case
SymbolicRegexNodeKind
.CaptureEnd:
906
case
SymbolicRegexNodeKind
.Singleton:
909
case
SymbolicRegexNodeKind
.Loop:
927
case
SymbolicRegexNodeKind
.Concat:
946
case
SymbolicRegexNodeKind
.Alternate:
960
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
961
case
SymbolicRegexNodeKind
.Effect:
970
/// Insert <see cref="
SymbolicRegexNodeKind
.FixedLengthMarker"/> nodes to mark paths in the regex that correspond
989
case
SymbolicRegexNodeKind
.Alternate:
996
case
SymbolicRegexNodeKind
.Concat:
1012
case
SymbolicRegexNodeKind
.FixedLengthMarker:
1066
if (_kind ==
SymbolicRegexNodeKind
.DisableBacktrackingSimulation)
1102
case
SymbolicRegexNodeKind
.Alternate:
1113
case
SymbolicRegexNodeKind
.Concat:
1119
SymbolicRegexNodeKind
.Concat => CreateConcat(builder, _left._left!, CreateConcat(builder, _left._right!, _right))
1126
SymbolicRegexNodeKind
.Alternate => (_left._left!.IsNullableFor(context) ?
1131
SymbolicRegexNodeKind
.Loop => PruneLoop(builder, context, _left, _right),
1138
case
SymbolicRegexNodeKind
.Loop:
1143
case
SymbolicRegexNodeKind
.Effect:
1160
Debug.Assert(loop.Kind ==
SymbolicRegexNodeKind
.Loop && loop._left is not null);
1214
Debug.Assert(_kind ==
SymbolicRegexNodeKind
.Loop && _left is not null);
1236
/// -Some nodes, namely <see cref="
SymbolicRegexNodeKind
.CaptureStart"/> and <see cref="
SymbolicRegexNodeKind
.CaptureEnd"/>,
1237
/// will produce <see cref="
SymbolicRegexNodeKind
.Effect"/> nodes, which indicate effects to be applied on
1265
case
SymbolicRegexNodeKind
.Singleton:
1283
case
SymbolicRegexNodeKind
.Concat:
1315
case
SymbolicRegexNodeKind
.Loop:
1336
case
SymbolicRegexNodeKind
.Alternate:
1343
case
SymbolicRegexNodeKind
.Effect:
1378
case
SymbolicRegexNodeKind
.Effect:
1383
case
SymbolicRegexNodeKind
.Concat:
1388
case
SymbolicRegexNodeKind
.Alternate:
1392
List<SymbolicRegexNode<TSet>> elems = ToList(listKind:
SymbolicRegexNodeKind
.Alternate);
1397
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
1401
case
SymbolicRegexNodeKind
.Loop:
1412
/// This function maps <see cref="
SymbolicRegexNodeKind
.Effect"/> nodes present in the tree and maps them into
1450
case
SymbolicRegexNodeKind
.Effect:
1461
case
SymbolicRegexNodeKind
.Concat:
1477
case
SymbolicRegexNodeKind
.Alternate:
1483
case
SymbolicRegexNodeKind
.Loop when _lower == 0 && _upper == 1:
1502
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
1541
case
SymbolicRegexNodeKind
.Concat:
1548
case
SymbolicRegexNodeKind
.Loop:
1558
case
SymbolicRegexNodeKind
.Alternate:
1573
case
SymbolicRegexNodeKind
.CaptureStart:
1577
case
SymbolicRegexNodeKind
.CaptureEnd:
1581
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
1607
case
SymbolicRegexNodeKind
.EndAnchor:
1611
case
SymbolicRegexNodeKind
.BeginningAnchor:
1615
case
SymbolicRegexNodeKind
.BOLAnchor:
1619
case
SymbolicRegexNodeKind
.EOLAnchor:
1623
case
SymbolicRegexNodeKind
.Epsilon:
1627
case
SymbolicRegexNodeKind
.FixedLengthMarker:
1632
case
SymbolicRegexNodeKind
.BoundaryAnchor:
1636
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
1640
case
SymbolicRegexNodeKind
.EndAnchorZ:
1644
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
1648
case
SymbolicRegexNodeKind
.Alternate:
1657
case
SymbolicRegexNodeKind
.Concat:
1660
if (_left.Kind ==
SymbolicRegexNodeKind
.Concat)
1663
if (_left.Kind ==
SymbolicRegexNodeKind
.Concat)
1668
case
SymbolicRegexNodeKind
.Singleton:
1673
case
SymbolicRegexNodeKind
.Loop:
1732
case
SymbolicRegexNodeKind
.Effect:
1744
case
SymbolicRegexNodeKind
.CaptureStart:
1751
case
SymbolicRegexNodeKind
.CaptureEnd:
1758
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
1772
case
SymbolicRegexNodeKind
.Singleton:
1838
case
SymbolicRegexNodeKind
.BOLAnchor:
1839
case
SymbolicRegexNodeKind
.EOLAnchor:
1840
case
SymbolicRegexNodeKind
.EndAnchorZ:
1841
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
1845
case
SymbolicRegexNodeKind
.BeginningAnchor:
1846
case
SymbolicRegexNodeKind
.EndAnchor:
1847
case
SymbolicRegexNodeKind
.Epsilon:
1848
case
SymbolicRegexNodeKind
.FixedLengthMarker:
1849
case
SymbolicRegexNodeKind
.CaptureStart:
1850
case
SymbolicRegexNodeKind
.CaptureEnd:
1853
case
SymbolicRegexNodeKind
.Singleton:
1858
case
SymbolicRegexNodeKind
.Loop:
1863
case
SymbolicRegexNodeKind
.Alternate:
1869
case
SymbolicRegexNodeKind
.Concat:
1872
while (conc._kind ==
SymbolicRegexNodeKind
.Concat)
1881
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
1886
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
1887
case
SymbolicRegexNodeKind
.BoundaryAnchor:
1913
case
SymbolicRegexNodeKind
.Loop:
1917
case
SymbolicRegexNodeKind
.Concat:
1922
while (rest._kind ==
SymbolicRegexNodeKind
.Concat)
1934
case
SymbolicRegexNodeKind
.Alternate:
1938
case
SymbolicRegexNodeKind
.FixedLengthMarker:
1942
case
SymbolicRegexNodeKind
.BeginningAnchor:
1946
case
SymbolicRegexNodeKind
.EndAnchor:
1949
case
SymbolicRegexNodeKind
.BOLAnchor:
1953
case
SymbolicRegexNodeKind
.EOLAnchor:
1956
case
SymbolicRegexNodeKind
.EndAnchorZ:
1960
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
1964
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
1969
case
SymbolicRegexNodeKind
.Epsilon:
1970
case
SymbolicRegexNodeKind
.Singleton:
1971
case
SymbolicRegexNodeKind
.BoundaryAnchor:
1972
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
1987
case
SymbolicRegexNodeKind
.Loop:
1990
case
SymbolicRegexNodeKind
.Concat:
1994
case
SymbolicRegexNodeKind
.Alternate:
1998
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
2008
private static TSet ComputeStartSet(SymbolicRegexBuilder<TSet> builder,
SymbolicRegexNodeKind
kind, SymbolicRegexNode<TSet>? left, SymbolicRegexNode<TSet>? right)
2012
Debug.Assert(kind !=
SymbolicRegexNodeKind
.Singleton);
2017
case
SymbolicRegexNodeKind
.Epsilon:
2018
case
SymbolicRegexNodeKind
.FixedLengthMarker:
2019
case
SymbolicRegexNodeKind
.EndAnchor:
2020
case
SymbolicRegexNodeKind
.BeginningAnchor:
2021
case
SymbolicRegexNodeKind
.BoundaryAnchor:
2022
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
2023
case
SymbolicRegexNodeKind
.EOLAnchor:
2024
case
SymbolicRegexNodeKind
.EndAnchorZ:
2025
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
2026
case
SymbolicRegexNodeKind
.BOLAnchor:
2027
case
SymbolicRegexNodeKind
.CaptureStart:
2028
case
SymbolicRegexNodeKind
.CaptureEnd:
2031
case
SymbolicRegexNodeKind
.Loop:
2035
case
SymbolicRegexNodeKind
.Concat:
2039
case
SymbolicRegexNodeKind
.Alternate:
2043
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
2044
case
SymbolicRegexNodeKind
.Effect:
2092
case
SymbolicRegexNodeKind
.BeginningAnchor:
2097
case
SymbolicRegexNodeKind
.EndAnchorZReverse:
2102
case
SymbolicRegexNodeKind
.BoundaryAnchor:
2109
case
SymbolicRegexNodeKind
.NonBoundaryAnchor:
2116
case
SymbolicRegexNodeKind
.Loop:
2123
case
SymbolicRegexNodeKind
.Concat:
2135
case
SymbolicRegexNodeKind
.Alternate:
2147
case
SymbolicRegexNodeKind
.Effect:
2156
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
2187
case
SymbolicRegexNodeKind
.FixedLengthMarker:
2190
case
SymbolicRegexNodeKind
.Alternate:
2204
case
SymbolicRegexNodeKind
.Concat:
2214
/// A <see cref="
SymbolicRegexNodeKind
.DisableBacktrackingSimulation"/> node on the top level will be unwrapped
2222
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
2225
Debug.Assert(_left._kind is not
SymbolicRegexNodeKind
.DisableBacktrackingSimulation);
2232
case
SymbolicRegexNodeKind
.Alternate:
2235
while (current._kind is
SymbolicRegexNodeKind
.Alternate)
2238
Debug.Assert(current._left._kind is not
SymbolicRegexNodeKind
.Alternate);
2282
case
SymbolicRegexNodeKind
.Singleton:
2285
case
SymbolicRegexNodeKind
.Concat:
2286
case
SymbolicRegexNodeKind
.Alternate:
2291
case
SymbolicRegexNodeKind
.Loop:
2316
case
SymbolicRegexNodeKind
.DisableBacktrackingSimulation:
2317
case
SymbolicRegexNodeKind
.Effect: