2023-11-29 22:56:42 +00:00
|
|
|
open Spice
|
|
|
|
|
2023-11-30 18:16:04 +00:00
|
|
|
let () =
|
2023-11-29 18:43:14 +00:00
|
|
|
Logs.set_reporter (Logs.format_reporter ());
|
|
|
|
Logs.set_level (Some Logs.Debug);
|
|
|
|
|
2023-11-24 04:06:13 +00:00
|
|
|
try
|
2023-12-13 23:16:04 +00:00
|
|
|
let ast = parse "
|
|
|
|
val two = 2
|
2023-12-14 00:18:54 +00:00
|
|
|
val one = 1
|
|
|
|
fun twice(x) {
|
|
|
|
fun f(x) (x - one) * two
|
|
|
|
fun g() x + one
|
|
|
|
f(g())
|
|
|
|
}
|
2023-12-13 23:16:04 +00:00
|
|
|
println(twice(4))
|
|
|
|
" in
|
2023-12-13 22:16:38 +00:00
|
|
|
Logs.debug (fun m -> m "[AST] %a" Ast.pp_modl ast);
|
2023-11-30 03:24:51 +00:00
|
|
|
let prog = compile ast in
|
2023-12-13 22:16:38 +00:00
|
|
|
Logs.debug (fun m -> Code.dump (m "[BC] %s") prog.main);
|
2023-12-02 21:12:51 +00:00
|
|
|
let modl = run prog in
|
2023-12-13 22:16:38 +00:00
|
|
|
Logs.debug (fun m -> m "[RET] %a" Value.pp modl)
|
2023-11-29 22:56:42 +00:00
|
|
|
with Error msg -> Logs.err (fun m -> m "%s" msg)
|