12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061openPpxlibopenStdLabels(******************************************************************************)(* Deriver for types *)(** Instantiates the PPX deriver for [expr]s *)lettype_generator=Deriving.Generator.V2.make_noargType_deriver.generate_types_from_sig(** Registers the PPX deriver for the [expr] & [ty] type definitions *)lettype_deriver=Deriving.add"mica_types"~str_module_type_decl:type_generator(******************************************************************************)(* Deriver for [Interpret] functor *)letinterp_functor_gen_wrapper~ctxtmt=[Interp_deriver.generate_functor~ctxtmt](** Instantiates the PPX deriver for the [Interpret] functor *)letinterp_functor_gen=Deriving.Generator.V2.make_noarginterp_functor_gen_wrapper~deps:[type_deriver](** Registers the PPX deriver for the [Interpret] functor *)letinterp_deriver=Deriving.add"mica_interp_functor"~str_module_type_decl:interp_functor_gen(******************************************************************************)(* Deriver for [TestHarness] functor *)lettest_harness_functor_gen=Deriving.Generator.V2.make_noargTest_harness_deriver.generate_functor~deps:[interp_deriver]lettest_harness_deriver=Deriving.add"mica_test_harness"~str_module_type_decl:test_harness_functor_gen(******************************************************************************)(* Overall Mica PPX deriver *)(** Overall generator for all the derived code: composes all the auxiliary
derivers defined in this file and produces an overall module called [Mica]
that includes the rest of the derived code *)letmica_module_gen=Deriving.Generator.V2.make_noargOverall_deriver.generate_mica_moduleletoverall_mica_deriver=Deriving.add"mica"~str_module_type_decl:mica_module_gen(******************************************************************************)(* Main [mica] deriver *)(** Registers the main [mica] PPX deriver *)let()=List.iter~f:Reserved_namespaces.reserve["mica_types";"mica_interp_functor";"mica_test_harness";"mica"];overall_mica_deriver|>Deriving.ignore