aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm/examples/OCaml-Kaleidoscope/Chapter7/toplevel.ml
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/examples/OCaml-Kaleidoscope/Chapter7/toplevel.ml')
-rw-r--r--contrib/llvm/examples/OCaml-Kaleidoscope/Chapter7/toplevel.ml49
1 files changed, 0 insertions, 49 deletions
diff --git a/contrib/llvm/examples/OCaml-Kaleidoscope/Chapter7/toplevel.ml b/contrib/llvm/examples/OCaml-Kaleidoscope/Chapter7/toplevel.ml
deleted file mode 100644
index 01d24ede1492..000000000000
--- a/contrib/llvm/examples/OCaml-Kaleidoscope/Chapter7/toplevel.ml
+++ /dev/null
@@ -1,49 +0,0 @@
-(*===----------------------------------------------------------------------===
- * Top-Level parsing and JIT Driver
- *===----------------------------------------------------------------------===*)
-
-open Llvm
-open Llvm_executionengine
-
-(* top ::= definition | external | expression | ';' *)
-let rec main_loop the_fpm the_execution_engine stream =
- match Stream.peek stream with
- | None -> ()
-
- (* ignore top-level semicolons. *)
- | Some (Token.Kwd ';') ->
- Stream.junk stream;
- main_loop the_fpm the_execution_engine stream
-
- | Some token ->
- begin
- try match token with
- | Token.Def ->
- let e = Parser.parse_definition stream in
- print_endline "parsed a function definition.";
- dump_value (Codegen.codegen_func the_fpm e);
- | Token.Extern ->
- let e = Parser.parse_extern stream in
- print_endline "parsed an extern.";
- dump_value (Codegen.codegen_proto e);
- | _ ->
- (* Evaluate a top-level expression into an anonymous function. *)
- let e = Parser.parse_toplevel stream in
- print_endline "parsed a top-level expr";
- let the_function = Codegen.codegen_func the_fpm e in
- dump_value the_function;
-
- (* JIT the function, returning a function pointer. *)
- let result = ExecutionEngine.run_function the_function [||]
- the_execution_engine in
-
- print_string "Evaluated to ";
- print_float (GenericValue.as_float Codegen.double_type result);
- print_newline ();
- with Stream.Error s | Codegen.Error s ->
- (* Skip token for error recovery. *)
- Stream.junk stream;
- print_endline s;
- end;
- print_string "ready> "; flush stdout;
- main_loop the_fpm the_execution_engine stream