Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 public override FA GetFA() => FA.Any();