(* aintv.mli, Caml Light version 0.73 *) #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 | FPNDYN of string | FPNSTAT of string;; (* 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) ;; (* 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 ;; value fparsbody : string * (function_declaration list) -> isdeclfun ;; (*** pile a l'execution ***) (* appel de fonction : empiler la liaison de parametres b sur *) (* l'environnement r *) value push : activation * environment -> environment ;; (* retour de fonction: depiler la liaison de parametres b de *) (* l'environnement r *) value 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 *) value val_in_bindings : activation -> find ;; (* recherche dans la pile d'execution *) value 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 *) value assign_in_bindings : string * val * bindings -> assign ;; (* affectation dans la pile d'execution *) value assign_env : string * val * environment -> environment ;; (*** interpretation d'un programme ***) (* trace d'execution elementaire *) value istracing : bool ref ;; value trace_eval : unit -> unit ;; value untrace_eval : unit -> unit ;; (* impression du resultat de l'evaluation *) value echo_result : environment * val -> unit ;; (* evaluation du programme p *) value evalprog : prog -> unit ;; (*value message_initial : unit;;*)