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

            automaton.Accepts("ab");
            automaton.Rejects("ba");
        }
Esempio n. 2
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. 3
0
            private IAutomaton ConcatExpression()
            {
                var lhs = PrimaryExpression();

                while (Lookahead != '|' && Lookahead != Eos && Lookahead != ')')
                {
                    var rhs = PrimaryExpression();
                    lhs = ConstructionKit.Concat(new[]
                    {
                        lhs, rhs
                    });
                }
                return(lhs);
            }
Esempio n. 4
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");
        }