Автоматом в тех же терминах - для сравнения с циклом Дейкстры:
## Код:
```
state := get;
WHILE state # halt DO
  CASE state OF
  | get: GetCommand(cmd); IF cmd # stop THEN state := exec ELSE state := halt END
  | exec: Execute(cmd, error); IF error = no_error THEN state := get ELSE state := halt END
  END
END
```
Похоже, цикл Дейкстры рулит...