aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py
index b3c5fcd..cbd392c 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1,5 +1,7 @@
from structs import *
from exceptions import *
+from lexer import lex
+from parser import parse
from pathlib import Path
from glob import glob
import subprocess
@@ -813,3 +815,21 @@ def interpretWhile(symbol, args, env):
return ret
GLOBALS.register("while", Builtin(interpretWhile))
+
+def interpretAnsiEscape(symbol, args, env):
+ return String(f"\033")
+
+GLOBALS.register("ansi-escape", Builtin(interpretAnsiEscape, 0))
+
+def interpretUse(symbol, args, env):
+ target_file_name = evaluate(args[0], env).value
+ target_file = Path(target_file_name).resolve()
+ if not target_file.exists():
+ raise InterpretPanic(symbol, "no such file", target_file)
+ with open(target_file, "r") as fil:
+ data = fil.read()
+ interpret(parse(lex(data)))
+ return List([])
+
+GLOBALS.register("use", Builtin(interpretUse, 1))
+