(* aintv.mli, Objective Caml version 3.08.1 *) open Print;; (*** erreurs a l'execution (detectables par un compilateur) ***) exception Failure of string ;; (*** syntaxe abstraite ***) (* parametre formel par valeur *) type fpar = FPVAL of string | FPNECSTAT of string (* par necessite statique *) | FPNECDYN of string (* par necessite dynamique *) ;; (* liste de parametres formels *) type fpar_list = fpar list ;; (* fonction anonyme : liste des parametres formel, corps *) type anonymous_function = (fpar_list * expr) ;; (* declaration de fonction : nom fonction, fonction anonyme *) type function_declaration = (string * anonymous_function) ;; (* liste de declarations de fonctions *) type function_declaration_list = function_declaration list ;; (* programme : liste de declarations de fonctions, corps *) type prog = function_declaration_list * expr ;; (* recherche de la liste de parametres formels et du corps *) (* d'une fonction dans une liste de declarations *) type isdeclfun = FUNDECLARED of anonymous_function | FUNnotDECLARED ;; val fparsbody : string * function_declaration_list -> isdeclfun ;; (*** pile a l'execution ***) (* appel de fonction : empiler la liaison de parametres b sur *) (* l'environnement r *) val push : activation * environment -> environment ;; (* retour de fonction: depiler la liaison de parametres b de *) (* l'environnement r *) val pull : environment * activation -> environment * activation ;; (* valeur d'un parametre formel dans la pile d'execution *) type find = FOUND of parval | NotFOUND ;; (* recherche dans une liaison de parametres *) val val_in_bindings : activation -> find ;; (* recherche dans la pile d'execution *) val val_in_env : string * environment -> find ;; (* affectation d'une valeur a un parametre formel dans la *) (* pile d'execution *) type assign = ASSIGNED of bindings | NotASSIGNED of bindings ;; (* affectation dans une liaison de parametres *) val assign_in_bindings : string * value * bindings -> assign ;; (* affectation dans la pile d'execution *) val assign_env : string * value * environment -> environment ;; (*** interpretation d'un programme ***) (* trace d'execution elementaire *) val istracing : bool ref ;; val trace_eval : unit -> unit ;; val untrace_eval : unit -> unit ;; (* impression du resultat de l'evaluation *) val echo_result : environment * value -> unit ;; (* evaluation du programme p *) val evalprog : prog -> unit ;; (* val message_initial : unit;; *)