start nfa afterall
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// file="Mix"
|
||||||
|
// Project: StgSharp
|
||||||
|
// Copyright (c) Nitload.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Nitload.RegularAnalysis.Abstraction
|
||||||
|
{
|
||||||
|
public class Mix<TElement, TValue, TEvaluator>(
|
||||||
|
TEvaluator evaluator
|
||||||
|
) where TEvaluator : IMixEvaluator<TElement, TValue>
|
||||||
|
{
|
||||||
|
|
||||||
|
public TValue Weight { get; private set; } = default!;
|
||||||
|
|
||||||
|
private TEvaluator Evaluator { get; init; } = evaluator;
|
||||||
|
|
||||||
|
public TValue Evaluate(
|
||||||
|
Span<Relation<TElement, TValue>> relations
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Weight = Evaluator.Evaluate(relations);
|
||||||
|
return Weight;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class Mix<TElement, TValue>(
|
||||||
|
IMixEvaluator<TElement, TValue> evaluator
|
||||||
|
) : Mix<TElement, TValue, IMixEvaluator<TElement, TValue>>(evaluator) { }
|
||||||
|
|
||||||
|
public interface IMixEvaluator<TElement, TValue>
|
||||||
|
{
|
||||||
|
|
||||||
|
TValue Evaluate(
|
||||||
|
Span<Relation<TElement, TValue>> relations
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// file="Relation"
|
||||||
|
// Project: StgSharp
|
||||||
|
// Copyright (c) Nitload.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Nitload.RegularAnalysis.Abstraction
|
||||||
|
{
|
||||||
|
public class Relation<TElement, TValue, TEvaluator>(
|
||||||
|
TEvaluator evaluator
|
||||||
|
) where TEvaluator : IRelationEvaluator<TElement, TValue>
|
||||||
|
{
|
||||||
|
|
||||||
|
public TEvaluator Evaluator { get; init; } = evaluator;
|
||||||
|
|
||||||
|
public TValue Weight { get; private set; } = default!;
|
||||||
|
|
||||||
|
public TValue Evaluate(
|
||||||
|
ReadOnlySpan<TElement> sequence
|
||||||
|
)
|
||||||
|
{
|
||||||
|
Weight = Evaluate(sequence);
|
||||||
|
return Weight;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Relation<TElement, TValue>(
|
||||||
|
IRelationEvaluator<TElement, TValue> evaluator
|
||||||
|
) : Relation<TElement, TValue, IRelationEvaluator<TElement, TValue>>(evaluator) { }
|
||||||
|
|
||||||
|
public interface IRelationEvaluator<TElement, TValue>
|
||||||
|
{
|
||||||
|
|
||||||
|
TValue Evaluate(
|
||||||
|
ReadOnlySpan<TElement> sequence
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Nitload.RegularAnalysis.AttibuteRegex
|
||||||
|
{
|
||||||
|
internal class PropertyMatchEngine
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user