Пример #1
0
            private void ViewActions(RegexStruct regexStruct)
            {
                var running = true;

                while (running)
                {
                    Console.Clear();
                    Console.WriteLine($"regex: {regexStruct.text} gekozen. Kies een actie");
                    actions.ToList().ForEach(a => Console.WriteLine(a));
                    int input = GetInput(actions.Length);
                    switch (input)
                    {
                    case 0:
                        Thompson.CreateAutomaat(regexStruct.regex).ViewImage();
                        break;

                    case 1:
                        NdfatoDfa.MakeDfa(Thompson.CreateAutomaat(regexStruct.regex)).ViewImage();
                        break;

                    case 2:
                        NdfatoDfa.MakeDfa(Thompson.CreateAutomaat(regexStruct.regex)).MinimizeHopCroft(false).ViewImage();
                        break;

                    case 3:
                        running = false;
                        samples.Clear();
                        break;
                    }
                }
            }
Пример #2
0
            private void HandleAction(RegexStruct regex1, RegexStruct regex2)
            {
                var running = true;

                while (running)
                {
                    Console.Clear();
                    Console.WriteLine($"regex: {regex1.text} en {regex2.text} gekozen. Kies een actie");
                    actions.ToList().ForEach(a => Console.WriteLine(a));
                    int input = GetInput(actions.Length);
                    switch (input)
                    {
                    case 0:
                        NdfatoDfa.MakeDfa(Thompson.CreateAutomaat(regex1.regex)).ViewImage();
                        break;

                    case 1:
                        NdfatoDfa.MakeDfa(Thompson.CreateAutomaat(regex2.regex)).ViewImage();
                        break;

                    case 2:
                        Console.WriteLine("gelijkheid reg1 en reg2 is: " + regex1.regex.Equals(regex2.regex));
                        Console.WriteLine("druk op enter om door te gaan");
                        Console.ReadLine();
                        break;

                    case 3:
                        running = false;
                        samples.Clear();
                        break;
                    }
                }
            }
Пример #3
0
            private void ShowRegex(int index)
            {
                var regex = sampleRegex[index].regex;

                bool running = true;

                while (running)
                {
                    Console.Clear();
                    Console.WriteLine($"regex naar ndfa: " + sampleRegex[index].text);
                    Console.WriteLine("automaat:");
                    var automaat = Thompson.CreateAutomaat(regex);
                    automaat.Print();

                    Console.WriteLine("\n\n");
                    Console.WriteLine("kies een volgende actie:");
                    Console.WriteLine("0) toon afbeelding automaat");
                    Console.WriteLine("1) toon afbeelding dfa");
                    Console.WriteLine("2) toon afbeelding geminimaliseerde automaat");
                    Console.WriteLine("3) toon geaccepteerde woorden");
                    Console.WriteLine("4) toon niet geaccepteerde woorden");
                    Console.WriteLine("5) terug naar hoofdmenu");
                    index = GetInput(6);
                    HandleSubMenu(index, automaat);
                    if (index < 0 || index > 4)
                    {
                        running = false;
                        sampleRegex.Clear();
                    }
                }
            }
Пример #4
0
        public override bool Equals(object obj)
        {
            var reg = (RegExp)obj;

            if (reg == null)
            {
                return(false);
            }
            var automate1 = NdfatoDfa.MakeDfa(Thompson.CreateAutomaat(this)).MinimizeHopCroft(false);
            var automate2 = NdfatoDfa.MakeDfa(Thompson.CreateAutomaat(reg)).MinimizeHopCroft(false);

            return(automate1.Equals(automate2));
        }
Пример #5
0
        public void ViewImage(bool minimizedDFA)
        {
            var a = Thompson.CreateAutomaat(this);

            if (minimizedDFA)
            {
                Graphviz.PrintGraph(NdfatoDfa.MakeDfa(a).MinimizeReverse(), "test");
            }
            else
            {
                Graphviz.PrintGraph(a, "test");
            }
        }
Пример #6
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();
        }
Пример #7
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");
            }
        }