xref: /aosp_15_r20/external/llvm/examples/OCaml-Kaleidoscope/Chapter2/toy.ml (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker(*===----------------------------------------------------------------------===
2*9880d681SAndroid Build Coastguard Worker * Main driver code.
3*9880d681SAndroid Build Coastguard Worker *===----------------------------------------------------------------------===*)
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Workerlet main () =
6*9880d681SAndroid Build Coastguard Worker  (* Install standard binary operators.
7*9880d681SAndroid Build Coastguard Worker   * 1 is the lowest precedence. *)
8*9880d681SAndroid Build Coastguard Worker  Hashtbl.add Parser.binop_precedence '<' 10;
9*9880d681SAndroid Build Coastguard Worker  Hashtbl.add Parser.binop_precedence '+' 20;
10*9880d681SAndroid Build Coastguard Worker  Hashtbl.add Parser.binop_precedence '-' 20;
11*9880d681SAndroid Build Coastguard Worker  Hashtbl.add Parser.binop_precedence '*' 40;    (* highest. *)
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker  (* Prime the first token. *)
14*9880d681SAndroid Build Coastguard Worker  print_string "ready> "; flush stdout;
15*9880d681SAndroid Build Coastguard Worker  let stream = Lexer.lex (Stream.of_channel stdin) in
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker  (* Run the main "interpreter loop" now. *)
18*9880d681SAndroid Build Coastguard Worker  Toplevel.main_loop stream;
19*9880d681SAndroid Build Coastguard Worker;;
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workermain ()
22