Finished implementing RegExp
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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<String> 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();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<String> leeg = new TreeSet<>(vergelijkDmvLengte);
|
||||
SortedSet<String> resultaat = new TreeSet<>(vergelijkDmvLengte);
|
||||
|
||||
SortedSet<String> 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<String> tempTaal = new HashSet<String>(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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,4 +15,9 @@ public class Taal {
|
||||
public SortedSet<String> getSymbols() {
|
||||
return symbols;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return symbols.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user