Exemple #1
0
    sys.setrecursionlimit(100000)
    Parser.build("Program")
    if len(sys.argv) != 1:
        if sys.argv[1] == "-i":
            n = 2
        else:
            n = 1
        with open(sys.argv[n]) as file:
            ast = Parser.yacc.parse(file.read())
            if ast is not None:
                args = Engine.StObject()
                for i in range(n, len(sys.argv)):
                    args[i - n] = sys.argv[i]
                Engine.glb["args"] = args
                try:
                    Engine.interpret(ast)
                except Exception as e:
                    print("error: ", end="")
                    print(e)
                    sys.exit(1)

    if len(sys.argv) == 1 or sys.argv[1] == "-i":
        if len(sys.argv) == 1:
            print(
                """Stair JavaScript Interpreter V1.0 \n"""
                """Powered by Li Qimai, Hai Jiewen, Chen Guangxiang, Cai Wuwei"""
            )
        while True:
            statement = input(">>>")
            if statement.strip() == "exit":
                print("Bye!")