d846046c4a
Compiler and VM are now working well enough to support larger programs. A test program is included and executed immediately upon running the executable. A more feature complete read-eval-print loop is planned.
24 lines
637 B
OCaml
24 lines
637 B
OCaml
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)";;
|
|
(* 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
|
|
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
|