That structure used to be rigidly enforced, but it's been slowly relaxed over time to be more flexible. Nowadays most of the flow commands are superfluous and you could write an entire bot without using any. Unfortunately I don't remember the specifics, but it's something like store, inc and dec fizzle (they remove values from the stack, but don't cause changes to memory) if the top value on the boolean stack is false. A cond statement clears the boolstack and sets it to true. start logically ANDs all the values on the boolstack together, and stop sets the boolstack to false.
Or something like that There's a topic somewhere Eric explained how it works, but I don't know where it lives. The wiki is probably out of date anymore.