I have a new programming language called Brussels-Sprout. Brussels-Sprout functions in an array of 256 boolean values, has one instruction pointer, and one "bit index".
After each (non-branching) instruction is executed, the instruction pointer is incremented by one.
If the bit index is outside the bounds of the array, it should be reset to 0.
Brussels-Sprout uses the following keywords, which are always lowercase:
chew
- Invert the value in the array at the bit index. (flip the bit at the bit index)
swallow
- Increment the bit index.
vomit
- Decrement the bit index.
complain
- Output the bit at the bit index to stdout, or equivalent output log.
feedtodog
- If the bit at the bit index is 0, skip the next instruction. Otherwise, increment instruction pointer by 1.
playwithfood
- If the bit at the bit index is 1, jump backwards 2 instructions. Otherwise, increment instruction pointer by 1.
I'm sure that this sounds like a very certain other turing-tarpit programming language. But since this programming language operates in boolean values and not bytes, I think it is different.
Your challenge is to write an interpreter for Brussels-Sprout. This is code golf, so shortest program wins!