diff options
| -rw-r--r-- | interpreter.py | 20 | 
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)) + | 
