diff options
| author | Thomas Bauereiss | 2020-01-03 13:08:58 +0000 |
|---|---|---|
| committer | Thomas Bauereiss | 2020-01-03 13:08:58 +0000 |
| commit | 8809d3154fcd6950c8cc2abc1a946eb6924f7836 (patch) | |
| tree | f9f1d02ca6866a0aed5af334ae3df83c9570fc61 /src | |
| parent | b11c78ccd90b10a7d8502a63881361c03324c838 (diff) | |
Add Sail pretty-printing of bitfields
Diffstat (limited to 'src')
| -rw-r--r-- | src/pretty_print_sail.ml | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/pretty_print_sail.ml b/src/pretty_print_sail.ml index 218ebf22..322c60b7 100644 --- a/src/pretty_print_sail.ml +++ b/src/pretty_print_sail.ml @@ -627,6 +627,12 @@ let doc_field (typ, id) = let doc_union (Tu_aux (Tu_ty_id (typ, id), l)) = separate space [doc_id id; colon; doc_typ typ] +let rec doc_index_range (BF_aux (ir, _)) = + match ir with + | BF_single i -> doc_nexp i + | BF_range (i, j) -> doc_nexp i ^^ string ".." ^^ doc_nexp j + | BF_concat (i, j) -> doc_index_range i ^^ comma ^^ space ^^ doc_index_range j + let doc_typ_arg_kind sep (A_aux (aux, _)) = match aux with | A_nexp _ -> space ^^ string sep ^^ space ^^string "Int" @@ -655,7 +661,10 @@ let doc_typdef (TD_aux(td,_)) = match td with | TD_variant (id, TypQ_aux (TypQ_tq qs, _), unions, _) -> separate space [string "union"; doc_id id; doc_param_quants qs; equals; surround 2 0 lbrace (separate_map (comma ^^ break 1) doc_union unions) rbrace] - | TD_bitfield _ -> string "BITFIELD" (* should be rewritten *) + | TD_bitfield (id, typ, fields) -> + let doc_field (id, range) = separate space [doc_id id; colon; doc_index_range range] in + doc_op equals (separate space [string "bitfield"; doc_id id; colon; doc_typ typ]) + (surround 2 0 lbrace (separate_map (comma ^^ break 1) doc_field fields) rbrace) let doc_spec ?comment:(comment=false) (VS_aux (v, annot)) = let doc_extern ext = |
