prefix replaces CONDITION

This commit is contained in:
Youmu Liu
2026-07-06 18:19:32 +08:00
parent cd7a52bd60
commit b053567eb7
8 changed files with 1113 additions and 1105 deletions
@@ -1,6 +1,6 @@
//-----------------------------------------------------------------------
// -----------------------------------------------------------------------
// file="RegexAnalyzer"
// file="RegexAnalyzerFrontEnd"
// Project: StgSharp
// AuthorGroup: Nitload
// Copyright (c) Nitload. All rights reserved.
@@ -29,6 +29,7 @@ using StgSharp.RegularAnalysis.Abstraction;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Text;
@@ -76,18 +77,35 @@ namespace StgSharp.RegularAnalysis.Text
{
// RegexAnalyzer interpreter = new();
// interpreter._source = regex;
AbstractSyntaxTree<RegexAstNode, RegexElementLabel> tree;
try
{
AbstractSyntaxTree<RegexAstNode, RegexElementLabel> tree = GenerateAST(regex);
tree = GenerateAST(regex);
OptimizeTree(tree);
List<RegexIR> base_ir = GenerateIR(tree);
ScanAndOptimizeIR(base_ir, out List<RegexIR> opt_ir);
return new TextRegexSource(regex, tree, base_ir, opt_ir);
}
catch (Exception ex)
{
return new TextRegexSource(regex, null, null, null, ex);
}
List<RegexIR> base_ir;
try
{
base_ir = GenerateIR(tree);
}
catch (Exception ex)
{
return new TextRegexSource(regex, tree, null, null, ex);
}
try
{
ScanAndOptimizeIR(base_ir, out List<RegexIR> opt_ir);
List<RegexIR> prefix_ir = EmitPrefix(opt_ir);
return new TextRegexSource(regex, tree, base_ir, prefix_ir);
}
catch (Exception ex)
{
return new TextRegexSource(regex, tree, base_ir, null, ex);
}
}
}