diff --git a/README.md b/README.md index 286bb54..0820bd0 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # Stupid Worm Languag -- program space is an arbitrary sized grid of bytes -- the worm starts as just a head `@` +- program space is an arbitrary sized grid +- the worm starts where you place the worm head @ - as it passes over commands, they get moved to the back of the worm - values get pushed to stack (eaten) when passed over, worm body length increases - the program gets rearranged every time the worm executes it ## commands ``` -+- pop 2 values, push sum/difference (uses the order they are popped, so `0-` negates the top of the stack) ++- pop 2 values *, push sum/difference (uses the order they are popped, so `0 -` negates the top of the stack) ><^v change direction 0..9 push number to stack /\ pop stack, reflect to the side if not zero @@ -15,6 +15,5 @@ = duplicate top of stack ! pop and write output as ascii char " pop and write output as number -_ push a space character -all other characters are pushed as-is ``` +* pop when stack is empty yields zero diff --git a/programs/hello_world.worm b/programs/hello_world.worm deleted file mode 100644 index 996ec08..0000000 --- a/programs/hello_world.worm +++ /dev/null @@ -1 +0,0 @@ -!!!!!!!!!!!!!Hello,_world+1_@< \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 259d4fc..bcf870b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -225,8 +225,10 @@ impl SandWormInterpreter { } } b' ' | 0 => dont_push_instruction = true, - b'_' => self.worm_in.push(b' '), - other => self.worm_in.push(other), + other => { + self.worm_in.push(other); + dont_push_instruction = true; + } } if !dont_push_instruction { self.worm_out.insert(0, instruction);