From 2c17f6c108d7acd51a7806144568d435de7b6fb9 Mon Sep 17 00:00:00 2001 From: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com> Date: Sun, 20 Sep 2026 18:29:44 +0800 Subject: [PATCH] start nfa afterall --- .../Abstraction/Mix.cs | 47 +++++++++++++++++++ .../Abstraction/Relation.cs | 47 +++++++++++++++++++ .../AttributeRegex/PropertyMatchEngine.cs | 12 +++++ 3 files changed, 106 insertions(+) create mode 100644 src/Nitload.RegularAnalysis/Abstraction/Mix.cs create mode 100644 src/Nitload.RegularAnalysis/Abstraction/Relation.cs create mode 100644 src/Nitload.RegularAnalysis/AttributeRegex/PropertyMatchEngine.cs diff --git a/src/Nitload.RegularAnalysis/Abstraction/Mix.cs b/src/Nitload.RegularAnalysis/Abstraction/Mix.cs new file mode 100644 index 00000000..df1ab372 --- /dev/null +++ b/src/Nitload.RegularAnalysis/Abstraction/Mix.cs @@ -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( + TEvaluator evaluator + ) where TEvaluator : IMixEvaluator + { + + public TValue Weight { get; private set; } = default!; + + private TEvaluator Evaluator { get; init; } = evaluator; + + public TValue Evaluate( + Span> relations + ) + { + Weight = Evaluator.Evaluate(relations); + return Weight; + } + + } + + public sealed class Mix( + IMixEvaluator evaluator + ) : Mix>(evaluator) { } + + public interface IMixEvaluator + { + + TValue Evaluate( + Span> relations + ); + + } +} diff --git a/src/Nitload.RegularAnalysis/Abstraction/Relation.cs b/src/Nitload.RegularAnalysis/Abstraction/Relation.cs new file mode 100644 index 00000000..5ffe0a8b --- /dev/null +++ b/src/Nitload.RegularAnalysis/Abstraction/Relation.cs @@ -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( + TEvaluator evaluator + ) where TEvaluator : IRelationEvaluator + { + + public TEvaluator Evaluator { get; init; } = evaluator; + + public TValue Weight { get; private set; } = default!; + + public TValue Evaluate( + ReadOnlySpan sequence + ) + { + Weight = Evaluate(sequence); + return Weight; + } + + } + + public class Relation( + IRelationEvaluator evaluator + ) : Relation>(evaluator) { } + + public interface IRelationEvaluator + { + + TValue Evaluate( + ReadOnlySpan sequence + ); + + } +} diff --git a/src/Nitload.RegularAnalysis/AttributeRegex/PropertyMatchEngine.cs b/src/Nitload.RegularAnalysis/AttributeRegex/PropertyMatchEngine.cs new file mode 100644 index 00000000..fe45b589 --- /dev/null +++ b/src/Nitload.RegularAnalysis/AttributeRegex/PropertyMatchEngine.cs @@ -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 + { + } +}