aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authortomsmeding <hallo@tomsmeding.nl>2015-12-17 20:30:04 +0100
committertomsmeding <hallo@tomsmeding.nl>2015-12-17 20:36:22 +0100
commitf46e00474498c5377d3aa050507466fc377bced5 (patch)
treed97a97c65a591bc5594a15bc9b2adb65a1c199de /README.md
parent96813b6b690076ef904995a90395baafa5c4bd41 (diff)
fix readme
Diffstat (limited to 'README.md')
-rw-r--r--README.md54
1 files changed, 54 insertions, 0 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 &mdash; 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]
+```