From d98e17f6301d6d23ba0a9fe5c640089ffe5f62fd Mon Sep 17 00:00:00 2001 From: mryouse Date: Wed, 25 May 2022 01:37:11 +0000 Subject: combine repl and file runner --- neb.py | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) (limited to 'neb.py') diff --git a/neb.py b/neb.py index ad645a5..08b1670 100644 --- a/neb.py +++ b/neb.py @@ -4,7 +4,43 @@ from interpreter import interpret import sys -def main(): +def debug(prev_lexed, prev_parsed): + if prev_lexed is not None: + acc = " ".join([f"{l}" for l in prev_lexed]) + print(f" - LEX: {acc}") + if prev_parsed is not None: + acc = " ".join([f"{p}" for p in prev_parsed]) + print(f" - PARSE: {acc}") + + +def repl(): + print("### neb :)(:") + print("version: < 0") + idx = 1 + prev_idx = 0 + prev_lexed = None + prev_parsed = None + while True: + inp = input(f"#{idx}> ") + if len(inp.strip()) == 0: + continue + try: + if inp.strip() == "(debug)": + debug(prev_lexed, prev_parsed) + continue + lexed = lex(inp) + prev_lexed = lexed + parsed = parse(lexed) + prev_parsed = parsed + inter = interpret(parsed) + print(f"=> {inter}") + prev_idx = idx + idx += 1 + except Exception as e: + print(f"panic! {e}") + + +def run_file(): if len(sys.argv) != 2: print("usage: neb ") @@ -19,7 +55,13 @@ def main(): ev = interpret(parsed) except Exception as e: print(f"panic! {e}") - + if __name__ == "__main__": - main() + if len(sys.argv) == 1: + repl() + elif len(sys.argv) == 2: + run_file(sys.argv[1]) + else: + print("usage: neb []") + sys.exit(1) -- cgit v1.2.3