# SPDX-License-Identifier: LGPL-2.1-only # Copyright 2022 Jookia <contact@jookia.org> import os import sys from newlang import port from newlang import log from newlang.parse2 import tokenize as tokenize2 from newlang.parse2 import parse as parse2 from newlang import parse from newlang import interp def run_file(file, log_level=log.NORMAL): log.set_default_log_level(log_level) ast = None if os.getenv("NEWLANG_PARSE2"): try: code = open(file, encoding="utf-8").read() tokens = tokenize2.tokenize(code, file) ast = parse2.parse(tokens, None) except UnicodeError: pass else: ast = parse.parse_file(file) if not ast: return 1 interp.run_ast(ast) return 0 def main(): args = sys.argv log_level = os.getenv("NEWLANG_LOG_LEVEL") exe_name = "newlang" if len(args) != 2: print("Usage: %s FILENAME" % (exe_name)) return 1 return run_file(args[1], log_level) def unexpected_exit(): input("Unexpected exit. Press any key to continue.") def wait_main(): port.atexit_register_one(unexpected_exit) code = main() port.atexit_unregister() input("Exited with code %s. Press any key to continue." % (code)) sys.exit(code)