aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md54
-rw-r--r--rip-lang.txt51
2 files changed, 54 insertions, 51 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..cad48d7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+Rip — a stack-based rip language
+=================================
+
+All stack items are signed bigints.
+
+- `0-9`: push value
+- `P`: pop
+- `S`: swap
+- `D`: duplicate
+- `i`: increment
+- `d`: decrement
+- `r`: pops the number of items to rotate anti-clockwise
+- `R`: pops the number of items to rotate clockwise
+- `l`: push length of stack (before this push)
+- `a` `s` `m` `q` `M` `p`: `+` `-` `*` `/` `%` `^` (add, subtract, multiply, quotient (integer), modulo, power)
+- `G` `L` `E`: greater, less, equal; booleans are 1 and 0, as you expect
+- `n`: not; equivalent to 0E
+- `[ ... ]`: syntactical; a codeblock
+- `I`: pops boolean, conditionally executing the codeblock that should follow the I, depending on the boolean (aka "if")
+- `W`: I, but then "while" instead of "if"
+- `o`: outputs the top value as an ascii char
+- `O`: outputs the top value as a number
+- `g`: gets a character and pushes the ascii value
+- `F<bla>[code]`: define a function named "bla" with the body "code"
+- `<bla>`: call the function named "bla"
+- `$`: outputs a stackdump
+- whitespace: nop
+- `'c`: pushes the ascii value of c
+- `#<file.rip>`: literally includes contents of 'file.rip' in-place
+
+
+Any error causes the interpreter to exit, saying "rip".
+
+
+Example code
+------------
+
+Fibonacci:
+
+```
+01
+1W[
+ DO
+ 9io
+ D3ra
+1]
+```
+
+
+Cat:
+
+```
+gD0dEnW[ogD0dEn]
+```
diff --git a/rip-lang.txt b/rip-lang.txt
deleted file mode 100644
index 60ba5e5..0000000
--- a/rip-lang.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-Rip -- a stack-based rip language
-=================================
-
-All stack items are signed bigints.
-
-0-9: push value
-P: pop
-S: swap
-D: duplicate
-i: increment
-d: decrement
-r: pops the number of items to rotate anti-clockwise
-R: pops the number of items to rotate clockwise
-l: push length of stack (before this push)
-a s m q M p: + - * / % ^ (add, subtract, multiply, quotient (integer), modulo, power)
-G L E: greater, less, equal; booleans are 1 and 0, as you expect
-n: not; equivalent to 0E
-[ ... ]: syntactical; a codeblock
-I: pops boolean, conditionally executing the codeblock that should follow the I, depending on the boolean (aka "if")
-W: I, but then "while" instead of "if"
-o: outputs the top value as an ascii char
-O: outputs the top value as a number
-g: gets a character and pushes the ascii value
-F<bla>[code]: define a function named "bla" with the body "code"
-<bla>: call the function named "bla"
-$: outputs a stackdump
-whitespace: nop
-
-'c: pushes the ascii value of c
-#<file.rip>: literally includes contents of 'file.rip' in-place
-
-
-Any error causes the interpreter to exit, saying "rip".
-
-
-Example code
-------------
-
-Fibonacci:
-
-01
-1W[
- DO
- 9io
- D3ra
-1]
-
-
-Cat:
-
-gD0dEnW[ogD0dEn]