SeeLlash
		
		
		
		Jump to navigation
		Jump to search
		
SeeLlash is an esolang that is created by User:AnotherUser05, which she finally wrote an interpreter for an esolang before making the page for it.
Overview
The language is somewhat inspired by Brainfuck, but only uses 2 values, which one of them cannot be modified directly, which is called the Stored value. The value you can directly modify (like adding or subtracting) is called the Current value.
| Command | Function | 
|---|---|
+ | 
Increment the Current value by 1 | 
- | 
Decrement the Current value by 1 | 
~ | 
Move the Current value to the Stored, leaving behind a 0 | 
` | 
Move the Stored value to the Current, leaving behind a 0 | 
^ | 
Swap the Current with the Stored value | 
, | 
Ask for a single character, and set the Current to the Unicode code point of it | 
. | 
Output the character at the Unicode code point of the Current value | 
; | 
Ask for a number, and set the Current to it | 
: | 
Output the Current | 
[ | 
Jump past the matching ] if the Current is 0
 | 
] | 
Jump back to the macthing [ if the Current is nonzero
 | 
( | 
Initializes a fixed loop, iterates the amount of times determined by the Stored value | 
) | 
Jump back to the matching ( if its still iterating
 | 
Examples
A+B Problem
;~;(+):
Truth Machine
;[:]:
Fibonacci sequence
+[^:(+)]
Fixed Repeating Output
;~+(:)-:
Hello, World!
++++++++~(+++++++++).~+++++++^(++++)+.+++++++..+++.~+++++++++++^(------)-.~++^(------).~+++++++++^(++++++)+.~++++++^(++++).+++.------.--------.~+++++++++++^(------)-.
Implementation
An interpreter in python that hopefully works
def build_loop_map(code,open,close):
    loop_stack = []
    loop_map = {}
    for i, char in enumerate(code):
        if char == open:
            loop_stack.append(i)
        elif char == close:
            start=loop_stack.pop()
            loop_map[start]=i
            loop_map[i]=start
    return loop_map
def execute(code):
    current = 0
    stored = 0
    index = 0
    code = list(code)
    brackets = build_loop_map(code,'[',']')
    parenthesis = build_loop_map(code,'(',')')
    iterations = {}
    while True:
        if index == len(code):
            break
        elif code[index] == "+":
            current+=1
        elif code[index] == "-":
            current-=1
        elif code[index] == "~":
            stored = current
            current=0
        elif code[index] == "`":
            current = stored
            stored=0
        elif code[index] == "^":
            current,stored=stored,current
        elif code[index] == ",":
            current=ord(input("single character"))
        elif code[index] == ".":
            print(chr(current))
        elif code[index] == ";":
            current=int(input("number"))
        elif code[index] == ":":
            print(current)
        elif code[index] == "[":
            if current == 0: index=brackets[index]
        elif code[index] == "]":
            if current != 0: index=brackets[index]-1
        elif code[index] == "(":
           if index not in iterations: iterations[index]=stored-1
           elif iterations[index]>0: iterations[index]-=1 
           else: 
               del iterations[index]
               index=parenthesis[index]
        elif code[index] == ")":
            if iterations[parenthesis[index]]>0: index=parenthesis[index]-1
            else: del iterations[parenthesis[index]]
        index+=1