diff options
| author | mryouse | 2022-05-25 01:37:11 +0000 |
|---|---|---|
| committer | mryouse | 2022-05-25 01:37:11 +0000 |
| commit | d98e17f6301d6d23ba0a9fe5c640089ffe5f62fd (patch) | |
| tree | 8af38f958d8ed8ca1940ba2720ba56b44beace49 /neb.py | |
| parent | 597000e8db6687c7b5f4a88a323a51c5e145421b (diff) | |
combine repl and file runner
Diffstat (limited to 'neb.py')
| -rw-r--r-- | neb.py | 48 |
1 files changed, 45 insertions, 3 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) |
