Fixed issue in accepteer
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user