diff options
| author | Thomas Bauereiss | 2017-10-13 15:46:53 +0100 |
|---|---|---|
| committer | Thomas Bauereiss | 2017-10-13 17:23:39 +0100 |
| commit | 2ced2254c30061598a3e30f19131122213f3c18b (patch) | |
| tree | 0bf3953156201d296830167692529f3e1c60e8b8 /src/pretty_print_sail.ml | |
| parent | 31b19d42bba272eb358887ab31cb4e221c51060c (diff) | |
Improve debugging output
With -ddump_rewrite_ast, pretty-print Sail code after each rewriting step in
addition to dumping the AST.
Diffstat (limited to 'src/pretty_print_sail.ml')
| -rw-r--r-- | src/pretty_print_sail.ml | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/pretty_print_sail.ml b/src/pretty_print_sail.ml index 0f8e482a..d346c801 100644 --- a/src/pretty_print_sail.ml +++ b/src/pretty_print_sail.ml @@ -177,7 +177,8 @@ let doc_exp, doc_let = and starstar_exp ((E_aux(e,_)) as expr) = match e with | E_app_infix(l,(Id_aux(Id "**",_) as op),r) -> doc_op (doc_id op) (starstar_exp l) (app_exp r) - | E_if _ | E_for _ | E_loop _ | E_let _ -> right_atomic_exp expr + | E_if _ | E_for _ | E_loop _ | E_let _ + | E_internal_let _ | E_internal_plet _ -> right_atomic_exp expr | _ -> app_exp expr and right_atomic_exp ((E_aux(e,_)) as expr) = match e with (* Special case: omit "else ()" when the else branch is empty. *) @@ -208,6 +209,18 @@ let doc_exp, doc_let = )) ^/^ exp exp4 | E_let(leb,e) -> doc_op (string "in") (let_exp leb) (exp e) + | E_internal_let (lexp, exp1, exp2) -> + let le = + prefix 2 1 + (separate space [string "internal_let"; doc_lexp lexp; equals]) + (exp exp1) in + doc_op (string "in") le (exp exp2) + | E_internal_plet (pat, exp1, exp2) -> + let le = + prefix 2 1 + (separate space [string "internal_plet"; doc_pat pat; equals]) + (exp exp1) in + doc_op (string "in") le (exp exp2) | _ -> group (parens (exp expr)) and app_exp ((E_aux(e,_)) as expr) = match e with | E_app(f,args) -> @@ -303,6 +316,7 @@ let doc_exp, doc_let = | E_app (_, _)|E_vector_access (_, _)|E_vector_subrange (_, _, _) | E_cons (_, _)|E_field (_, _)|E_assign (_, _) | E_if _ | E_for _ | E_loop _ | E_let _ + | E_internal_let _ | E_internal_plet _ | E_vector_append _ | E_app_infix (_, (* for every app_infix operator caught at a higher precedence, @@ -346,8 +360,8 @@ let doc_exp, doc_let = | E_internal_exp_user _ -> raise (Reporting_basic.err_unreachable Unknown ("internal_exp_user not rewritten away")) | E_internal_cast ((_, Overload (_, _,_ )), _) | E_internal_exp _ -> assert false *) - | E_internal_let (lexp, exp1, exp2) -> - separate space [string "internal let"; doc_lexp lexp; equals; exp exp1; string "in"; exp exp2] + | E_internal_return exp1 -> + separate space [string "internal_return"; exp exp1] | _ -> failwith ("Cannot print: " ^ Ast_util.string_of_exp expr) and let_exp (LB_aux(lb,_)) = match lb with | LB_val(pat,e) -> |
