repl: added a repl. currently compiles every program as a new one however. this needs to be fixed with incremental compilation

This commit is contained in:
2026-05-17 20:03:38 +03:00
parent b05c3ae5f7
commit 68b8916d63
+6 -14
View File
@@ -2,23 +2,15 @@ let ( let* ) = Result.bind;;
(* Try to interpret some test source code. *)
let some_source = "(define (print-three a b c)
(print a)
(print b)
(print c))
(print-three 'hello 'world 'there)
(print 'fuck)";;
(* I don't have any built-in functions at all rn, so we just use a dummy function *)
let bruh =
let* vm = Compiler.Emit.compile_src some_source in
let rec interpret_loop () =
let l = read_line () in
let* vm = Compiler.Emit.compile_src l in
print_endline "=== PROGRAM DISASSEMBLY";
Vm.Types.print_instrs vm.instrs;
print_endline "=== PROGRAM OUTPUT";
Vm.interpret vm;
Ok ()
let _ = match bruh with
| Ok _ -> ()
| Error s -> print_endline s
interpret_loop ()
let _ = interpret_loop ()