Instructions:: = Instruction +/ ws
Instruction = Instruction:: (Tags:: Tag*) InstructionX
+ | ^"head" ";" /ws
| ^"tail" ";" /ws
Tag = ^"[a]" ws | ^"[b]" ws
| ^"[!a]" ws | ^"[!b]" ws
- | ^"[olc=0]" ws
+ | ^"[d]" ws
| ^"[*]" ws
| ^"[Rq]" ws
InstructionX = (() | ^"[T]" ws) ^"nop" ";" /ws
| "set" ^"word" "=" Literal ";" /ws
| ^"shift" Literal ";" /ws
| ^"flush" ";" /ws
+ | ^"abort" ";" /ws
Flags:: = (^"0") | (^"1") | (^"a" | ^"b" | ^"c" | ^"!a" | ^"!b" | ^"!c") +/ (ws "|" ws)