public RegExp dot(RegExp e2) { RegExp result = new RegExp(); result._operator = Operator.DOT; result.left = this; result.right = e2; return(result); }
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)); }
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); }
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); }
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"); } }
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); }