public void Automata1() { // .* [0-5] .* | .* [4-9] .* var dot = FA.Any(); var nfa = FA.Or( FA.And(dot.Star(), FA.From('0', '5'), dot.Plus()), FA.And(dot.Star(), FA.From('4', '9'), dot.Plus())); var dfa = nfa.ToDfa(); dfa = dfa.Minimize(); Assert.AreEqual(6, dfa.States.Count); }
public void Automata2() { // .*[A-Z].+|.*[0-9].+ var dotPlus = FA.Any().Plus(); var dotStar = FA.Any().Star(); var letter = FA.From('A', 'Z'); var digits = FA.From('0', '9'); var nfa = FA.Or( FA.And(dotStar, letter, dotPlus), FA.And(dotStar, digits, dotPlus)); var dfa = nfa.ToDfa(); dfa = dfa.Minimize(); Assert.AreEqual(5, dfa.States.Count); }
public override FA GetFA() => FA.Any();