diff options
| -rw-r--r-- | neb.py | 48 | ||||
| -rw-r--r-- | repl.py | 39 |
2 files changed, 45 insertions, 42 deletions
@@ -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 <file>") @@ -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 [<file>]") + sys.exit(1) diff --git a/repl.py b/repl.py deleted file mode 100644 index 2846d33..0000000 --- a/repl.py +++ /dev/null @@ -1,39 +0,0 @@ -from lexer import lex -from parser import parse -from interpreter import interpret - -prev_lexed = None -prev_parsed = None - -def main(): - print("### neb :)(:") - print("version: < 0") - idx = 1 - prev_idx = 0 - while True: - inp = input(f"#{idx}> ") - if len(inp.strip()) == 0: - continue - try: - if inp.strip() == "(debug)": - 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}") - 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}") - - -if __name__ == "__main__": - main() |
