Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
smtlib_error.ml1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78(******************************************************************************) (* *) (* An SMT-LIB 2 for the Alt-Ergo Theorem Prover *) (* *) (******************************************************************************) open Lexing open Format type error = | Lexical_error of string | Syntax_error of string | Typing_error of string | Incremental_error of string | Unknow_Type_error of string | Missing_parameter_error of string | Logic_declaration_error of string | Sort_declaration_error of string | Datatype_declaration_error of string | Quantifier_error of string | Fun_declaration_error of string | Ambiguity_error of string | No_match_error of string | Type_clash_error of string * string exception Error of error * ((Lexing.position * Lexing.position) option) let report_loc fmt file (b,e) = let sfile = match file with | "" -> "; " | s -> sprintf "; File \"%s\"" s in if b = dummy_pos || e = dummy_pos then fprintf fmt "%s : " sfile else let l = b.pos_lnum in let fc = b.pos_cnum - b.pos_bol + 1 in let lc = e.pos_cnum - b.pos_bol + 1 in fprintf fmt "%s, line %d, characters %d-%d : " sfile l fc lc let print fmt f e p = report_loc fmt f p; begin match e with | Lexical_error s -> fprintf fmt "Lexical error : %s" s | Syntax_error s -> fprintf fmt "Syntax error : %s" s | Typing_error s -> fprintf fmt "Typing error : %s" s | Incremental_error s -> fprintf fmt "Incremental error : %s" s | Unknow_Type_error s -> fprintf fmt "Unknown sort/type : %s" s | Missing_parameter_error s -> fprintf fmt "Missing parameter : %s" s | Logic_declaration_error s -> fprintf fmt "Logic declaration error : %s" s | Sort_declaration_error s -> fprintf fmt "Sort declaration error : %s" s | Fun_declaration_error s -> fprintf fmt "Fun declaration error : %s" s | Datatype_declaration_error s -> fprintf fmt "Datatypes declaration error : %s" s | Quantifier_error s -> fprintf fmt "Quantifier error : %s" s | Ambiguity_error s -> fprintf fmt "Ambiguity error : %s" s | No_match_error s -> fprintf fmt "No match for : %s" s | Type_clash_error(t1,t2) -> fprintf fmt "Clash type between : %s / %s" t1 t2 end; fprintf fmt "@." let error e p = (* print err_formatter "" e p; *) raise (Error (e,p)) let warning fmt e p = if Options.warning_as_error () then error e p else let p = match p with | None -> Lexing.dummy_pos,Lexing.dummy_pos | Some p -> p in print fmt (Options.filename ()) e p