Esempio n. 1
0
        public void StepAlternation()
        {
            var A         = ConstructionKit.Consume(new CharSet('a'));
            var B         = ConstructionKit.Consume(new CharSet('b'));
            var AA        = ConstructionKit.Concat(new[] { A, A });
            var automaton = ConstructionKit.Alternate(new[] { AA, B });

            automaton.Accepts("b");
            automaton.Accepts("aa");
            automaton.Rejects("bb");
            automaton.Rejects("a");
        }
Esempio n. 2
0
            public IAutomaton Exec()
            {
                var lhs = ConcatExpression();

                while (Lookahead == '|')
                {
                    index++;
                    var rhs = ConcatExpression();
                    lhs = ConstructionKit.Alternate(new[]
                    {
                        lhs, rhs
                    });
                }
                return(lhs);
            }
Esempio n. 3
0
        public void StepDeterminize()
        {
            var A         = ConstructionKit.Consume(new CharSet('a'));
            var B         = ConstructionKit.Consume(new CharSet('b'));
            var AA        = ConstructionKit.Concat(new[] { A, A });
            var AAorB     = ConstructionKit.Alternate(new[] { AA, B });
            var automaton = ConstructionKit.Repeat(AAorB)
                            .Determinize();

            automaton.Accepts("");
            automaton.Accepts("aa");
            automaton.Accepts("aa");
            automaton.Accepts("aaaa");
            automaton.Accepts("baab");
            automaton.Accepts("baabaabb");
            automaton.Rejects("a");
            automaton.Rejects("aaa");
        }