progress of 7/1
This commit is contained in:
parent
0c0dd043ec
commit
84fa1cf9d7
2 changed files with 29 additions and 26 deletions
|
|
@ -3,6 +3,7 @@ package ab1.impl.GRUPPE;
|
||||||
import ab1.FinalizedStateException;
|
import ab1.FinalizedStateException;
|
||||||
import ab1.NFA;
|
import ab1.NFA;
|
||||||
import ab1.Transition;
|
import ab1.Transition;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
@ -11,16 +12,24 @@ import java.util.Set;
|
||||||
public class NFAImpl implements NFA {
|
public class NFAImpl implements NFA {
|
||||||
private Set<String> states;
|
private Set<String> states;
|
||||||
private Set<Transition> transitions;
|
private Set<Transition> transitions;
|
||||||
|
|
||||||
private String initialState;
|
private String initialState;
|
||||||
private Set<String> acceptingStates;
|
private Set<String> acceptingStates;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private Set<Character> alphabet;
|
||||||
|
|
||||||
private boolean isFinalized;
|
private boolean isFinalized;
|
||||||
|
|
||||||
public NFAImpl(String startState) {
|
public NFAImpl(String startState) {
|
||||||
this.initialState = startState;
|
this.initialState = startState;
|
||||||
this.states = new HashSet<>();
|
this.states = new HashSet<>();
|
||||||
|
this.states.add(startState);
|
||||||
this.transitions = new HashSet<>();
|
this.transitions = new HashSet<>();
|
||||||
this.acceptingStates = new HashSet<>();
|
this.acceptingStates = new HashSet<>();
|
||||||
|
this.alphabet = new HashSet<>();
|
||||||
this.isFinalized = false;
|
this.isFinalized = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -34,7 +43,6 @@ public class NFAImpl implements NFA {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getAcceptingStates() {
|
public Set<String> getAcceptingStates() {
|
||||||
|
|
||||||
return this.acceptingStates;
|
return this.acceptingStates;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -48,6 +56,8 @@ public class NFAImpl implements NFA {
|
||||||
if (this.isFinalized) {
|
if (this.isFinalized) {
|
||||||
throw new FinalizedStateException();
|
throw new FinalizedStateException();
|
||||||
} else if (!this.transitions.contains(transition)) {
|
} else if (!this.transitions.contains(transition)) {
|
||||||
|
// add symbol to alphabet. If it is already in the alphabet, nothing happens
|
||||||
|
this.alphabet.add(transition.readSymbol());
|
||||||
this.transitions.add(transition);
|
this.transitions.add(transition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -57,29 +67,11 @@ public class NFAImpl implements NFA {
|
||||||
if (this.isFinalized) {
|
if (this.isFinalized) {
|
||||||
throw new FinalizedStateException();
|
throw new FinalizedStateException();
|
||||||
} else if (!this.states.contains(state)) {
|
} else if (!this.states.contains(state)) {
|
||||||
|
this.states.add(state);
|
||||||
this.acceptingStates.add(state);
|
this.acceptingStates.add(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// warum gabs die methode nicht schon vorher? weil i a idiot bin und man die direct adden kann.
|
|
||||||
/*
|
|
||||||
public void addAllStates(Set<String> states) throws FinalizedStateException {
|
|
||||||
if (this.isFinalized) {
|
|
||||||
throw new FinalizedStateException();
|
|
||||||
} else {
|
|
||||||
this.states.addAll(states);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addAllTransitions(Set<Transition> transitions) throws FinalizedStateException {
|
|
||||||
if (this.isFinalized) {
|
|
||||||
throw new FinalizedStateException();
|
|
||||||
} else {
|
|
||||||
this.transitions.addAll(transitions);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// #TODO
|
// #TODO
|
||||||
@Override
|
@Override
|
||||||
public NFA union(NFA other) throws FinalizedStateException {
|
public NFA union(NFA other) throws FinalizedStateException {
|
||||||
|
|
@ -155,14 +147,23 @@ public class NFAImpl implements NFA {
|
||||||
// #TODO
|
// #TODO
|
||||||
@Override
|
@Override
|
||||||
public NFA complement() throws FinalizedStateException {
|
public NFA complement() throws FinalizedStateException {
|
||||||
|
if(!this.isFinalized){
|
||||||
|
throw new FinalizedStateException();
|
||||||
|
}
|
||||||
|
|
||||||
|
NFAImpl complementNFA = new NFAImpl(this.initialState);
|
||||||
|
complementNFA.states.addAll(this.states);
|
||||||
|
complementNFA.transitions.addAll(this.transitions);
|
||||||
|
|
||||||
|
/*
|
||||||
|
for(String state : this.states){
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void turnNFAIntoDFA(NFAImpl nfa) {
|
|
||||||
// #TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinalized() {
|
public boolean isFinalized() {
|
||||||
return isFinalized;
|
return isFinalized;
|
||||||
|
|
@ -176,7 +177,9 @@ public class NFAImpl implements NFA {
|
||||||
// #TODO
|
// #TODO
|
||||||
@Override
|
@Override
|
||||||
public boolean isFinite() {
|
public boolean isFinite() {
|
||||||
//check if finite
|
//transitions={fromState==toState}
|
||||||
|
//states={A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}
|
||||||
|
//obergrenze = anzahl der states (26)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
Reference in a new issue