diff --git a/src/com/imegumii/Automata.java b/src/com/imegumii/Automata.java index d389fa7..b5472d3 100644 --- a/src/com/imegumii/Automata.java +++ b/src/com/imegumii/Automata.java @@ -10,11 +10,11 @@ import java.util.TreeSet; */ public class Automata { - private Set> transistions; + protected Set> transistions; - private SortedSet states; - private SortedSet beginStates; - private SortedSet eindStates; + protected SortedSet states; + protected SortedSet beginStates; + protected SortedSet eindStates; private SortedSet symbols; @@ -50,21 +50,7 @@ public class Automata { public void printTransitions () { transistions.forEach(System.out::println); + } - public boolean accept(String stringToSearch) { - T currentState; - states.forEach((s) -> { - System.out.println("State is " + s); - }); - beginStates.forEach(System.out::println); - eindStates.forEach(System.out::println); - - for (T beginState : beginStates) { - currentState = beginState; - // process currentState. - System.out.println(beginState); - } - return false; - } } diff --git a/src/com/imegumii/DFA.java b/src/com/imegumii/DFA.java new file mode 100644 index 0000000..4314df7 --- /dev/null +++ b/src/com/imegumii/DFA.java @@ -0,0 +1,46 @@ +package com.imegumii; + +import java.util.Iterator; +import java.util.SortedSet; + +/** + * Created by imegumii on 01/05/2017. + */ +public class DFA extends Automata { + + public DFA(Character[] symbols) { + super(symbols); + } + + public DFA(SortedSet symbols) { + super(symbols); + } + + boolean accepteer(String s) { + // because this is a DFA, assume first is always beginstate and endstate. + T beginState = this.beginStates.first(); + T eindState = this.eindStates.first(); + T currentState = this.beginStates.first(); + for (int i = 0; i < s.length(); i++) { + System.out.println(s.charAt(i)); + + for (Transition tr : this.transistions) { + System.out.println(tr); + System.out.println("Current state is : " +currentState); + if (currentState.equals(tr.vanState)) { // this is our current state + System.out.println("This is our current state, checking if symbols match and advancing"); + if (s.charAt(i) == tr.symbol) { + System.out.println("Theyre equal, currentState becomes naarState"); + currentState = tr.naarState; + break; + } + } + } + } + return (currentState == eindState); + } + + void geefTaalTotLengte(int n) { + + } +} diff --git a/src/com/imegumii/Main.java b/src/com/imegumii/Main.java index dd0d800..7dafb8e 100644 --- a/src/com/imegumii/Main.java +++ b/src/com/imegumii/Main.java @@ -1,7 +1,6 @@ package com.imegumii; import com.imegumii.codevandocent.*; -import com.sun.source.util.Trees; import java.util.TreeSet; @@ -12,22 +11,25 @@ public class Main { stringsToParse.add("abbaa"); stringsToParse.add("babaa"); stringsToParse.add("abbaaabaab"); + stringsToParse.add("ababababababaab"); Character [] characters = {'a', 'b'}; - Automata myAutomata = new Automata(characters); + DFA myAutomata = new DFA(characters); myAutomata.addTransition(new Transition("q0", 'a', "q1")); myAutomata.addTransition(new Transition("q1", 'b', "q2")); - myAutomata.addTransition(new Transition("q2", 'b', "q0")); + myAutomata.addTransition(new Transition("q2", 'b', "q3")); + + myAutomata.addTransition(new Transition("q3", "q0")); myAutomata.defineAsStartState("q0"); - myAutomata.defineAsEndState("q2"); + myAutomata.defineAsEndState("q3"); myAutomata.printTransitions(); stringsToParse.forEach((s) -> { - boolean result = myAutomata.accept(s); + boolean result = myAutomata.accepteer(s); System.out.println("string " + s + " fully parsed, result: " + result); }); } diff --git a/src/com/imegumii/NDFA.java b/src/com/imegumii/NDFA.java new file mode 100644 index 0000000..d86d410 --- /dev/null +++ b/src/com/imegumii/NDFA.java @@ -0,0 +1,16 @@ +package com.imegumii; + +import java.util.SortedSet; + +/** + * Created by imegumii on 01/05/2017. + */ +public class NDFA extends Automata { + public NDFA(Character[] symbols) { + super(symbols); + } + + public NDFA(SortedSet symbols) { + super(symbols); + } +} diff --git a/src/com/imegumii/Transition.java b/src/com/imegumii/Transition.java index 956c3d2..9b5af88 100644 --- a/src/com/imegumii/Transition.java +++ b/src/com/imegumii/Transition.java @@ -43,5 +43,6 @@ public class Transition implements Comparable" + this.naarState; + } }