diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 4a14937..5312a54 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -46,26 +46,26 @@
- {
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "full.screen.before.presentation.mode": "false",
+ "git-widget-placeholder": "5-top-skill-issue-raphael",
+ "ignore.virus.scanning.warn.message": "true",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "project.structure.last.edited": "Project",
+ "project.structure.proportion": "0.0",
+ "project.structure.side.proportion": "0.0",
+ "settings.editor.selected.configurable": "preferences.lookFeel",
+ "vue.rearranger.settings.migration": "true"
}
-}]]>
+}
diff --git a/src/main/java/ab1/impl/GRUPPE/NFAImpl.java b/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
index a12af3e..3866f7f 100644
--- a/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
+++ b/src/main/java/ab1/impl/GRUPPE/NFAImpl.java
@@ -15,6 +15,7 @@ public class NFAImpl implements NFA {
private Set alphabet;
+ private Set completeAlphabet;
private boolean isFinalized;
public NFAImpl(String startState) {
@@ -24,9 +25,9 @@ public class NFAImpl implements NFA {
this.transitions = new HashSet<>();
this.acceptingStates = new HashSet<>();
this.alphabet = new HashSet<>();
- Set completeAlphabet = new HashSet<>();
- for (char ch = 'a'; ch <= 'z'; ch++) {
- completeAlphabet.add(ch);
+ this.completeAlphabet = new HashSet<>();
+ for(int i='a';i<='z';i++){
+ completeAlphabet.add((char)i);
}
this.isFinalized = false;
@@ -344,6 +345,8 @@ public class NFAImpl implements NFA {
nfa.addAllTransitions(this.transitions);
nfa.addAllAcceptingStates(this.acceptingStates);
+ nfaAddTrap(nfa);
+
NFAImpl fakeNFA = convertNFAtoDFA(nfa);
// state -> accepting
@@ -533,4 +536,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 b98f6e4..cff7748 100644
Binary files a/target/classes/ab1/impl/GRUPPE/NFAImpl.class and b/target/classes/ab1/impl/GRUPPE/NFAImpl.class differ