From 83963f30dc9eca6012b5eb44a48f10660756583f Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Tue, 2 May 2017 14:41:57 +0200 Subject: [PATCH] Finished implementing RegExp --- src/com/imegumii/DFA.java | 2 -- src/com/imegumii/Main.java | 36 ++++++++++++++++++-- src/com/imegumii/RegExp.java | 65 ++++++++++++++++++++++++++++++++++++ src/com/imegumii/Taal.java | 5 +++ 4 files changed, 104 insertions(+), 4 deletions(-) diff --git a/src/com/imegumii/DFA.java b/src/com/imegumii/DFA.java index 6d02c83..89f6d5f 100644 --- a/src/com/imegumii/DFA.java +++ b/src/com/imegumii/DFA.java @@ -1,7 +1,5 @@ package com.imegumii; -import com.sun.source.util.Trees; - import java.util.Iterator; import java.util.SortedSet; import java.util.TreeSet; diff --git a/src/com/imegumii/Main.java b/src/com/imegumii/Main.java index 6c0714d..885b7a6 100644 --- a/src/com/imegumii/Main.java +++ b/src/com/imegumii/Main.java @@ -69,18 +69,50 @@ public class Main { 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(); +// TestRegExp testreg = new TestRegExp(); +// testreg.testLanguage(); System.out.println("Zo moet het dus, nu onze beurt."); // Practicum1(); + Practicum2(); + } } diff --git a/src/com/imegumii/RegExp.java b/src/com/imegumii/RegExp.java index 15105e7..d9f1f8f 100644 --- a/src/com/imegumii/RegExp.java +++ b/src/com/imegumii/RegExp.java @@ -1,6 +1,9 @@ package com.imegumii; import java.util.Comparator; +import java.util.HashSet; +import java.util.SortedSet; +import java.util.TreeSet; /** * Created by kenny on 2-5-2017. @@ -71,4 +74,66 @@ public class RegExp { return res; } + public Taal getTaal(int maxOperaties) + { + SortedSet leeg = new TreeSet<>(vergelijkDmvLengte); + SortedSet resultaat = new TreeSet<>(vergelijkDmvLengte); + + SortedSet resLinks, resRechts; + + if(maxOperaties < 1) return new Taal(leeg); + + switch(operator) + { + case EEN: + resultaat.add(characters); + break; + + case OF: + resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols(); + resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1).getSymbols(); + resultaat.addAll (resLinks); + resultaat.addAll (resRechts); + break; + + + case PUNT: + resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols(); + resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1).getSymbols(); + for (String s1 : resLinks) + for (String s2 : resRechts) + {resultaat.add (s1 + s2);} + break; + + case STER: + case PLUS: + resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols(); + resultaat.addAll(resLinks); + for (int i = 1; i < maxOperaties; i++) + { + HashSet tempTaal = new HashSet(resultaat); + for (String s1 : resLinks) + { + for (String s2 : tempTaal) + { + resultaat.add (s1+s2); + } + } + } + if (this.operator == Operator.STER) + { + resultaat.add(""); + } + break; + + + default: + System.out.println ("getTaal is nog niet gedefinieerd voor de operator: " + this.operator); + break; + + } + + return new Taal(resultaat); + } + } diff --git a/src/com/imegumii/Taal.java b/src/com/imegumii/Taal.java index c64838d..9fcdc4d 100644 --- a/src/com/imegumii/Taal.java +++ b/src/com/imegumii/Taal.java @@ -15,4 +15,9 @@ public class Taal { public SortedSet getSymbols() { return symbols; } + + @Override + public String toString() { + return symbols.toString(); + } }