61 references to SymbolicRegexBuilder
System.Text.RegularExpressions (61)
System\Text\RegularExpressions\Symbolic\MatchingState.cs (2)
74
internal SymbolicRegexNode<TSet> Next(
SymbolicRegexBuilder
<TSet> builder, TSet minterm, uint nextCharKind)
90
internal List<(SymbolicRegexNode<TSet> Node, DerivativeEffect[] Effects)> NfaNextWithEffects(
SymbolicRegexBuilder
<TSet> builder, TSet minterm, uint nextCharKind)
System\Text\RegularExpressions\Symbolic\RegexNodeConverter.cs (2)
15
internal sealed class RegexNodeConverter(
SymbolicRegexBuilder
<BDD> builder, Hashtable? captureSparseMapping)
20
internal readonly
SymbolicRegexBuilder
<BDD> _builder = builder;
System\Text\RegularExpressions\Symbolic\SymbolicRegexBuilder.cs (6)
90
public bool Equals(
SymbolicRegexBuilder
<TSet>.NodeCacheKey other) =>
106
/// Cache for <see cref="SymbolicRegexNode{TSet}.CreateDerivative(
SymbolicRegexBuilder
{TSet}, TSet, uint)"/> keyed by:
115
/// Cache for <see cref="SymbolicRegexNode{TSet}.PruneLowerPriorityThanNullability(
SymbolicRegexBuilder
{TSet}, uint)"/> keyed by:
123
/// Cache for <see cref="SymbolicRegexNode{TSet}.Subsumes(
SymbolicRegexBuilder
{TSet}, SymbolicRegexNode{TSet}, int)"/> keyed by:
283
internal SymbolicRegexNode<TNewSet> Transform<TNewSet>(SymbolicRegexNode<TSet> node,
SymbolicRegexBuilder
<TNewSet> builder, Func<
SymbolicRegexBuilder
<TNewSet>, TSet, TNewSet> setTransformer)
System\Text\RegularExpressions\Symbolic\SymbolicRegexKind.cs (1)
51
/// Effect nodes are created in the rule for concatenation in <see cref="SymbolicRegexNode{TSet}.CreateDerivative(
SymbolicRegexBuilder
{TSet}, TSet, uint)"/>,
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Automata.cs (1)
452
/// Iterates through the alternation branches <see cref="SymbolicRegexNode{TSet}.EnumerateAlternationBranches(
SymbolicRegexBuilder
{TSet})"/>
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.cs (4)
41
internal readonly
SymbolicRegexBuilder
<TSet> _builder;
150
SymbolicRegexBuilder
<BDD> bddBuilder, SymbolicRegexNode<BDD> rootBddNode, ISolver<TSet> solver,
155
var
builder = new SymbolicRegexBuilder<TSet>(solver, charSetSolver)
169
private SymbolicRegexMatcher(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> rootNode, int captureCount, RegexFindOptimizations findOptimizations, TimeSpan matchTimeout)
System\Text\RegularExpressions\Symbolic\SymbolicRegexMatcher.Dgml.cs (2)
192
static IEnumerable<string> DescribeLabels(IEnumerable<TSet> labels,
SymbolicRegexBuilder
<TSet> builder)
200
static string DescribeLabel(TSet label,
SymbolicRegexBuilder
<TSet> builder) =>
System\Text\RegularExpressions\Symbolic\SymbolicRegexNode.cs (42)
50
private readonly
SymbolicRegexBuilder
<TSet> _debugBuilder;
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)
82
var key = new
SymbolicRegexBuilder
<TSet>.NodeCacheKey(kind, left, right, lower, upper, setOrStartSet, info);
378
internal static SymbolicRegexNode<TSet> CreateFalse(
SymbolicRegexBuilder
<TSet> builder) =>
381
internal static SymbolicRegexNode<TSet> CreateTrue(
SymbolicRegexBuilder
<TSet> builder) =>
384
internal static SymbolicRegexNode<TSet> CreateFixedLengthMarker(
SymbolicRegexBuilder
<TSet> builder, int length) =>
387
internal static SymbolicRegexNode<TSet> CreateEpsilon(
SymbolicRegexBuilder
<TSet> builder) =>
390
internal static SymbolicRegexNode<TSet> CreateAnchor(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNodeKind kind)
406
internal static SymbolicRegexNode<TSet> CreateSingleton(
SymbolicRegexBuilder
<TSet> builder, TSet set) =>
409
internal static SymbolicRegexNode<TSet> CreateLoop(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> body, int lower, int upper, bool isLazy)
422
internal static SymbolicRegexNode<TSet> CreateEffect(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> node, SymbolicRegexNode<TSet> effectNode)
439
internal static SymbolicRegexNode<TSet> CreateCaptureStart(
SymbolicRegexBuilder
<TSet> builder, int captureNum) =>
442
internal static SymbolicRegexNode<TSet> CreateCaptureEnd(
SymbolicRegexBuilder
<TSet> builder, int captureNum) =>
445
internal static SymbolicRegexNode<TSet> CreateDisableBacktrackingSimulation(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> child) =>
449
internal static SymbolicRegexNode<TSet> CreateConcat(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> left, SymbolicRegexNode<TSet> right)
488
internal static SymbolicRegexNode<TSet> CreateAlternate(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> left, SymbolicRegexNode<TSet> right, bool deduplicated = false, bool hintRightLikelySubsumes = false)
611
internal bool Subsumes(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> other, int depth = 0)
647
static bool? ApplySubsumptionRules(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> left, SymbolicRegexNode<TSet> right, int depth)
771
private static bool TryFoldAlternation(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> left, SymbolicRegexNode<TSet> right, [NotNullWhen(true)] out SymbolicRegexNode<TSet>? result,
837
static bool TrySplitConcatSubsumption(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNode<TSet> left, SymbolicRegexNode<TSet> right,
980
public SymbolicRegexNode<TSet> AddFixedLengthMarkers(
SymbolicRegexBuilder
<TSet> builder, int lengthSoFar = 0)
1025
/// Create a derivative (<see cref="CreateDerivative(
SymbolicRegexBuilder
{TSet}, TSet, uint)"/> and <see cref="CreateDerivativeWrapper"/>) and then strip
1035
internal SymbolicRegexNode<TSet> CreateDerivativeWithoutEffects(
SymbolicRegexBuilder
<TSet> builder, TSet elem, uint context) => CreateDerivativeWrapper(builder, elem, context).StripEffects(builder);
1038
/// Create a derivative (<see cref="CreateDerivative(
SymbolicRegexBuilder
{TSet}, TSet, uint)"/> and <see cref="CreateDerivativeWrapper"/>) and then strip
1045
/// The differences of this to <see cref="CreateDerivativeWithoutEffects(
SymbolicRegexBuilder
{TSet}, TSet, uint)"/> are that (1) effects (e.g. capture starts and ends)
1054
internal List<(SymbolicRegexNode<TSet>, DerivativeEffect[])> CreateNfaDerivativeWithEffects(
SymbolicRegexBuilder
<TSet> builder, TSet elem, uint context)
1064
private SymbolicRegexNode<TSet> CreateDerivativeWrapper(
SymbolicRegexBuilder
<TSet> builder, TSet elem, uint context)
1083
private SymbolicRegexNode<TSet> PruneLowerPriorityThanNullability(
SymbolicRegexBuilder
<TSet> builder, uint context)
1158
static SymbolicRegexNode<TSet> PruneLoop(
SymbolicRegexBuilder
<TSet> builder, uint context, SymbolicRegexNode<TSet> loop, SymbolicRegexNode<TSet> tail)
1212
private SymbolicRegexNode<TSet> CreateLoopContinuation(
SymbolicRegexBuilder
<TSet> builder)
1250
private SymbolicRegexNode<TSet> CreateDerivative(
SymbolicRegexBuilder
<TSet> builder, TSet elem, uint context)
1364
internal SymbolicRegexNode<TSet> StripEffects(
SymbolicRegexBuilder
<TSet> builder)
1427
internal void StripAndMapEffects(
SymbolicRegexBuilder
<TSet> builder, uint context, List<(SymbolicRegexNode<TSet>, DerivativeEffect[])> alternativesAndEffects,
1820
public HashSet<TSet> GetSets(
SymbolicRegexBuilder
<TSet> builder)
1828
private void CollectSets(
SymbolicRegexBuilder
<TSet> builder, HashSet<TSet> sets)
1898
public TSet[] ComputeMinterms(
SymbolicRegexBuilder
<TSet> builder) =>
1904
public SymbolicRegexNode<TSet> Reverse(
SymbolicRegexBuilder
<TSet> builder)
2008
private static TSet ComputeStartSet(
SymbolicRegexBuilder
<TSet> builder, SymbolicRegexNodeKind kind, SymbolicRegexNode<TSet>? left, SymbolicRegexNode<TSet>? right)
2065
internal SymbolicRegexNode<TSet> PruneAnchors(
SymbolicRegexBuilder
<TSet> builder, uint prevKind)
2079
private SymbolicRegexNode<TSet> PruneAnchorsImpl(
SymbolicRegexBuilder
<TSet> builder, uint prevKind, bool contWithWL, bool contWithNWL)
2218
internal IEnumerable<SymbolicRegexNode<TSet>> EnumerateAlternationBranches(
SymbolicRegexBuilder
<TSet> builder)
System\Text\RegularExpressions\Symbolic\SymbolicRegexRunnerFactory.cs (1)
20
var
bddBuilder = new SymbolicRegexBuilder<BDD>(charSetSolver, charSetSolver);