diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 992f8f7..1bf0b51 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,15 +5,12 @@
-
+
-
-
-
-
+
@@ -22,7 +19,7 @@
@@ -43,49 +40,6 @@
"second": "2afc8825-f511-4d8a-8cc1-901875567c84"
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -99,11 +53,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -187,10 +158,10 @@
+
-
@@ -247,7 +218,7 @@
file://$PROJECT_DIR$/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
- 347
+ 447
diff --git a/src/main/java/ab1/impl/GRUPPE/NFAImpl.java b/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
index 03d74d2..f10ad5f 100644
--- a/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
+++ b/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
@@ -8,6 +8,7 @@ import lombok.Getter;
import java.util.*;
public class NFAImpl implements NFA {
+ private Set completeAlphabet; //contains the full Alphabet possible (currently all small letters, can be changed...)
private Set states;
private Set transitions;
@@ -26,6 +27,10 @@ public class NFAImpl implements NFA {
this.acceptingStates = new HashSet<>();
this.alphabet = new HashSet<>();
this.isFinalized = false;
+ this.completeAlphabet = new HashSet<>();
+ for(int i='a';i<='z';i++){
+ completeAlphabet.add((char)i);
+ }
}
@@ -309,6 +314,7 @@ public class NFAImpl implements NFA {
nfa.addAllTransitions(this.transitions);
nfa.addAllAcceptingStates(this.acceptingStates);
+ nfaAddTrap(nfa);
NFAImpl fakeNFA = convertNFAtoDFA(nfa);
// state -> accepting
@@ -496,4 +502,25 @@ public class NFAImpl implements NFA {
return str;
}
+ private void nfaAddTrap(NFAImpl input){
+ String trap = changeIfNecessary("TRAP", input.getStates());
+ input.states.add(trap);
+ Set newTransitions = new HashSet<>();
+ for(String state : input.getStates()){
+ for(char letter : completeAlphabet){
+ boolean hasTransition = false;
+ for(Transition transition : input.getTransitions()){
+ if(transition.fromState().equals(state)&&transition.readSymbol().equals(letter)){
+ hasTransition = true;
+ break;
+ }
+ }
+ if(!hasTransition){
+ newTransitions.add(new Transition(state, letter, trap));
+ }
+ }
+ }
+ input.addAllTransitions(newTransitions); //input.transitions.addAll(newTransitions);
+ }
+
}
diff --git a/target/classes/ab1/impl/GRUPPE/NFAImpl.class b/target/classes/ab1/impl/GRUPPE/NFAImpl.class
index a9e53a8..d306f69 100644
Binary files a/target/classes/ab1/impl/GRUPPE/NFAImpl.class and b/target/classes/ab1/impl/GRUPPE/NFAImpl.class differ