aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: cad48d71e8121f8e8823c48abe620de9b6920680 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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]
```