diff options
| author | mryouse | 2022-06-07 01:20:40 +0000 |
|---|---|---|
| committer | mryouse | 2022-06-07 01:20:40 +0000 |
| commit | 8c9e98c9521a8236c10b26cb623071c49657879f (patch) | |
| tree | 4fec8dcb81bb81e6c424a4807b6890edd5a1759c /interpreter.py | |
| parent | e3cea46efc83ecaab577b6b7f10bc87fb0eda22a (diff) | |
implement use, ansi-escape
Diffstat (limited to 'interpreter.py')
| -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)) + |
