summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKathy Gray2013-12-18 11:37:45 +0000
committerKathy Gray2013-12-18 11:37:59 +0000
commit0742e0acc1558c6933be2d524f8a5ac13a5a8a19 (patch)
tree1b5971fa33ce8cf1f97b85edea8ac348a0c2a285 /src
parentb3a18009fd8b90eccc1033c24c4617948a6c2b2d (diff)
Tweak formatting in pretty printer, and resolve bugs.
Start specifying lem homs for rules.
Diffstat (limited to 'src')
-rw-r--r--src/pretty_print.ml75
1 files changed, 38 insertions, 37 deletions
diff --git a/src/pretty_print.ml b/src/pretty_print.ml
index 8a8b07cf..08eec393 100644
--- a/src/pretty_print.ml
+++ b/src/pretty_print.ml
@@ -54,7 +54,7 @@ let pp_format_id (Id_aux(i,_)) =
let pp_id ppf id = base ppf (pp_format_id id)
-let pp_format_var (Kid_aux(Var v,_)) = "'" ^ v
+let pp_format_var (Kid_aux(Var v,_)) = v
let pp_var ppf var = base ppf (pp_format_var var)
@@ -81,7 +81,7 @@ let rec pp_format_typ (Typ_aux(t,_)) =
(parens is_atomic_typ pp_format_typ ret) ^ " effect " ^
(pp_format_effects efct) ^ ")"
| Typ_tup(typs) -> "(" ^ (list_format " * " pp_format_typ typs) ^ ")"
- | Typ_app(id,args) -> "(" ^ (pp_format_id id) ^ "<" ^ (list_format ", " pp_format_typ_arg args) ^ ">)"
+ | Typ_app(id,args) -> (pp_format_id id) ^ "<" ^ (list_format ", " pp_format_typ_arg args) ^ ">"
and pp_format_nexp (Nexp_aux(n,_)) =
match n with
| Nexp_var(var) -> pp_format_var var
@@ -170,7 +170,8 @@ let pp_format_lit (L_aux(l,_)) =
| L_true -> "true"
| L_false -> "false"
| L_num(i) -> string_of_int i
- | L_hex(n) | L_bin(n) -> n
+ | L_hex(n) -> "0x" ^ n
+ | L_bin(n) -> "0b" ^ n
| L_undef -> "undefined"
| L_string(s) -> "\"" ^ s ^ "\""
@@ -209,7 +210,7 @@ let rec pp_let ppf (LB_aux(lb,_)) =
(* Need an is_atomic? check and insert parens otherwise *)
and pp_exp ppf (E_aux(e,_)) =
match e with
- | E_block(exps) -> fprintf ppf "@[<0>%a %a@ %a@]"
+ | E_block(exps) -> fprintf ppf "@[<0>%a%a@ %a@]"
kwd "{"
(list_pp pp_semi_exp pp_exp) exps
kwd "}"
@@ -219,47 +220,47 @@ and pp_exp ppf (E_aux(e,_)) =
| E_app(f,args) -> fprintf ppf "@[<0>%a(%a)@]" pp_id f (list_pp pp_comma_exp pp_exp) args
| E_app_infix(l,op,r) -> fprintf ppf "@[<0>%a %a %a@]" pp_exp l pp_id op pp_exp r
| E_tuple(exps) -> fprintf ppf "@[<0>%a %a %a@]" kwd "(" (list_pp pp_comma_exp pp_exp) exps kwd ")"
- | E_if(c,t,e) -> fprintf ppf "@[<0> %a %a @[<1> %a %a@] @[<1> %a@ %a@]@]" kwd "if " pp_exp c kwd "then" pp_exp t kwd "else" pp_exp e
+ | E_if(c,t,e) -> fprintf ppf "@[<0>%a %a @[<1>%a %a@] @[<1>%a@ %a@]@]" kwd "if " pp_exp c kwd "then" pp_exp t kwd "else" pp_exp e
| E_for(id,exp1,exp2,exp3,exp4) ->
- fprintf ppf "@[<0> %a %a %a %a %a %a %a %a@ @[<1> %a @] @]"
+ fprintf ppf "@[<0> %a %a %a %a %a %a %a %a@ @[<1>%a@]@]"
kwd "foreach " pp_id id kwd " from " pp_exp exp1 kwd " to " pp_exp exp2 kwd "by " pp_exp exp3 pp_exp exp4
- | E_vector(exps) -> fprintf ppf "@[<0> %a %a %a @]" kwd "[" (list_pp pp_comma_exp pp_exp) exps kwd "]"
+ | E_vector(exps) -> fprintf ppf "@[<0>%a%a%a@]" kwd "[" (list_pp pp_comma_exp pp_exp) exps kwd "]"
| E_vector_indexed(iexps) ->
- let iformat ppf (i,e) = fprintf ppf "@[<1>%i %a %a %a@]" i kwd " = " pp_exp e kwd "," in
- let lformat ppf (i,e) = fprintf ppf "@[<1>%i %a %a @]" i kwd " = " pp_exp e in
- fprintf ppf "@[<0> %a %a %a @]" kwd "[" (list_pp iformat lformat) iexps kwd "]"
- | E_vector_access(v,e) -> fprintf ppf "@[<0>%a %a %a %a@]" pp_exp v kwd "[" pp_exp e kwd "]"
- | E_vector_subrange(v,e1,e2) -> fprintf ppf "@[<0> %a %a %a %a %a %a@]" pp_exp v kwd "[" pp_exp e1 kwd " : " pp_exp e1 kwd "]"
+ let iformat ppf (i,e) = fprintf ppf "@[<1>%i%a %a%a@]" i kwd " = " pp_exp e kwd "," in
+ let lformat ppf (i,e) = fprintf ppf "@[<1>%i%a %a@]" i kwd " = " pp_exp e in
+ fprintf ppf "@[<0> %a%a%a@]" kwd "[" (list_pp iformat lformat) iexps kwd "]"
+ | E_vector_access(v,e) -> fprintf ppf "@[<0>%a%a%a%a@]" pp_exp v kwd "[" pp_exp e kwd "]"
+ | E_vector_subrange(v,e1,e2) -> fprintf ppf "@[<0>%a%a%a%a%a%a@]" pp_exp v kwd "[" pp_exp e1 kwd " : " pp_exp e1 kwd "]"
| E_vector_update(v,e1,e2) ->
- fprintf ppf "@[<0> %a %a %a %a %a %a %a@]" kwd "[" pp_exp v kwd "with" pp_exp e1 kwd " = " pp_exp e2 kwd "]"
+ fprintf ppf "@[<0>%a%a %a %a%a%a%a@]" kwd "[" pp_exp v kwd "with" pp_exp e1 kwd " = " pp_exp e2 kwd "]"
| E_vector_update_subrange(v,e1,e2,e3) ->
fprintf ppf "@[<0>%a%a %a %a %a %a %a %a %a@]" kwd "[" pp_exp v kwd "with" pp_exp e1 kwd ":" pp_exp e2 kwd " = " pp_exp e3 kwd "]"
- | E_list(exps) -> fprintf ppf "@[<0> %a %a %a@]" kwd "[|" (list_pp pp_comma_exp pp_exp) exps kwd "|]"
- | E_cons(e1,e2) -> fprintf ppf "@[<0> %a %a %a@]" pp_exp e1 kwd ":" pp_exp e2
- | E_record(FES_aux(FES_Fexps(fexps,_),_)) -> fprintf ppf "@[<0> %a %a %a@]" kwd "{" (list_pp pp_semi_fexp pp_fexp) fexps kwd "}"
+ | E_list(exps) -> fprintf ppf "@[<0>%a%a%a@]" kwd "[||" (list_pp pp_comma_exp pp_exp) exps kwd "||]"
+ | E_cons(e1,e2) -> fprintf ppf "@[<0>%a%a%a@]" pp_exp e1 kwd ":" pp_exp e2
+ | E_record(FES_aux(FES_Fexps(fexps,_),_)) -> fprintf ppf "@[<0>%a%a%a@]" kwd "{" (list_pp pp_semi_fexp pp_fexp) fexps kwd "}"
| E_record_update(exp,(FES_aux(FES_Fexps(fexps,_),_))) ->
- fprintf ppf "@[<0> %a %a %a %a %a @]" kwd "{" pp_exp exp kwd " with " (list_pp pp_semi_fexp pp_fexp) fexps kwd "}"
- | E_field(fexp,id) -> fprintf ppf "@[<0> %a%a%a@]" pp_exp fexp kwd "." pp_id id
- | E_case(exp,pexps) -> fprintf ppf "@[<0> %a %a %a %a %a@]" kwd "switch " pp_exp exp kwd "{" (list_pp pp_case pp_case) pexps kwd "}"
- | E_let(leb,exp) -> fprintf ppf "@[<0> %a@ %a@ %a @]" pp_let leb kwd "in" pp_exp exp
- | E_assign(lexp,exp) -> fprintf ppf "@[<0> %a %a %a@]" pp_lexp lexp kwd " := " pp_exp exp
+ fprintf ppf "@[<0>%a%a %a %a%a@]" kwd "{" pp_exp exp kwd " with " (list_pp pp_semi_fexp pp_fexp) fexps kwd "}"
+ | E_field(fexp,id) -> fprintf ppf "@[<0>%a%a%a@]" pp_exp fexp kwd "." pp_id id
+ | E_case(exp,pexps) -> fprintf ppf "@[<0>%a %a %a %a %a@]" kwd "switch " pp_exp exp kwd "{" (list_pp pp_case pp_case) pexps kwd "}"
+ | E_let(leb,exp) -> fprintf ppf "@[<0>%a@ %a@ %a@]" pp_let leb kwd "in" pp_exp exp
+ | E_assign(lexp,exp) -> fprintf ppf "@[<0>%a%a%a@]" pp_lexp lexp kwd " := " pp_exp exp
-and pp_semi_exp ppf e = fprintf ppf "@[<1>%a %a@]" pp_exp e kwd ";"
+and pp_semi_exp ppf e = fprintf ppf "@[<1>%a%a@]" pp_exp e kwd ";"
-and pp_comma_exp ppf e = fprintf ppf "@[<1>%a %a@]" pp_exp e kwd ","
+and pp_comma_exp ppf e = fprintf ppf "@[<1>%a%a@]" pp_exp e kwd ","
and pp_fexp ppf (FE_aux(FE_Fexp(id,exp),_)) = fprintf ppf "@[<1>%a %a %a@]" pp_id id kwd " = " pp_exp exp
-and pp_semi_fexp ppf fexp = fprintf ppf "@[<1>%a %a@]" pp_fexp fexp kwd ";"
+and pp_semi_fexp ppf fexp = fprintf ppf "@[<1>%a%a@]" pp_fexp fexp kwd ";"
and pp_case ppf (Pat_aux(Pat_exp(pat,exp),_)) =
- fprintf ppf "@[<1>%a %a@ @[<1> %a @] @]" pp_pat_atomic pat kwd "-> " pp_exp exp
+ fprintf ppf "@[<1>%a %a@@[<1>%a@]@]" pp_pat_atomic pat kwd "-> " pp_exp exp
and pp_lexp ppf (LEXP_aux(lexp,_)) =
match lexp with
| LEXP_id(id) -> pp_id ppf id
| LEXP_memory(id,args) -> fprintf ppf "@[%a(%a)@]" pp_id id (list_pp pp_exp pp_exp) args
- | LEXP_vector(v,exp) -> fprintf ppf "@[%a %a %a %a@]" pp_lexp v kwd "[" pp_exp exp kwd "]"
- | LEXP_vector_range(v,e1,e2) -> fprintf ppf "@[%a %a %a %a %a %a@]" pp_lexp v kwd "[" pp_exp e1 kwd ":" pp_exp e2 kwd "]"
+ | LEXP_vector(v,exp) -> fprintf ppf "@[%a%a%a%a@]" pp_lexp v kwd "[" pp_exp exp kwd "]"
+ | LEXP_vector_range(v,e1,e2) -> fprintf ppf "@[%a%a%a%a%a%a@]" pp_lexp v kwd "[" pp_exp e1 kwd ":" pp_exp e2 kwd "]"
| LEXP_field(v,id) -> fprintf ppf "@[%a%a%a@]" pp_lexp v kwd "." pp_id id
let pp_default ppf (DT_aux(df,_)) =
@@ -281,8 +282,8 @@ let pp_namescm ppf (Name_sect_aux(ns,_)) =
let rec pp_range ppf (BF_aux(r,_)) =
match r with
| BF_single(i) -> fprintf ppf "%i" i
- | BF_range(i1,i2) -> fprintf ppf "%i .. %i" i1 i2
- | BF_concat(ir1,ir2) -> fprintf ppf "%a %a %a" pp_range ir1 kwd ", " pp_range ir2
+ | BF_range(i1,i2) -> fprintf ppf "%i..%i" i1 i2
+ | BF_concat(ir1,ir2) -> fprintf ppf "%a%a %a" pp_range ir1 kwd ", " pp_range ir2
let pp_typdef ppf (TD_aux(td,_)) =
match td with
@@ -291,7 +292,7 @@ let pp_typdef ppf (TD_aux(td,_)) =
| TD_record(id,nm,typq,fs,_) ->
let f_pp ppf (typ,id) =
fprintf ppf "@[<1>%a %a%a@]" pp_typ typ pp_id id kwd ";" in
- fprintf ppf "@[<0>%a %a %a %a %a %a %a %a@[<1>%a@] %a]@\n"
+ fprintf ppf "@[<0>%a %a %a%a %a %a %a%a@[<1>%a@]%a@]@\n"
kwd "typedef" pp_id id pp_namescm nm kwd "=" kwd "const" kwd "struct" pp_typquant typq kwd "{" (list_pp f_pp f_pp) fs kwd "}"
| TD_variant(id,nm,typq,ar,_) ->
let a_pp ppf (Tu_aux(typ_u,_)) =
@@ -299,16 +300,16 @@ let pp_typdef ppf (TD_aux(td,_)) =
| Tu_ty_id(typ,id) -> fprintf ppf "@[<1>%a %a%a@]" pp_typ typ pp_id id kwd ";"
| Tu_id(id) -> fprintf ppf "@[<1>%a%a@]" pp_id id kwd ";"
in
- fprintf ppf "@[<0>%a %a %a %a %a %a %a %a@[<1>%a@] %a]@\n"
+ fprintf ppf "@[<0>%a %a %a %a %a %a %a %a@[<1>%a@] %a@]@\n"
kwd "typedef" pp_id id pp_namescm nm kwd "=" kwd "const" kwd "union" pp_typquant typq kwd "{" (list_pp a_pp a_pp) ar kwd "}"
| TD_enum(id,ns,enums,_) ->
let pp_id_semi ppf id = fprintf ppf "%a%a " pp_id id kwd ";" in
fprintf ppf "@[<0>%a %a %a %a %a %a%a %a@]@\n"
kwd "typedef" pp_id id pp_namescm ns kwd "=" kwd "enumerate" kwd "{" (list_pp pp_id_semi pp_id) enums kwd "}"
| TD_register(id,n1,n2,rs) ->
- let pp_rid ppf (r,id) = fprintf ppf "%a %a %a%a " pp_range r kwd ":" pp_id id kwd ";" in
+ let pp_rid ppf (r,id) = fprintf ppf "%a%a%a%a " pp_range r kwd ":" pp_id id kwd ";" in
let pp_rids = (list_pp pp_rid pp_rid) in
- fprintf ppf "@[<0>%a %a %a %a %a %a %a %a %a %a %a %a%a@]@\n"
+ fprintf ppf "@[<0>%a %a %a %a %a %a%a%a%a%a %a%a%a@]@\n"
kwd "typedef" pp_id id kwd "=" kwd "register" kwd "bits" kwd "[" pp_nexp n1 kwd ":" pp_nexp n2 kwd "]" kwd "{" pp_rids rs kwd "}"
let pp_rec ppf (Rec_aux(r,_)) =
@@ -318,7 +319,7 @@ let pp_rec ppf (Rec_aux(r,_)) =
let pp_tannot_opt ppf (Typ_annot_opt_aux(t,_)) =
match t with
- | Typ_annot_opt_some(tq,typ) -> fprintf ppf "%a %a " pp_typquant tq pp_typ typ
+ | Typ_annot_opt_some(tq,typ) -> fprintf ppf "%a%a " pp_typquant tq pp_typ typ
let pp_effects_opt ppf (Effect_opt_aux(e,_)) =
match e with
@@ -326,11 +327,11 @@ let pp_effects_opt ppf (Effect_opt_aux(e,_)) =
| Effect_opt_effect e -> fprintf ppf "effect %a" pp_effects e
let pp_funcl ppf (FCL_aux(FCL_Funcl(id,pat,exp),_)) =
- fprintf ppf "@[<0>%a %a %a @[<1>%a@] @]@\n" pp_id id pp_pat_atomic pat kwd "=" pp_exp exp
+ fprintf ppf "%a %a %a @[<1>%a@]@\n" pp_id id pp_pat_atomic pat kwd "=" pp_exp exp
let pp_fundef ppf (FD_aux(FD_function(r, typa, efa, fcls),_)) =
let pp_funcls ppf funcl = fprintf ppf "%a %a" kwd "and" pp_funcl funcl in
- fprintf ppf "@[<0>%a %a%a%a %a@ @[<1>%a@] @]@\n"
+ fprintf ppf "@[<0>%a %a%a%a @[<1>%a@] @[<1>%a@] @]@\n"
kwd "function" pp_rec r pp_tannot_opt typa pp_effects_opt efa pp_funcl (List.hd fcls) (list_pp pp_funcls pp_funcls) (List.tl fcls)
let pp_def ppf (DEF_aux(d,(l,_))) =
@@ -339,7 +340,7 @@ let pp_def ppf (DEF_aux(d,(l,_))) =
| DEF_spec(v_spec) -> pp_spec ppf v_spec
| DEF_type(t_def) -> pp_typdef ppf t_def
| DEF_fundef(f_def) -> pp_fundef ppf f_def
- | DEF_val(lbind) -> pp_let ppf lbind
+ | DEF_val(lbind) -> fprintf ppf "@[<0>%a@]@\n" pp_let lbind
| DEF_reg_dec(typ,id) -> fprintf ppf "@[<0>%a %a %a@]@\n" kwd "register" pp_typ typ pp_id id
| _ -> raise (Reporting_basic.err_unreachable l "initial_check didn't remove all scattered Defs")