package catala

  1. Overview
  2. Docs
Compiler and library for the literate programming language for tax code specification

Install

dune-project
 Dependency

Authors

Maintainers

Sources

1.0.0-alpha.tar.gz
md5=2615968670ac21b1d00386a9b04b3843
sha512=eff292fdd75012f26ce7b17020f5a8374eef37cd4dd6ba60338dfbe89fbcad3443d1b409e44c182b740da9f58dff7e76dcb8ddefe47f9b2b160666d1c6930143

doc/catala.shared_ast/Shared_ast/Renaming/index.html

Module Shared_ast.RenamingSource

Sourcetype config = {
  1. reserved : string list;
    (*

    Use for keywords and built-ins

    *)
  2. sanitize_varname : string -> string;
    (*

    Typically String.to_snake_case

    *)
  3. skip_constant_binders : bool;
    (*

    See Bindlib.Renaming

    *)
  4. constant_binder_name : string option;
    (*

    See Bindlib.Renaming

    *)
}
Sourcetype context
Sourceval default_config : config
Sourceval get_ctx : config -> context
Sourceval unbind_in : context -> ('e, 'b) Bindlib.binder -> ('e, _) Catala_utils.Mark.ed Var.t * 'b * context
Sourceval unmbind_in : context -> ('e, 'b) Bindlib.mbinder -> ('e, _) Catala_utils.Mark.ed Var.t Array.t * 'b * context
Sourceval new_id : context -> string -> string * context
Sourceval new_var_id : context -> string -> string * context
Sourceval reserve_name : context -> string -> context
Sourceval 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
Sourceval typ : context -> Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos -> Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos
Sourceval 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

Sourceval scope_name : context -> Shared_ast__.Definitions.ScopeName.t -> Shared_ast__.Definitions.ScopeName.t
Sourceval topdef_name : context -> Shared_ast__.Definitions.TopdefName.t -> Shared_ast__.Definitions.TopdefName.t
Sourceval struct_name : context -> Shared_ast__.Definitions.StructName.t -> Shared_ast__.Definitions.StructName.t
Sourceval enum_name : context -> Shared_ast__.Definitions.EnumName.t -> Shared_ast__.Definitions.EnumName.t
Sourceval 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
Sourcetype t

Enclosing of a polymorphic renaming function, to be used by apply

Sourceval apply : t -> 'e Shared_ast__.Definitions.program -> 'e Shared_ast__.Definitions.program * context
Sourceval 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.

Sourceval default : t

Basic defaults for minimal renaming, without any reserved keywords, intended for printing intermediate ASTs