package catala
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=2615968670ac21b1d00386a9b04b3843
sha512=eff292fdd75012f26ce7b17020f5a8374eef37cd4dd6ba60338dfbe89fbcad3443d1b409e44c182b740da9f58dff7e76dcb8ddefe47f9b2b160666d1c6930143
doc/catala.shared_ast/Shared_ast/Renaming/index.html
Module Shared_ast.Renaming
Source
type config = {
reserved : string list;
(*Use for keywords and built-ins
*)sanitize_varname : string -> string;
(*Typically String.to_snake_case
*)skip_constant_binders : bool;
(*See
*)Bindlib.Renaming
constant_binder_name : string option;
(*See
*)Bindlib.Renaming
}
val unbind_in :
context ->
('e, 'b) Bindlib.binder ->
('e, _) Catala_utils.Mark.ed Var.t * 'b * context
val unmbind_in :
context ->
('e, 'b) Bindlib.mbinder ->
('e, _) Catala_utils.Mark.ed Var.t Array.t * 'b * context
val set_rewriters :
?scopes:
(Shared_ast__.Definitions.ScopeName.t ->
Shared_ast__.Definitions.ScopeName.t) ->
?topdefs:
(Shared_ast__.Definitions.TopdefName.t ->
Shared_ast__.Definitions.TopdefName.t) ->
?structs:
(Shared_ast__.Definitions.StructName.t ->
Shared_ast__.Definitions.StructName.t) ->
?fields:
(Shared_ast__.Definitions.StructField.t ->
Shared_ast__.Definitions.StructField.t) ->
?enums:
(Shared_ast__.Definitions.EnumName.t ->
Shared_ast__.Definitions.EnumName.t) ->
?constrs:
(Shared_ast__.Definitions.EnumConstructor.t ->
Shared_ast__.Definitions.EnumConstructor.t) ->
context ->
context
val typ :
context ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos
val expr :
context ->
(('a Shared_ast__.Definitions.any, 'a Shared_ast__.Definitions.any, 'm)
Shared_ast__.Definitions.base_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed ->
(('a, 'a, 'm) Shared_ast__.Definitions.base_gexpr Bindlib.box,
'm Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed
Disambiguates all variable names in e
, and renames structs, fields, enums and constrs according to the given context configuration
val code_items :
context ->
(Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos) ->
(((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 'm)
Shared_ast__.Definitions.base_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed as 'e,
(((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 'm)
Shared_ast__.Definitions.base_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed as 'e)
Shared_ast__.Definitions.code_item,
(Shared_ast__.Definitions.code_export_kind
* (((_ Shared_ast__.Definitions.any, _ Shared_ast__.Definitions.any, 'm)
Shared_ast__.Definitions.base_gexpr,
'm Shared_ast__.Definitions.mark)
Catala_utils.Mark.ed as 'e))
list)
Shared_ast__.Definitions.bound_list ->
('e,
'e Shared_ast__.Definitions.code_item,
(Shared_ast__.Definitions.code_export_kind * 'e) list)
Shared_ast__.Definitions.bound_list
* context
Enclosing of a polymorphic renaming function, to be used by apply
val program :
reserved:string list ->
skip_constant_binders:bool ->
constant_binder_name:string option ->
namespaced_fields:bool ->
namespaced_constrs:bool ->
prefix_module:bool ->
modnames_conflict:bool ->
?f_var:(string -> string) ->
?f_struct:(string -> string) ->
?f_field:(string -> string) ->
?f_enum:(string -> string) ->
?f_constr:(string -> string) ->
unit ->
t
Renames all idents (variables, types, struct and enum names, fields and constructors) to dispel ambiguities in the target language. Names in reserved
, typically keywords and built-ins, will be avoided ; the meaning of the following three flags is described in Bindlib.Renaming
.
if namespaced_fields
(resp. _constrs
) is true, then struct fields (resp. enum constructors) can reuse names from other fields/constructors or other idents.
if prefix_module
is true, the qualifying module name is inserted within the ident string, separated with a .
dot. This happens before sanitization.
if modnames_conflict
is true, module names can conflict with type names, constructors and fields, and they will be avoided when renaming those.
The f_*
optional arguments sanitize the different kinds of ids. The default is what is used for OCaml: project to ASCII, capitalise structs, enums (both modules in the backend) and constructors, lowercase fields, and rewrite variables to snake case.
In the returned program, it is safe to directly use `Bindlib.name_of` on variables for printing. The same is true for `StructName.get_info` etc.