Mercurial > hg > Members > tobaru > cbc > CbC_llvm
view examples/OCaml-Kaleidoscope/Chapter2/toplevel.ml @ 128:c347d3398279 default tip
fix
author | mir3636 |
---|---|
date | Wed, 06 Dec 2017 14:37:17 +0900 |
parents | 95c75e76d11b |
children |
line wrap: on
line source
(*===----------------------------------------------------------------------=== * Top-Level parsing and JIT Driver *===----------------------------------------------------------------------===*) (* top ::= definition | external | expression | ';' *) let rec main_loop stream = match Stream.peek stream with | None -> () (* ignore top-level semicolons. *) | Some (Token.Kwd ';') -> Stream.junk stream; main_loop stream | Some token -> begin try match token with | Token.Def -> ignore(Parser.parse_definition stream); print_endline "parsed a function definition."; | Token.Extern -> ignore(Parser.parse_extern stream); print_endline "parsed an extern."; | _ -> (* Evaluate a top-level expression into an anonymous function. *) ignore(Parser.parse_toplevel stream); print_endline "parsed a top-level expr"; with Stream.Error s -> (* Skip token for error recovery. *) Stream.junk stream; print_endline s; end; print_string "ready> "; flush stdout; main_loop stream