We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

Telephone

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.

Telephone is a language developed by User:Broxol that is designed for multiple functions assigned to one letter, though, that’s not really important. It currently has no place to run it yet, but I’m working on it.

Note: If you want to change your code, you should change the code variable. I think that would be pretty obvious, but just in case.

Syntax

Command Description
_p…| Prints directly to the console
a…|b Creates str var and assigns it a string
pb| Prints str var
p|v Prints num var
p|u_ Prints list
ppv Allows user input and maps it to var
vk0 Defines a num var
vk+1 Adds to var
vk-1 Subtracts from var
vk*1 Multiplies var
vk%1 Divides var
vk$1 Modulus
[…] Loop
fk[…] For loop that runs k times
fu[…] Iterates through list u
& / # & is an auto assigned num and str var that is the element in an iteration of a list, # is a num var that is autoassigned for the purpose of index in an iteration of a list
lu(1^2^3^) Creates list and assigns it values [1, 2, 3]

Interpreter

english_dict = {"&":""}
variables = {"&": 0,"#": 0}
loops = []
lists = {}
iterring = False
iterlist = False
code = ""
code = list(code)
for item in code:
    try:
        code[code.index(item)] = int(item)
    except ValueError:
        pass
print(code)
i = 0
while i < len(code):
    if code[i] == "p":
        if code[i + 1] == "p":
                grate = input()
                if grate.isdigit():
                    variables[code[i + 2]] = int(grate)
                else:
                    english_dict[code[i + 2]] = str(grate)
                i += 3
        else:
            if code[i + 1] == "|":
                if code[i + 2] in variables:
                    print(variables[code[i + 2]])
                    i += 3
                elif code[i + 2] in lists:
                    if code[i + 3] == "_":
                        print(lists[code[i + 2]])
                        i += 4
                    elif code[i + 3] in variables:
                        print(lists[code[i + 2]][variables[code[i + 3]]])
                        i += 4
                    else:
                        store = code[i + 2]
                        i += 2
                        read = []
                        while code[i] != ";":
                            i += 1
                            if code[i] != ";":
                                read.append(str(code[i]))
                        read = "".join(read)
                        read = int(read)
                        print(lists[store][read])
                        i += 1
            else:
                if code[i - 1] == "_":
                    read = []
                    while code[i] != "|":
                        i += 1
                        if code[i] != "|":
                            read.append(str(code[i]))
                    read = "".join(read)
                    print(read)
                else:
                    while code[i] != "|":
                        i += 1
                        if code[i] != "|":
                            print(english_dict[code[i]])
    if code[i] == "?":
        if code[i + 1] == "?":
            #Your adding functionality for jumping to the end if a - is put after this
            if code[i + 2] == "-":
                i = len(code) - 1
            elif code[i + 2] == "_":
                i += 5
                while i != "_":
                    i += 1
            elif code[i + 2] == "v":
                i = variables[code[i + 3]]
            else:
                i = code[i + 2]
        else:
            if code[i + 2] in variables:
                if code[i + 3] == "=":
                    if variables[code[i + 1]] == variables[code[i + 2]]:
                        i += 4
                    else:
                        while code[i] != "/":
                            i += 1
                elif code[i + 3] == ">":
                    if variables[code[i + 1]] > variables[code[i + 2]]:
                        i += 4
                    else:
                        while code[i] != "/":
                            i += 1
                elif code[i + 3] == "<":
                    if variables[code[i + 1]] < variables[code[i + 2]]:
                        i += 4
                    else:
                        while code[i] != "/":
                            i += 1
            else:
                logstore = code[i + 2]
                varstore = code[i + 1]
                i += 2
                store = []
                while code[i] != ",":
                    i += 1
                    if code[i] != ",":
                        store.append(str(code[i]))
                store = int("".join(store))
                if logstore == "=":
                    if variables[varstore] == store:
                        i += 1
                    else:
                        while code[i] != "/":
                            i += 1
                elif logstore == ">":
                    if variables[varstore] > store:
                        i += 1
                    else:
                        while code[i] != "/":
                            i += 1
                elif logstore == "<":
                    if variables[varstore] < store:
                        i += 1
                    else:
                        while code[i] != "/":
                            i += 1
    if code[i] == "@":
        if code[i + 3] == "=":
            if english_dict[code[i + 1]] == english_dict[code[i + 2]]:
                i += 4
            else:
                while code[i] != "/":
                    i += 1
        elif code[i + 3] == "I":
            if english_dict[code[i + 1]] in english_dict[code[i + 2]]:
                i += 4
            else:
                while code[i] != "/":
                    i += 1
        else:
            assert 0 == 1, "Invalid measure"
    if code[i] == "a":
        temp = []
        while code[i] != "|":
            i += 1
            if code[i] != "|":
                temp.append(code[i])
        temp = "".join(temp)
        english_dict[code[i + 1]] = temp
        i += 2
    if code[i] == "[":
        if code[i - 2] == "f":
            if code[i - 1] in variables:
                iterr = variables[code[i - 1]]
            elif code[i - 1] in lists:
                iterlistname = code[i - 1]
                iterr = len(lists[code[i - 1]])
                iterlist = True
            else:
                iterr = code[i - 1]
            variables["#"] = 0
            if iterlist == True:
                variables["&"] = lists[code[i - 1]][0]
                english_dict["&"] = lists[code[i - 1]][0]
            iterring = True
    if code[i] == "]":
        if iterring == True:
            variables["#"] = variables["#"] + 1
            if iterlist == True:
                try:
                    variables["&"] = lists[iterlistname][variables["#"]]
                    english_dict["&"] = lists[iterlistname][variables["#"]]
                except IndexError:
                    pass
            if variables["#"] >= iterr:
                i += 1
                iterring = False
                iterlist = False
            else:
                while code[i] != "[":
                    i -= 1
        else:
            while code[i] != "[":
                i -= 1
    if code[i] == "v":
        if code[i + 2] == "+":
            if code[i + 3] in variables:
                variables[code[i + 1]] += variables[code[i + 3]]
            else:
                variables[code[i + 1]] += code[i + 3]
            i += 4
        elif code[i + 2] == "-":
            if code[i + 3] in variables:
                variables[code[i + 1]] -= variables[code[i + 3]]
            else:
                variables[code[i + 1]] -= code[i + 3]
            i += 4
        elif code[i + 2] == "*":
            if code[i + 3] in variables:
                variables[code[i + 1]] *= variables[code[i + 3]]
            else:
                variables[code[i + 1]] *= code[i + 3]
            i += 4
        elif code[i + 2] == "%":
            if code[i + 3] in variables:
                variables[code[i + 1]] = round(variables[code[i + 1]] / variables[code[i + 3]])
            else:
                variables[code[i + 1]] = round(variables[code[i + 1]] / code[i + 3])
            i += 4
        elif code[i + 2] == "$":
            if code[i + 3] in variables:
                variables[code[i + 1]] %= variables[code[i + 3]]
            else:
                variables[code[i + 1]] %= code[i + 3]
            i += 4
        elif code[i + 2] in lists:
            store = code[i + 2]
            storevar = code[i + 1]
            i += 2
            read = []
            while code[i] != ";":
                i += 1
                if code[i] != ";":
                    read.append(str(code[i]))
            read = "".join(read)
            read = int(read)
            variables[storevar] = lists[store][read]
            i += 1
        elif code[i + 2] in variables:
            variables[code[i + 1]] = variables[code[i + 2]]
            i += 3
        else:
            variables[code[i + 1]] = code[i + 2]
            i += 3
    if code[i] == "l":
        if code[i + 1] != "_":
            store = code[i + 1]
            i += 2
            curitem = []
            auxlist = []
            while code[i] != ")":
                i += 1
                if code[i] != "^":
                    curitem.append(str(code[i]))
                else:
                    if code[i] != ")":
                        curitem = "".join(curitem)
                        if curitem.isdigit():
                            curitem = int(curitem)
                        auxlist.append(curitem)
                        curitem = []
            lists[store] = auxlist
            print(lists)
        else:
            if code[i + 2] == "a":
                if code[i + 3] in variables:
                    lists[code[i + 4]].append(variables[code[i + 3]])
                    i += 5
                else:
                    i += 2
                    read = []
                    while code[i] != ";":
                        i += 1
                        if code[i] != ";":
                            read.append(str(code[i]))
                    read = "".join(read)
                    if read.isdigit():
                        read = int(read)
                    i += 1
                    lists[code[i]].append(read)
                    i += 1
            elif code[i + 2] == "d":
                i += 2
                read = []
                while code[i] != ";":
                    i += 1
                    if code[i] != ";":
                        read.append(str(code[i]))
                read = "".join(read)
                read = int(read)
                i += 1
                lists[code[i]].pop(read)
                i += 1
            elif code[i + 2] == "j":
                i += 2
                if code[i + 1] in variables:
                    storage = variables[code[i + 1]]
                    i += 1
                    read = []
                else:
                    read = []
                    while code[i] != ";":
                        i += 1
                        if code[i] != ";":
                            read.append(str(code[i]))
                    read = "".join(read)
                    if read.isdigit():
                        read = int(read)
                    storage = read
                    read = []
                while code[i] != "%":
                    i += 1
                    if code[i] != "%":
                        read.append(str(code[i]))
                read = "".join(read)
                read = int(read)
                i += 1
                print(i)
                lists[code[i]].insert(read, storage)
                i += 1
            elif code[i + 2] == "l":
                variables[code[i + 4]] = len(lists[code[i + 3]])
                i += 5
            elif code[i + 2] == "r":
                lists[code[i + 3]] = lists[code[i + 3]][::-1]
                i += 4
            elif code[i + 2] == "p":
                lists[code[i + 3]][variables[code[i + 4]]] = variables[code[i + 5]]
                i += 6
    if code[i] == "i":
        iterate = True
        wow = 0
        iterlist = code[i + 1]
        savelist = list(lists[code[i + 1]])
        variables["&"] = lists[iterlist][wow]
        i += 2
    if code[i] == "s":
        if code[i + 1] == "s":
            lists[code[i + 3]] = list(english_dict[code[i + 2]])
            i += 4
        else:
            tempvar = variables[code[i + 1]]
            variables[code[i + 1]] = variables[code[i + 2]]
            variables[code[i + 2]] = tempvar
    if code[i] == "j":
        if code[i + 1] == "j":
            english_dict[code[i + 2]] = english_dict[code[i + 3]] + english_dict[code[i + 4]]
            i += 5
        else:
            tempvar = "".join(lists[code[i + 1]])
            english_dict[code[i + 2]] = tempvar
            i += 3
    if code[i] == "f":
        i += 2
    elif code[i] == "." or code[i] == "|" or code[i] == "_" or code[i] == "i" or code[i] == "/" or code[i] == "[" or code[i] == ")" or code[i] == "(" or code[i] == "{":
        i += 1