diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 54 |
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 — 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] +``` |