Skip to content

Trying to goto a previous line crashes python. #15

@IoIxD

Description

@IoIxD

main.py:

@with_goto
def run():
    keyDict = {"key1": "", "key1G": "", "key2": "", "key2G": "", "key3": "", "key3G": "", "key4": "", "key4G": "", "key5": "", "key5G": "", "key6": "", "key6G": "", "key7": "", "key7G": "", "key8": "", "key8G": "", "key9": "", "key9G": "", "key10": "", "key10G": "", "key11": "", "key11G": "", "key12": "", "key12G": "", "key13": "", "key13G": "", "key14": "", "key14G": "","key15": "", "key15G": ""}
    validParam = 0
    currentLine = 0
    debug = 0
    result = []
    with open("test.dgm") as fp:
            for i, line in enumerate(fp):
                    label .newLine
                    currentGoto = (int(currentLine) - 1)
                    if(currentGoto == -1):
                            currentGoto = 0
                    if(debug == 1):
                            print("Current Line:")
                            print(currentLine)
                            print("Current Goto:")
                            print(currentGoto)
                    if(i == currentGoto):
                            word_list = line.split()
                            cmd = word_list[0]
                            lineR = re.findall('"([^"]*)"', line)
                            lineRa = format(lineR)
                            lineRa = lineRa.replace("[","", 5)
                            lineRa = lineRa.replace("]","", 5)
                            lineRa = lineRa.replace("'","", 5)
                            try: 
                                    paramNumber = word_list[1]
                            except:
                                    print("")
                            
                            if(cmd == ":debug"):
                                    debug = 1
                                    currentLine += 1
                                    goto .newLine
                            
                            if(cmd == ":py"):
                                    if(debug == 1):
                                            print(":py")
                                    exec(lineRa)
                                    currentLine = lineRa
                                    goto .newLine
                                    
                            if(cmd == ":text"):
                                    if(debug == 1):
                                            print(":text")
                                    try:
                                            if(paramNumber >= "1"):
                                                    param1 = word_list[2]
                                                    param1 = param1.replace(":", " ")
                                                    param1_list = param1.split()
                                                    keyDict["key1"] = param1_list[0]
                                                    keyDict["key1G"] = param1_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "2"):
                                                    param2 = word_list[3]
                                                    param2 = param2.replace(":", " ")
                                                    param2_list = param2.split()
                                                    keyDict["key2"] = param2_list[0]
                                                    keyDict["key2G"] = param2_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "3"):
                                                    param3 = word_list[4]
                                                    param3 = param3.replace(":", " ")
                                                    param3_list = param3.split()
                                                    keyDict["key3"] = param3_list[0]
                                                    keyDict["key3G"] = param3_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "4"):
                                                    param4 = word_list[5]
                                                    param4 = param4.replace(":", " ")
                                                    param4_list = param4.split()
                                                    keyDict["key4"] = param4_list[0]
                                                    keyDict["key4G"] = param4_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "5"):
                                                    param5 = word_list[6]
                                                    param5 = param5.replace(":", " ")
                                                    param5_list = param5.split()
                                                    keyDict["key5"] = param5_list[0]
                                                    keyDict["key5G"] = param5_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "6"):
                                                    param6 = word_list[7]
                                                    param6 = param6.replace(":", " ")
                                                    param6_list = param6.split()
                                                    keyDict["key6"] = param6_list[0]
                                                    keyDict["key6G"] = param6_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "7"):
                                                    param7 = word_list[8]
                                                    param7 = param1.replace(":", " ")
                                                    param7_list = param1.split()
                                                    keyDict["key7"] = param7_list[0]
                                                    keyDict["key7G"] = param7_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "8"):
                                                    param8 = word_list[9]
                                                    param8 = param8.replace(":", " ")
                                                    param8_list = param8.split()
                                                    keyDict["key8"] = param8_list[0]
                                                    keyDict["key8G"] = param8_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "9"):
                                                    param9 = word_list[10]
                                                    param9 = param9.replace(":", " ")
                                                    param9_list = param9.split()
                                                    keyDict["key9"] = param9_list[0]
                                                    keyDict["key9G"] = param9_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "10"):
                                                    param10 = word_list[11]
                                                    param10 = param10.replace(":", " ")
                                                    param10_list = param10.split()
                                                    keyDict["key10"] = param10_list[0]
                                                    keyDict["key10G"] = param10_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "11"):
                                                    param11 = word_list[12]
                                                    param11 = param11.replace(":", " ")
                                                    param11_list = param11.split()
                                                    keyDict["key11"] = param11_list[0]
                                                    keyDict["key11G"] = param11_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "12"):
                                                    param12 = word_list[13]
                                                    param12 = param12.replace(":", " ")
                                                    param12_list = param12.split()
                                                    keyDict["key12"] = param12_list[0]
                                                    keyDict["key12G"] = param12_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "13"):
                                                    param13 = word_list[14]
                                                    param13 = param13.replace(":", " ")
                                                    param13_list = param13.split()
                                                    keyDict["key13"] = param13_list[0]
                                                    keyDict["key13G"] = param13_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "14"):
                                                    param14 = word_list[15]
                                                    param14 = param14.replace(":", " ")
                                                    param14_list = param14.split()
                                                    keyDict["key14"] = param14_list[0]
                                                    keyDict["key14G"] = param14_list[1]
                                                    validParam = 1
                                            if(paramNumber >= "15"):
                                                    param15 = word_list[16]
                                                    param15 = param15.replace(":", " ")
                                                    param15_list = param15.split()
                                                    keyDict["key15"] = param15_list[0]
                                                    keyDict["key15G"] = param15_list[1]
                                                    validParam = 1
                                            if(validParam == 0):
                                                    print("An invalid number of parameters was specified on line "+str(i)+". The minimum amount of parameters you can add is 1; the maximum amount is 15.")
                                                    stop = input("")
                                                    sys.exit()
                                    except IndexError:
                                            print("")
                                    nextInput = input(lineRa)
                                    if(nextInput == ""):
                                            print("You did not enter anything.")
                                            goto .newLine
                                    if(nextInput == keyDict["key1"]):
                                            currentLine = keyDict["key1G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key2"]):
                                            currentLine = keyDict["key2G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key3"]):
                                            currentLine = keyDict["key3G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key4"]):
                                            currentLine = keyDict["key4G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key5"]):
                                            currentLine = keyDict["key5G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key6"]):
                                            currentLine = keyDict["key6G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key7"]):
                                            currentLine = keyDict["key7G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key8"]):
                                            currentLine = keyDict["key8G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key9"]):
                                            currentLine = keyDict["key9G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key10"]):
                                            currentLine = keyDict["key10G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key11"]):
                                            currentLine = keyDict["key11G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key12"]):
                                            currentLine = keyDict["key12G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key13"]):
                                            currentLine = keyDict["key13G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key14"]):
                                            currentLine = keyDict["key14G"]
                                            goto .newLine
                                    if(nextInput == keyDict["key15"]):
                                            currentLine = keyDict["key15G"]
                                            goto .newLine
                            print("Invalid command specified.")
                            goto .newLine

test.dgm:

:text 2 A:2 B:3 "This is line 1."
:text 2 A:3 B:1 "This is line 2."
:text 2 A:1 B:2 "This is line 3."

This works as it should, but when I press the key that takes me to the previous line, the program just stops, with no error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions