X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=src%2Fparse.ml;h=da42b87a378315624991a6ca882c858b4ed7d46c;hb=8b25817b1f12fd63f890555c6de6e941ef42dec6;hp=19c57ac72103f4b17521e387cf474249399a1876;hpb=70a08a62b9312ed1bbcb7c89d47f9a25fa221e34;p=goals.git diff --git a/src/parse.ml b/src/parse.ml index 19c57ac..da42b87 100644 --- a/src/parse.ml +++ b/src/parse.ml @@ -17,15 +17,15 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *) -open Lexer open Lexing - open Printf -let print_position fp lexbuf = +open Utils +open Lexer + +let string_position () 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) + sprintf "%s:%d:%d" pos.pos_fname pos.pos_lnum (pos.pos_cnum - pos.pos_bol) let parse_file env lexbuf = try @@ -33,21 +33,17 @@ let parse_file env lexbuf = Ast.Env.merge env env' with | SyntaxError msg -> - eprintf "%a: %s\n" print_position lexbuf msg; - exit 1 + failwithf "%a: %s" string_position lexbuf msg | Parser.Error -> - eprintf "%a: parse error\n" print_position lexbuf; - exit 1 + failwithf "%a: parse error" string_position lexbuf let parse_expr lexbuf = - try Parser.expr Lexer.read lexbuf + try Parser.expr_only Lexer.read lexbuf with | SyntaxError msg -> - eprintf "%a: %s\n" print_position lexbuf msg; - exit 1 + failwithf "%a: %s" string_position lexbuf msg | Parser.Error -> - eprintf "%a: parse error\n" print_position lexbuf; - exit 1 + failwithf "%a: parse error" string_position lexbuf (* This is used to parse the Goalfile. *) let parse_goalfile env filename =