From 776fe3193b515c028b5ac69326baed51d760d32f Mon Sep 17 00:00:00 2001 From: mryouse Date: Tue, 21 Jun 2022 01:49:29 +0000 Subject: refactor: break stdlib into several files --- neb.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'neb.py') diff --git a/neb.py b/neb.py index 7e95284..fa538ea 100644 --- a/neb.py +++ b/neb.py @@ -1,8 +1,28 @@ -from neb import lex, parse, interpret, NebPanic +from neb import lex, parse, interpret, NebPanic, Environment +from neb.std import * import sys import readline +def build_std(repl=False): + GLOBALS = Environment() + global_dict = { **BOOLEAN.environment, + **CORE.environment, + **FUNCTOOLS.environment, + **FS.environment, + **LISTS.environment, + **MATH.environment, + **STRINGS.environment, + **SYS.environment, + **TERM.environment, + **TYPES.environment } + if repl: + global_dict = { **global_dict, + **REPL.environment } + GLOBALS.environment = global_dict + return GLOBALS + + def debug(prev_lexed, prev_parsed): if prev_lexed is not None: acc = " ".join([f"{l}" for l in prev_lexed]) @@ -13,6 +33,7 @@ def debug(prev_lexed, prev_parsed): def repl(): + env = build_std(True) print("### neb :)(:") print("version: < 0") idx = 1 @@ -31,7 +52,7 @@ def repl(): prev_lexed = lexed parsed = parse(lexed) prev_parsed = parsed - inter = interpret(parsed) + inter = interpret(parsed, env) print(f"=> {inter}") prev_idx = idx idx += 1 @@ -43,13 +64,14 @@ def repl(): def run_file(filename): + env = build_std() with open(filename, "r") as fil: data = fil.read() try: lexed = lex(data) parsed = parse(lexed) - ev = interpret(parsed) + ev = interpret(parsed, env) except NebPanic as ne: print(f"panic! {ne}") except Exception as e: -- cgit v1.2.3