Exemplo n.º 1
0
        public RegExp dot(RegExp e2)
        {
            RegExp result = new RegExp();

            result._operator = Operator.DOT;
            result.left      = this;
            result.right     = e2;
            return(result);
        }
Exemplo n.º 2
0
        private static void TestRegCompare()
        {
            var reg1 = new RegExp("a").plus().dot(new RegExp("a").star().or(new RegExp("a").plus())).dot(new RegExp("b").plus());

            reg1.ViewImage(true);
            var reg2 = new RegExp("a").dot(new RegExp("a").star()).dot(new RegExp("b").dot(new RegExp("b").star()));

            reg2.ViewImage(false);
            Console.WriteLine(reg1.Equals(reg2));
        }
Exemplo n.º 3
0
        public static void Regel5(RegExp reg, ref Automaat <int> a, ref int c, int leftState, int rightState)
        {
            var newLeftState  = c + 1;
            var newRightState = newLeftState + 1;

            c = newRightState;

            a.AddTransition(new Transition <int>(leftState, Transition <int> .Epsilon, newLeftState));
            a.AddTransition(new Transition <int>(newRightState, Transition <int> .Epsilon, rightState));
            a.AddTransition(new Transition <int>(newRightState, Transition <int> .Epsilon, newLeftState));
            ModifyAutomaat(reg.left, ref a, ref c, newLeftState, newRightState);
        }
Exemplo n.º 4
0
        public static Automaat <int> CreateAutomaat(RegExp reg)
        {
            var automaat = new Automaat <int>();
            int stateCounter = 1, leftState = 0, rightState = 1;

            automaat.DefineAsStartState(leftState);
            automaat.DefineAsFinalState(rightState);

            ModifyAutomaat(reg, ref automaat, ref stateCounter, leftState, rightState);

            return(automaat);
        }
Exemplo n.º 5
0
        static void TestRegToDfa()
        {
            //reg: a|b
            var reg = new RegExp("a").or(new RegExp("b"));

            reg = reg.star();
            Console.WriteLine(reg.ToString());
            var ndfa = Thompson.CreateAutomaat(reg);
            var dfa  = NdfatoDfa.MakeDfa(ndfa);

            dfa.PrintTransitions();

            Console.WriteLine("reversed dfa");
            var reversedDfa = dfa.Reverse();

            reversedDfa.PrintTransitions();
        }
Exemplo n.º 6
0
        private static void TestRegex(RegExp reg)
        {
            Console.WriteLine($"\n{reg.ToString()}");
            var automaat = Thompson.CreateAutomaat(reg);

            automaat.PrintTransitions();
            Console.WriteLine("alphabet:");
            foreach (var s in automaat.GetAlphabet())
            {
                Console.WriteLine(s);
            }
            Console.WriteLine("\ntalen die regex accepteert");
            foreach (var s in reg.getLanguage(3))
            {
                Console.WriteLine($"Taal:{s}, wordt geaccepteerd:{automaat.Accepteer(s)}\n");
            }
        }
Exemplo n.º 7
0
        public TestRegExp()
        {
            a = new RegExp("a");
            b = new RegExp("b");

            // expr1: "baa"
            expr1 = new RegExp("baa");
            // expr2: "bb"
            expr2 = new RegExp("bb");
            // expr3: "baa | baa"
            expr3 = expr1.or(expr2);

            // all: "(a|b)*"
            all = (a.or(b)).star();

            // expr4: "(baa | baa)+"
            expr4 = expr3.plus();
            // expr5: "(baa | baa)+ (a|b)*"
            expr5 = expr4.dot(all);
        }