# 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 import tokenize from src import parse 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_NEW_PARSE"): try: code = open(file, encoding="utf-8").read() tokens = tokenize.tokenize(code, file) ast = parse.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)