package lutin

  1. Overview
  2. Docs

Module CheckEnvSource

TYPE/BINDING CHECK : environnement

C'est la structure qui permet :

  • de réaliser le type/binding check (cf. CheckType)
  • de conserver, après ce check, les infos calculées/inférées

Toute référence à un identificateur est identifiée de manière UNIQUE par son ident (string + lexeme).

Au cours du check, on utilise TROIS tables :

  • une table "dynamique" de scoping "string -> ident_info" qui permet de résoudre les référence sous "scope"
  • une table GLOBALE de binding "ident -> ident_info" remplie au fur et à mesure que les références sont résolue
  • une table de typage des "val_exp -> CkTypeEff.t" n.b. les val_exp SONT identifiées de manière unique par leur lexeme

N.B. voir sous-module : CkTypeEff CkIdentInfo

N.B. Les identificateurs d'exceptions sont traités comme des constantes abstraites de type CkTypeEff.except -------------------------------------------------------------

Sourcetype t
Sourceval create : unit -> t
Sourceval copy : t -> t
Sourceval add_libs : t -> string list -> t
Sourceval get_exp_type : t -> Syntaxe.val_exp -> CkTypeEff.t
Sourceval get_binding : t -> Syntaxe.ident -> CkIdentInfo.t
Sourceval set_exp_type : t -> Syntaxe.val_exp -> CkTypeEff.t -> unit
Sourcetype scope_key
Sourceval restore : t -> scope_key -> unit
Sourcetype typed_ids = (Syntaxe.ident * Syntaxe.type_exp) list
Sourcetype eff_typed_ids = (Syntaxe.ident * CkTypeEff.t) list
Sourceval add_formal_params : t -> typed_ids option -> scope_key
Sourceval add_support_vars : t -> eff_typed_ids -> scope_key
Sourceval add_global_cst : t -> Syntaxe.ident -> CkTypeEff.t -> scope_key
Sourceval add_local_cst : t -> Syntaxe.ident -> CkTypeEff.t -> scope_key
Sourceval add_support_profile : t -> eff_typed_ids -> eff_typed_ids -> scope_key
Sourceval add_predef_op : t -> string -> CkTypeEff.profile -> scope_key
Sourceval add_predef_cst : t -> string -> CkTypeEff.t -> scope_key
Sourceval get_ident_info : t -> Syntaxe.ident -> CkIdentInfo.t
Sourceval nature_of_ident : t -> Syntaxe.ident -> CkIdentInfo.nature
Sourceval type_of_ident : t -> Syntaxe.ident -> CkTypeEff.t
Sourceval dbg_dump : t -> unit
OCaml

Innovation. Community. Security.