(* Time-stamp: <modified the 26/02/2015 (at 13:44) by Erwan Jahier> *) (** Maps ident to entities (const, type et oper) in some particular contexts. *) (** Une AstTabSymbol.t est une association ``contextuelle'' entre des ident simples (string) et ce � quoi ils correspondent. N.B. il est inutile de g�rer les idents absolus (pack+nom) qui sont par d�finition NON-CONTEXTUELS. Dans une table, on a 3 espaces de noms, un par nature d'item (const, type et oper). ***********************************************************) open AstCore open Lxm (** Symbol table elements. *) type 'a elt = | Local of 'a | Imported of Lv6Id.long * static_param srcflagged list type t val create : unit -> t (** Manip de AstTabSymbol.t *) (** Raise a proper compil error message if not found *) val find_type : t -> Lv6Id.t -> Lxm.t -> (type_info Lxm.srcflagged) elt val find_const : t -> Lv6Id.t -> Lxm.t -> (const_info Lxm.srcflagged) elt val find_node : t -> Lv6Id.t -> Lxm.t -> (node_info Lxm.srcflagged) elt val find_pack_of_type : t -> Lv6Id.t -> Lxm.t -> Lv6Id.pack_name val find_pack_of_const : t -> Lv6Id.t -> Lxm.t -> Lv6Id.pack_name (** Ajout de nom d'item import�s (via uses) *) val add_import_const : t -> Lv6Id.pack_name -> Lv6Id.t -> Lv6Id.long -> unit val add_import_type : t -> Lv6Id.t -> Lv6Id.long -> unit val add_import_node : t -> Lv6Id.t -> Lv6Id.long -> static_param srcflagged list -> unit (** Add local items declaration *) val add_type : t -> Lv6Id.pack_name -> Lv6Id.t -> type_info Lxm.srcflagged -> unit val add_const : t -> Lv6Id.pack_name -> Lv6Id.t -> const_info Lxm.srcflagged -> unit val add_node : t -> Lv6Id.t -> node_info Lxm.srcflagged -> unit (** It�rer sur les items *) val iter_types: t -> (Lv6Id.t -> (type_info Lxm.srcflagged) elt -> unit) -> unit val iter_consts: t ->(Lv6Id.t -> (const_info Lxm.srcflagged) elt -> unit) -> unit val iter_nodes : t ->(Lv6Id.t -> (node_info Lxm.srcflagged) elt -> unit) -> unit