addTransitionAt method
Implementation
void addTransitionAt(int index, Transition e) {
if (transitions.isEmpty) {
epsilonOnlyTransitions = e.isEpsilon;
} else if (epsilonOnlyTransitions != e.isEpsilon) {
log('ATN state $stateNumber has both epsilon and non-epsilon transitions.\n',
level: Level.SEVERE.value);
epsilonOnlyTransitions = false;
}
var alreadyPresent = false;
for (var t in transitions) {
if (t.target.stateNumber == e.target.stateNumber) {
if (t.label != null && e.label != null && t.label == e.label) {
// System.err.println("Repeated transition upon "+e.label()+" from "+stateNumber+"->"+t.target.stateNumber);
alreadyPresent = true;
break;
} else if (t.isEpsilon && e.isEpsilon) {
// System.err.println("Repeated epsilon transition from "+stateNumber+"->"+t.target.stateNumber);
alreadyPresent = true;
break;
}
}
}
if (!alreadyPresent) {
transitions.insert(index, e);
}
}