Or++
Jump to navigation
Jump to search
Or++ is a minimalist esoteric programming language created by User:TheCanon2. It is a superset of or.
Commands
Or++ has a single stack. Or++ has 6 commands.
Command | Hex | Action |
---|---|---|
f | 0x20 0x66 | Push false to the stack |
t | 0x20 0x74 | Push true to the stack |
p | 0x20 0x70 | Pop the top of the stack |
r | 0x20 0x73 | Reverse the entire stack |
h | 0x20 0x31 | Halt if the stack is empty |
j | 0x20 0x72 | Jump to the first instruction |
Or++ also accepts an input of t
and f
commands, which are pushed to the stack.
Examples
Quine
f
Collatz sequence
Translated_from cyclic_tag system f t f f f t r p r h t f f r p r h t f f t f f t f f r p r h r p r h r p r h r p r h j
Computational class
If Or++ had conditional checking for true and false, it would be Turing-complete because it would be possible to compile a cyclic tag system into Or++.
f
Would append 0 to the data string.
t
Would append 1 to the data string.
r p r h
Would delete the first bit of the data string.
j
Would repeat the loop.
Implementations
The following Python script is an interpreter.
prgm = " " # Python doesn't read spaces at the beginning of an input init = " " stack = [] prgm += input('>prgm ') init += input('>i ') for i in range(0, len(init), 2): j = ''.join([init[i],init[i+1]]) if j == " f": stack.append(" f") elif j == " t": stack.append(" t") else: pass # Executes the program inst = 0 while inst < (len(prgm)/2): cmd = ''.join([prgm[2*inst], prgm[2*inst+1]]) if cmd == " f": stack.append(" f") elif cmd == " t": stack.append(" t") elif cmd == " p": stack.pop() elif cmd == " r": flip = [] # reverse() doesn't work for me for i in range(len(stack)-1, -1, -1): flip.append(stack[i]) stack = flip elif cmd == " h": if len(stack) == 0: break elif cmd == " j": inst = -1 else: pass inst += 1 print(stack)