package com.imegumii; import com.imegumii.codevandocent.*; import java.util.TreeSet; public class Main { public static void P1Opdracht1(TreeSet stringsToParse) { Character [] characters = {'a', 'b'}; DFA myAutomata = new DFA(characters); // AAB myAutomata.addTransition(new Transition("q0", 'a', "q1")); myAutomata.addTransition(new Transition("q1", 'b', "q2")); myAutomata.addTransition(new Transition("q1", 'a', "q0")); myAutomata.addTransition(new Transition("q2", 'b', "q3")); myAutomata.addTransition(new Transition("q2", 'a', "q5")); myAutomata.addTransition(new Transition("q3", "q0")); // BAAB myAutomata.addTransition(new Transition("q0", 'b', "q4")); myAutomata.addTransition(new Transition("q4", 'a', "q5")); myAutomata.addTransition(new Transition("q4", 'b', "q4")); myAutomata.addTransition(new Transition("q5", 'a', "q6")); myAutomata.addTransition(new Transition("q5", 'b', "q4")); myAutomata.addTransition(new Transition("q6", 'a', "q4")); myAutomata.addTransition(new Transition("q6", 'b', "q7")); myAutomata.addTransition(new Transition("q7", 'a', "q4")); myAutomata.addTransition(new Transition("q7", 'b', "q4")); myAutomata.defineAsStartState("q0"); myAutomata.defineAsEndState("q3"); myAutomata.defineAsEndState("q7"); myAutomata.printTransitions(); final long[] startTime = {System.currentTimeMillis()}; myAutomata.geefTaalTotLengte(10).getSymbols().forEach((s) -> { long before = System.currentTimeMillis(); boolean result = myAutomata.accepteer(s); long after = System.currentTimeMillis(); long delta = (after-before); System.out.println("string " + s + " fully parsed, result: " + result + " , it took " + delta + " ms"); startTime[0] += delta; }); System.out.println((System.currentTimeMillis() - startTime[0])); } public static void Practicum1() { TreeSet stringsToParse = new TreeSet<>(); stringsToParse.add("abbaa"); stringsToParse.add("babaa"); stringsToParse.add("abbaaabaab"); stringsToParse.add("abaab"); stringsToParse.add("aaaabba"); stringsToParse.add("baab"); stringsToParse.add("baaba"); stringsToParse.add("baabaabba"); stringsToParse.add("aaaaabb"); // this is wrong, something is wrong P1Opdracht1(stringsToParse); } public static void Practicum2() { RegExp a = new RegExp("a"); RegExp b = new RegExp("b"); // expr1: "baa" RegExp expr1 = new RegExp("baa"); // expr2: "bb" RegExp expr2 = new RegExp("bb"); // expr3: "baa | baa" RegExp expr3 = expr1.of(expr2); // all: "(a|b)*" RegExp all = (a.of(b)).ster(); // expr4: "(baa | baa)+" RegExp expr4 = expr3.plus(); // expr5: "(baa | baa)+ (a|b)*" RegExp expr5 = expr4.punt(all); System.out.println("taal van (baa):\n" + expr1.getTaal(5)); System.out.println("taal van (bb):\n" + expr2.getTaal(5)); System.out.println("taal van (baa | bb):\n" + expr3.getTaal(5)); System.out.println("taal van (a|b)*:\n" + all.getTaal(5)); System.out.println("taal van (baa | bb)+:\n" + expr4.getTaal(5)); System.out.println("taal van (baa | bb)+ (a|b)*:\n" + expr5.getTaal(6)); } public static void main(String[] args) { // System.out.println("Here my code be"); // com.imegumii.codevandocent.Automata t1 = TestAutomata.getExampleSlide8Lesson2(); // t1.printTransitions(); // TestRegExp testreg = new TestRegExp(); // testreg.testLanguage(); System.out.println("Zo moet het dus, nu onze beurt."); // Practicum1(); Practicum2(); } }