/**
* TODO: This does not work yet!
*/
public RegExp generateRegExp() {
RegExp regExp;
HashMap<StatePairOM, RegExp> table = new HashMap<StatePairOM, RegExp>();
ArrayList<String> reachable = new ArrayList<String>(this.getAllReachableStates());
for (int k = 0; k < reachable.size(); k++) {
for (int i = 0; i < reachable.size(); i++) {
for (int j = 0; j < reachable.size(); j++) {
StatePairOM keyij = new StatePairOM(reachable.get(i), reachable.get(j));
if (k == 0) { // First entry.
for (Transition t : this.getTransitions(reachable.get(i), reachable.get(j))) {
this.addExpressionToTableEntry(new RegExpCharacter(t.getLabel()), table, keyij);
}
if (reachable.get(i).equals(reachable.get(j))) {
this.addExpressionToTableEntry(new RegExpLambda(), table, keyij);
}
} else {
StatePairOM keyik = new StatePairOM(reachable.get(i), reachable.get(k));
StatePairOM keykk = new StatePairOM(reachable.get(k), reachable.get(k));
StatePairOM keykj = new StatePairOM(reachable.get(k), reachable.get(j));
RegExp rik = table.get(keyik);
RegExp rkk = table.get(keykk);
RegExp rkj = table.get(keykj);
RegExp newreg;
if (rkk == null) {
rkk = new RegExpEmpty();
}