src/Pure/Tools/codegen_serializer.ML
changeset 22846 fb79144af9a3
parent 22845 5f9138bcb3d7
child 23513 2ebb50c0db4f
equal deleted inserted replaced
22845:5f9138bcb3d7 22846:fb79144af9a3
  1537     ))
  1537     ))
  1538   else
  1538   else
  1539     error ("Incompatible serializers: " ^ quote target);
  1539     error ("Incompatible serializers: " ^ quote target);
  1540 
  1540 
  1541 structure CodegenSerializerData = TheoryDataFun
  1541 structure CodegenSerializerData = TheoryDataFun
  1542 (struct
  1542 (
  1543   val name = "Pure/codegen_serializer";
       
  1544   type T = target Symtab.table;
  1543   type T = target Symtab.table;
  1545   val empty = Symtab.empty;
  1544   val empty = Symtab.empty;
  1546   val copy = I;
  1545   val copy = I;
  1547   val extend = I;
  1546   val extend = I;
  1548   fun merge _ = Symtab.join merge_target;
  1547   fun merge _ = Symtab.join merge_target;
  1549   fun print _ _ = ();
  1548 );
  1550 end);
       
  1551 
  1549 
  1552 fun the_serializer (Target { serializer, ... }) = serializer;
  1550 fun the_serializer (Target { serializer, ... }) = serializer;
  1553 fun the_reserved (Target { reserved, ... }) = reserved;
  1551 fun the_reserved (Target { reserved, ... }) = reserved;
  1554 fun the_syntax_expr (Target { syntax_expr = SyntaxExpr x, ... }) = x;
  1552 fun the_syntax_expr (Target { syntax_expr = SyntaxExpr x, ... }) = x;
  1555 fun the_syntax_modl (Target { syntax_modl = SyntaxModl x, ... }) = x;
  1553 fun the_syntax_modl (Target { syntax_modl = SyntaxModl x, ... }) = x;
  1585 val target_OCaml = "OCaml";
  1583 val target_OCaml = "OCaml";
  1586 val target_Haskell = "Haskell";
  1584 val target_Haskell = "Haskell";
  1587 val target_diag = "diag";
  1585 val target_diag = "diag";
  1588 
  1586 
  1589 val _ = Context.add_setup (
  1587 val _ = Context.add_setup (
  1590   CodegenSerializerData.init
  1588   add_serializer (target_SML, isar_seri_sml)
  1591   #> add_serializer (target_SML, isar_seri_sml)
       
  1592   #> add_serializer (target_OCaml, isar_seri_ocaml)
  1589   #> add_serializer (target_OCaml, isar_seri_ocaml)
  1593   #> add_serializer (target_Haskell, isar_seri_haskell)
  1590   #> add_serializer (target_Haskell, isar_seri_haskell)
  1594   #> add_serializer (target_diag, (fn _ => fn _ => fn _ => seri_diagnosis))
  1591   #> add_serializer (target_diag, (fn _ => fn _ => fn _ => seri_diagnosis))
  1595 );
  1592 );
  1596 
  1593