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++) {
|
for (int i = 0; i < s.length(); i++) {
|
||||||
// System.out.println(s.charAt(i));
|
|
||||||
for (Transition<T> t : this.transistions) {
|
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 states match, parse using symbols.
|
||||||
if (t.symbol == s.charAt(i)) {
|
if (t.symbol == s.charAt(i)) {
|
||||||
// symbols match
|
// symbols match
|
||||||
|
|||||||
@@ -27,7 +27,9 @@ public class Main {
|
|||||||
RegExp reg = new RegExp();
|
RegExp reg = new RegExp();
|
||||||
|
|
||||||
// System.out.println(reg.naarRegExp(s3).getTaal(10));
|
// 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();
|
new Frame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.imegumii;
|
|||||||
import sun.misc.Regexp;
|
import sun.misc.Regexp;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by kenny on 2-5-2017.
|
* Created by kenny on 2-5-2017.
|
||||||
@@ -217,7 +218,7 @@ public class RegExp extends Importable{
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Taal getTaal(int maxOperaties)
|
public Taal getTaal(int maxOperaties, int maxLength)
|
||||||
{
|
{
|
||||||
SortedSet<String> leeg = new TreeSet<>(vergelijkDmvLengte);
|
SortedSet<String> leeg = new TreeSet<>(vergelijkDmvLengte);
|
||||||
SortedSet<String> resultaat = new TreeSet<>(vergelijkDmvLengte);
|
SortedSet<String> resultaat = new TreeSet<>(vergelijkDmvLengte);
|
||||||
@@ -233,15 +234,15 @@ public class RegExp extends Importable{
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case OF:
|
case OF:
|
||||||
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols();
|
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1, maxLength).getSymbols();
|
||||||
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1).getSymbols();
|
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1, maxLength).getSymbols();
|
||||||
resultaat.addAll (resLinks);
|
resultaat.addAll (resLinks);
|
||||||
resultaat.addAll (resRechts);
|
resultaat.addAll (resRechts);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PUNT:
|
case PUNT:
|
||||||
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols();
|
resLinks = links == null ? leeg : links.getTaal(maxOperaties, maxLength).getSymbols();
|
||||||
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties - 1).getSymbols();
|
resRechts = rechts == null ? leeg : rechts.getTaal(maxOperaties, maxLength).getSymbols();
|
||||||
for (String s1 : resLinks) {
|
for (String s1 : resLinks) {
|
||||||
for (String s2 : resRechts) {
|
for (String s2 : resRechts) {
|
||||||
resultaat.add(s1 + s2);
|
resultaat.add(s1 + s2);
|
||||||
@@ -251,7 +252,7 @@ public class RegExp extends Importable{
|
|||||||
|
|
||||||
case STER:
|
case STER:
|
||||||
case PLUS:
|
case PLUS:
|
||||||
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1).getSymbols();
|
resLinks = links == null ? leeg : links.getTaal(maxOperaties - 1, maxLength).getSymbols();
|
||||||
resultaat.addAll(resLinks);
|
resultaat.addAll(resLinks);
|
||||||
for (int i = 1; i < maxOperaties; i++)
|
for (int i = 1; i < maxOperaties; i++)
|
||||||
{
|
{
|
||||||
@@ -276,8 +277,9 @@ public class RegExp extends Importable{
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
SortedSet<String> ret = new TreeSet<>();
|
||||||
return new Taal(resultaat);
|
resultaat.stream().filter(r -> r.length() < maxLength).forEach(ret::add);
|
||||||
|
return new Taal(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Tuple<X, Y> {
|
public class Tuple<X, Y> {
|
||||||
|
|||||||
@@ -149,13 +149,13 @@ public class Test {
|
|||||||
// expr5: "(baa | baa)+ (a|b)*"
|
// expr5: "(baa | baa)+ (a|b)*"
|
||||||
RegExp expr5 = expr4.punt(all);
|
RegExp expr5 = expr4.punt(all);
|
||||||
|
|
||||||
System.out.println("taal van (baa):\n" + expr1.getTaal(5));
|
// 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 (bb):\n" + expr2.getTaal(5));
|
||||||
System.out.println("taal van (baa | bb):\n" + expr3.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 (a|b)*:\n" + all.getTaal(5));
|
||||||
System.out.println("taal van (baa | bb)+:\n" + expr4.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 | bb)+ (a|b)*:\n" + expr5.getTaal(6));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -477,7 +477,6 @@ public class Test {
|
|||||||
DFA<String> dfa = ndfa.toDFA();
|
DFA<String> dfa = ndfa.toDFA();
|
||||||
|
|
||||||
Graph.generateImage(dfa, "Dfa");
|
Graph.generateImage(dfa, "Dfa");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void traverseRegExp(RegExp r) {
|
public static void traverseRegExp(RegExp r) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.imegumii.ui;
|
|||||||
|
|
||||||
import com.imegumii.*;
|
import com.imegumii.*;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.apache.xpath.SourceTree;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -130,9 +131,11 @@ public class GraphPanel extends JPanel {
|
|||||||
Graph.generateImage(mini, "mcdfa");
|
Graph.generateImage(mini, "mcdfa");
|
||||||
|
|
||||||
TabPanel.Instance().addGraph("DFA: mcdfa." + name, new File("images/mcdfa.png"), mini);
|
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);
|
StatusPanel.Instance().setStatus("Done", 100);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public class InputPanel extends JPanel {
|
|||||||
|
|
||||||
RegExp regex = new RegExp();
|
RegExp regex = new RegExp();
|
||||||
regex = regex.naarRegExp(regS);
|
regex = regex.naarRegExp(regS);
|
||||||
|
System.out.println(regex.getTaal(4, 10));
|
||||||
|
|
||||||
StatusPanel.Instance().setStatus("Converting REGEX to NDFA", 40);
|
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);
|
StatusPanel.Instance().setStatus("Converting REGEX to NDFA", 40);
|
||||||
RegExp regex = (RegExp) p;
|
RegExp regex = (RegExp) p;
|
||||||
|
|
||||||
System.out.println(regex.getTaal(10));
|
// System.out.println(regex.getTaal(10));
|
||||||
|
|
||||||
NDFA<String> ndfa = ThompsonConverter.convert(regex);
|
NDFA<String> ndfa = ThompsonConverter.convert(regex);
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user