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>