aboutsummaryrefslogtreecommitdiff
path: root/neb.py
diff options
context:
space:
mode:
Diffstat (limited to 'neb.py')
-rw-r--r--neb.py28
1 files changed, 25 insertions, 3 deletions
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: