Exemplo n.º 1
0
        private static RegExp MakeString(RegExp exp1, RegExp exp2)
        {
            var sb = new StringBuilder();

            _ = exp1._Kind == Kind.RegexpString ? sb.Append(exp1._S) : sb.Append(exp1._C);

            _ = exp2._Kind == Kind.RegexpString ? sb.Append(exp2._S) : sb.Append(exp2._C);

            return(MakeString(sb.ToString()));
        }
Exemplo n.º 2
0
 private void FindLeaves(
     RegExp exp,
     Kind regExpKind,
     IList <Automaton> list,
     IDictionary <string, Automaton> automata,
     IAutomatonProvider automatonProvider,
     bool minimize)
 {
     if (exp._Kind == regExpKind)
     {
         FindLeaves(exp._Exp1, regExpKind, list, automata, automatonProvider, minimize);
         FindLeaves(exp._Exp2, regExpKind, list, automata, automatonProvider, minimize);
     }
     else
     {
         list.Add(exp.ToAutomaton(automata, automatonProvider, minimize));
     }
 }
Exemplo n.º 3
0
 private static RegExp MakeUnion(RegExp exp1, RegExp exp2) => new RegExp
 {
     _Kind = Kind.RegexpUnion,
     _Exp1 = exp1,
     _Exp2 = exp2,
 };
Exemplo n.º 4
0
 private static RegExp MakeRepeat(RegExp exp, int min) => new RegExp
 {
     _Kind = Kind.RegexpRepeatMin,
     _Exp1 = exp,
     _Min  = min,
 };
Exemplo n.º 5
0
 private static RegExp MakeRepeat(RegExp exp) => new RegExp
 {
     _Kind = Kind.RegexpRepeat,
     _Exp1 = exp,
 };
Exemplo n.º 6
0
 private static RegExp MakeOptional(RegExp exp) => new RegExp
 {
     _Kind = Kind.RegexpOptional,
     _Exp1 = exp,
 };
Exemplo n.º 7
0
 private static RegExp MakeIntersection(RegExp exp1, RegExp exp2) => new RegExp
 {
     _Kind = Kind.RegexpIntersection,
     _Exp1 = exp1,
     _Exp2 = exp2,
 };
Exemplo n.º 8
0
 private static RegExp MakeComplement(RegExp exp) => new RegExp
 {
     _Kind = Kind.RegexpComplement,
     _Exp1 = exp,
 };
Exemplo n.º 9
0
 private static RegExp ExcludeChars(RegExp exclusion, RegExp allChars) => MakeIntersection(allChars, MakeComplement(exclusion));