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; } } }
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; } } }
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(); } } }
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)); }
public void ViewImage(bool minimizedDFA) { var a = Thompson.CreateAutomaat(this); if (minimizedDFA) { Graphviz.PrintGraph(NdfatoDfa.MakeDfa(a).MinimizeReverse(), "test"); } else { Graphviz.PrintGraph(a, "test"); } }
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(); }
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"); } }