Sie können einfache Zustandsübergänge mit einer einzelnen Zustandsvariablen implementieren, zum Beispiel, wenn Sie die Zustände start-> part1-> part2-> end durchlaufen möchten, können Sie eine Enumeration verwenden, um den aktuellen Zustand zu verfolgen und Verwenden Sie eine switch-Anweisung für den Code, den Sie in jedem Status ausführen möchten.
enum state { start=1, part1, part2, end} mystate;
// ...
mystate = start;
do {
switch (mystate) {
case start:
// ...
case part1:
// ...
case part2:
// ...
if (part2_end_condition) mystate = end; // state++ will also work
// Note you could also set the state back to part1 on some condition here
// which creates a loop
break;
}
} while (mystate != end);
Für komplexere Zustandsübergänge, die von verschiedenen Variablen abhängen, sollten Sie Tabellen/Arrays wie folgt verwenden:
var1 var2 var_end next_state
0 0 0 state1
0 1 0 state2
1 0 0 state3
1 1 0 state4
-1 -1 1 state_end // -1 represents "doesn't matter" here
Welche http: //en.wikipedia. org/wiki/Drachen_buch? –
Sie müssen uns ein bisschen mehr geben, um weiterzumachen. Welchen Aspekt der Umsetzung von Zustandsübergängen finden Sie schwierig? –
Warum verwenden Sie LEX nicht? – qrdl