aboutsummaryrefslogtreecommitdiffstats
path: root/examples/OCaml-Kaleidoscope/Chapter3/toy.ml
diff options
context:
space:
mode:
authorErick Tryzelaar <idadesub@users.sourceforge.net>2010-03-08 19:32:27 +0000
committerErick Tryzelaar <idadesub@users.sourceforge.net>2010-03-08 19:32:27 +0000
commitcabc7af293504ad256d2203ae88ee11cbc34c2ed (patch)
tree8500bcc1ba0067ff7816b083d8b5a535be6ee50d /examples/OCaml-Kaleidoscope/Chapter3/toy.ml
parent18048879b214b9a6d1d89040ccbf0b0da94d13c7 (diff)
downloadexternal_llvm-cabc7af293504ad256d2203ae88ee11cbc34c2ed.zip
external_llvm-cabc7af293504ad256d2203ae88ee11cbc34c2ed.tar.gz
external_llvm-cabc7af293504ad256d2203ae88ee11cbc34c2ed.tar.bz2
Add OCaml tutorial to the examples.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97966 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'examples/OCaml-Kaleidoscope/Chapter3/toy.ml')
-rw-r--r--examples/OCaml-Kaleidoscope/Chapter3/toy.ml26
1 files changed, 26 insertions, 0 deletions
diff --git a/examples/OCaml-Kaleidoscope/Chapter3/toy.ml b/examples/OCaml-Kaleidoscope/Chapter3/toy.ml
new file mode 100644
index 0000000..73c1a1e
--- /dev/null
+++ b/examples/OCaml-Kaleidoscope/Chapter3/toy.ml
@@ -0,0 +1,26 @@
+(*===----------------------------------------------------------------------===
+ * Main driver code.
+ *===----------------------------------------------------------------------===*)
+
+open Llvm
+
+let main () =
+ (* Install standard binary operators.
+ * 1 is the lowest precedence. *)
+ Hashtbl.add Parser.binop_precedence '<' 10;
+ Hashtbl.add Parser.binop_precedence '+' 20;
+ Hashtbl.add Parser.binop_precedence '-' 20;
+ Hashtbl.add Parser.binop_precedence '*' 40; (* highest. *)
+
+ (* Prime the first token. *)
+ print_string "ready> "; flush stdout;
+ let stream = Lexer.lex (Stream.of_channel stdin) in
+
+ (* Run the main "interpreter loop" now. *)
+ Toplevel.main_loop stream;
+
+ (* Print out all the generated code. *)
+ dump_module Codegen.the_module
+;;
+
+main ()