# SPDX-License-Identifier: LGPL-2.1-only # Copyright 2022 Jookia <contact@jookia.org> import os import sys from src import port from src import log from src.parse2 import tokenize as tokenize2 from src.parse2 import parse as parse2 from src import oldparse from src 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 = oldparse.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 = "NewLang" if len(args) == 1: exe = args[0] if len(args) != 2: print("Usage: %s FILENAME" % (exe)) 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)