Fixed issue in accepteer

This commit is contained in:
Yorick Rommers
2017-06-12 13:24:51 +02:00
parent 2c1f44fe7e
commit a33b7b9164
6 changed files with 31 additions and 22 deletions
+4 -2
View File
@@ -27,9 +27,11 @@ public class DFA<T extends Comparable> extends Automata<T> {
for (int i = 0; i < s.length(); i++) {
// System.out.println(s.charAt(i));
for (Transition<T> t : this.transistions) {
if (t.vanState == currentState) {
// System.out.println("State is " + t.vanState);
// System.out.println("CurrentState is " + currentState);
if (t.vanState.equals(currentState)) {
// System.out.println("Char is " + s.charAt(i) + " and state is " + t);
// if states match, parse using symbols.
if (t.symbol == s.charAt(i)) {
// symbols match
+3 -1
View File
@@ -27,7 +27,9 @@ public class Main {
RegExp reg = new RegExp();
// System.out.println(reg.naarRegExp(s3).getTaal(10));
System.out.println(reg.naarRegExp(s7).getTaal(10));
// System.out.println(reg.naarRegExp(s7).getTaal(10));
// Test.TestUitOpdrachtBeschrijving();
new Frame();
}
}
+10 -8
View File
@@ -3,6 +3,7 @@ package com.imegumii;
import sun.misc.Regexp;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created by kenny on 2-5-2017.
@@ -217,7 +218,7 @@ public class RegExp extends Importable{
return res;
}
public Taal getTaal(int maxOperaties)
public Taal getTaal(int maxOperaties, int maxLength)
{
SortedSet<String> leeg = new TreeSet<>(vergelijkDmvLengte);
SortedSet<String> resultaat = new TreeSet<>(vergelijkDmvLengte);
@@ -233,15 +234,15 @@ public class RegExp extends Importable{
break;
case OF:
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols();
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1).getSymbols();
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1, maxLength).getSymbols();
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1, maxLength).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();
resLinks = links == null ? leeg : links.getTaal(maxOperaties, maxLength).getSymbols();
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties, maxLength).getSymbols();
for (String s1 : resLinks) {
for (String s2 : resRechts) {
resultaat.add(s1 + s2);
@@ -251,7 +252,7 @@ public class RegExp extends Importable{
case STER:
case PLUS:
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols();
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1, maxLength).getSymbols();
resultaat.addAll(resLinks);
for (int i = 1; i < maxOperaties; i++)
{
@@ -276,8 +277,9 @@ public class RegExp extends Importable{
break;
}
return new Taal(resultaat);
SortedSet<String> ret = new TreeSet<>();
resultaat.stream().filter(r -> r.length() < maxLength).forEach(ret::add);
return new Taal(ret);
}
public class Tuple<X, Y> {
+7 -8
View File
@@ -149,13 +149,13 @@ public class Test {
// 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));
// 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));
}
@@ -477,7 +477,6 @@ public class Test {
DFA<String> dfa = ndfa.toDFA();
Graph.generateImage(dfa, "Dfa");
}
public static void traverseRegExp(RegExp r) {
+5 -2
View File
@@ -2,6 +2,7 @@ package com.imegumii.ui;
import com.imegumii.*;
import org.apache.commons.io.FileUtils;
import org.apache.xpath.SourceTree;
import javax.imageio.ImageIO;
import javax.swing.*;
@@ -130,9 +131,11 @@ public class GraphPanel extends JPanel {
Graph.generateImage(mini, "mcdfa");
TabPanel.Instance().addGraph("DFA: mcdfa." + name, new File("images/mcdfa.png"), mini);
System.out.println(mini.accepteer("fuuuuuuuck"));
System.out.println(mini.accepteer("fuuuuuuuckabba"));
System.out.println(mini.accepteer("fuuuuuuuckabb"));
mini.geefTaalTotLengte(10).getSymbols().forEach(s -> System.out.println("Accepteer " + s + " ? " + mini.accepteer(s)));
StatusPanel.Instance().setStatus("Done", 100);
}
}
});
+2 -1
View File
@@ -59,6 +59,7 @@ public class InputPanel extends JPanel {
RegExp regex = new RegExp();
regex = regex.naarRegExp(regS);
System.out.println(regex.getTaal(4, 10));
StatusPanel.Instance().setStatus("Converting REGEX to NDFA", 40);
@@ -144,7 +145,7 @@ public class InputPanel extends JPanel {
StatusPanel.Instance().setStatus("Converting REGEX to NDFA", 40);
RegExp regex = (RegExp) p;
System.out.println(regex.getTaal(10));
// System.out.println(regex.getTaal(10));
NDFA<String> ndfa = ThompsonConverter.convert(regex);
try {