diff options
Diffstat (limited to 'neb.py')
| -rw-r--r-- | neb.py | 28 |
1 files changed, 25 insertions, 3 deletions
@@ -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: |
