LRIP
Jump to navigation
Jump to search
LRIP is a stack-based esolang created by user:Lebster
Commands
| Command | Explanation |
|---|---|
| L | Bitshift top of stack to the left |
| R | Bitshift top of stack to the right |
| I | Increment top of stack by 1 |
| P | Print top of stack as ASCII |
| + | Push 0 to top of stack |
| - | Pop from top of stack |
| k | Push user input ASCII code to top of stack |
| ( | Start loop |
| ) | End loop |
Examples
Hello world
ILLLILLLP+ILILLLILLIP+ILILLILILLPP+ILILLILILILIP+ILLLLLP+ILILILLILILIP+ILILLILILILIP+ILILILLLILP+ILILLILILLP+ILILLLILLP
Alphabet
ILLLLLLIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIPIP
Implementations
Python Interpreter
import sys
if len(sys.argv) != 2: print('Please input a file name')
else:
filename = sys.argv[1].lstrip()
with open(filename, 'r') as file: program = list(file.read().replace('\n', '').lower())
stack = [0]
pos = -1
while pos < len(program) - 1:
pos += 1;
char = program[pos]
if char == 'l': stack[0] = stack[0] << 1
elif char == 'r': stack[0] = stack[0] >> 1
elif char == 'i': stack[0] += 1
elif char == 'p': print(chr(stack[0]), end='')
elif char == '+': stack.insert(0, 0)
elif char == '-':
stack.pop(0)
if not stack: stack=[0]
elif char == 'k': stack.insert(0, ord(input('? ')))
elif char == '(':
if stack[0] == 0:
opened = 0;
pos += 1
while pos < len(program):
if program[pos] == ')' and opened == 0: break
elif program[pos] == '(': opened += 1
elif program[pos] == ')': opened -= 1
pos += 1
elif char == ')':
if stack[0] != 0:
closed = 0;
pos -= 1
while pos >= 0:
if program[pos] =='(' and closed == 0: break
elif program[pos] == ')': closed += 1
elif program[pos] == '(': closed -= 1
pos -= 1
Usage
LRIP.py <file name>