aboutsummaryrefslogtreecommitdiff
path: root/neb/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'neb/interpreter.py')
-rw-r--r--neb/interpreter.py54
1 files changed, 0 insertions, 54 deletions
diff --git a/neb/interpreter.py b/neb/interpreter.py
index 760b3a6..e64e420 100644
--- a/neb/interpreter.py
+++ b/neb/interpreter.py
@@ -11,21 +11,6 @@ import random
import sys
import math
-
-class Arg:
-
- def __init__(self, name, type_, *, optional=False, lazy=False):
- self.name = name
- self.type_ = type_
- self.optional = optional
- self.lazy = lazy
-
- def __str__(self):
- opt = "?" if self.optional else ""
- lazy = "~" if self.lazy else ""
- return f"{lazy}{opt}{self.name} {self.type_}"
-
-
class Function:
def __init__(self, name, params, body, args=None, many=None):
@@ -142,45 +127,6 @@ class UserFunction(Function):
return interpret(self.body, env=this_env, ns=ns)
-class Environment:
-
- def __init__(self, parent=None):
- self.parent = parent
- self.environment = {}
-
- def register(self, key, value):
- self.environment[key] = value
-
- def reregister(self, key, value):
- if not self.contains(key):
- raise NebPanic(f"undefined symbol: '{key}")
- if key in self.environment:
- self.register(key, value)
- else:
- self.parent.reregister(key, value)
-
- def contains(self, key):
- if key in self.environment:
- return True
- elif self.parent is not None:
- return self.parent.contains(key)
- else:
- return False
-
- def get(self, key):
- if not self.contains(key):
- raise NebPanic(f"undefined symbol: '{key}")
- if key in self.environment:
- return self.environment[key]
- else:
- return self.parent.get(key)
-
- def __str__(self):
- out = ""
- for k, v in self.environment.items():
- out += f"{k}: {v}, "
- return out
-
GLOBALS = Environment()
def interpret(exprs, *, env=GLOBALS, ns=None):