-let parse lexbuf =
- let print_position fp lexbuf =
- let pos = lexbuf.lex_curr_p in
- fprintf fp "%s:%d:%d"
- pos.pos_fname pos.pos_lnum (pos.pos_cnum - pos.pos_bol)
- in
+open Utils
+open Lexer
+
+let string_position () lexbuf =
+ let pos = lexbuf.lex_curr_p in
+ sprintf "%s:%d:%d" pos.pos_fname pos.pos_lnum (pos.pos_cnum - pos.pos_bol)
+
+let parse_file env lexbuf =
+ try
+ let env' = Parser.file Lexer.read lexbuf in
+ Ast.Env.merge env env'
+ with
+ | SyntaxError msg ->
+ failwithf "%a: %s" string_position lexbuf msg
+ | Parser.Error ->
+ failwithf "%a: parse error" string_position lexbuf