src/Pure/Syntax/printer.ML
changeset 19482 9f11af8f7ef9
parent 19374 ae4a225e0c1f
child 21748 7df0f4e08dde
equal deleted inserted replaced
19481:a6205c6203ea 19482:9f11af8f7ef9
   190   Block of int * symb list;
   190   Block of int * symb list;
   191 
   191 
   192 type prtabs = (string * ((symb list * int * int) list) Symtab.table) list;
   192 type prtabs = (string * ((symb list * int * int) list) Symtab.table) list;
   193 
   193 
   194 fun mode_tab prtabs mode = the_default Symtab.empty (AList.lookup (op =) prtabs mode);
   194 fun mode_tab prtabs mode = the_default Symtab.empty (AList.lookup (op =) prtabs mode);
   195 fun mode_tabs prtabs modes = List.mapPartial (AList.lookup (op =) prtabs) (modes @ [""]);
   195 fun mode_tabs prtabs modes = map_filter (AList.lookup (op =) prtabs) (modes @ [""]);
   196 
   196 
   197 
   197 
   198 (* xprod_to_fmt *)
   198 (* xprod_to_fmt *)
   199 
   199 
   200 fun xprod_to_fmt (SynExt.XProd (_, _, "", _)) = NONE
   200 fun xprod_to_fmt (SynExt.XProd (_, _, "", _)) = NONE
   242 
   242 
   243 val empty_prtabs = [];
   243 val empty_prtabs = [];
   244 
   244 
   245 fun change_prtabs f mode xprods prtabs =
   245 fun change_prtabs f mode xprods prtabs =
   246   let
   246   let
   247     val fmts = List.mapPartial xprod_to_fmt xprods;
   247     val fmts = map_filter xprod_to_fmt xprods;
   248     val tab = fold f fmts (mode_tab prtabs mode);
   248     val tab = fold f fmts (mode_tab prtabs mode);
   249   in AList.update (op =) (mode, tab) prtabs end;
   249   in AList.update (op =) (mode, tab) prtabs end;
   250 
   250 
   251 fun extend_prtabs m = change_prtabs Symtab.update_list m;
   251 fun extend_prtabs m = change_prtabs Symtab.update_list m;
   252 fun remove_prtabs m = change_prtabs (Symtab.remove_list (op =)) m;
   252 fun remove_prtabs m = change_prtabs (Symtab.remove_list (op =)) m;