feat: création de string_of_affectable

This commit is contained in:
Laurent Fainsin 2021-12-11 15:01:48 +01:00
parent fba95515fe
commit 3b73128050
4 changed files with 17 additions and 10 deletions

View file

@ -201,3 +201,10 @@ type fonction = Fonction of Tds.info_ast * Tds.info_ast list * bloc
type programme = Programme of fonction list * bloc type programme = Programme of fonction list * bloc
end end
(* Conversion des affectables *)
let rec string_of_affectable a =
match a with
| AstSyntax.Dref(n) -> (string_of_affectable n)
| AstSyntax.Ident(n) -> n ^ " "

View file

@ -103,10 +103,10 @@ let rec analyse_tds_instruction tds i =
end end
| AstSyntax.Affectation (n,e) -> | AstSyntax.Affectation (n,e) ->
begin begin
match chercherGlobalement tds n with match chercherGlobalement tds (string_of_affectable n) with
| None -> | None ->
(* L'identifiant n'est pas trouvé dans la tds globale. *) (* L'identifiant n'est pas trouvé dans la tds globale. *)
raise (IdentifiantNonDeclare n) raise (IdentifiantNonDeclare (string_of_affectable n))
| Some info -> | Some info ->
(* L'identifiant est trouvé dans la tds globale, (* L'identifiant est trouvé dans la tds globale,
il a donc déjà été déclaré. L'information associée est récupérée. *) il a donc déjà été déclaré. L'information associée est récupérée. *)
@ -121,7 +121,7 @@ let rec analyse_tds_instruction tds i =
Affectation (info, ne) Affectation (info, ne)
| _ -> | _ ->
(* Modification d'une constante ou d'une fonction *) (* Modification d'une constante ou d'une fonction *)
raise (MauvaiseUtilisationIdentifiant n) raise (MauvaiseUtilisationIdentifiant (string_of_affectable n))
end end
end end
| AstSyntax.Constante (n,v) -> | AstSyntax.Constante (n,v) ->

View file

@ -69,7 +69,7 @@ struct
let rec string_of_instruction i = let rec string_of_instruction i =
match i with match i with
| Declaration (t, n, e) -> "Declaration : "^(string_of_type t)^" "^n^" = "^(string_of_expression e)^"\n" | Declaration (t, n, e) -> "Declaration : "^(string_of_type t)^" "^n^" = "^(string_of_expression e)^"\n"
| Affectation (n,e) -> "Affectation : "^n^" = "^(string_of_expression e)^"\n" | Affectation (n,e) -> "Affectation : "^ (string_of_affectable n)^" = "^(string_of_expression e)^"\n"
| Constante (n,i) -> "Constante : "^n^" = "^(string_of_int i)^"\n" | Constante (n,i) -> "Constante : "^n^" = "^(string_of_int i)^"\n"
| Affichage e -> "Affichage : "^(string_of_expression e)^"\n" | Affichage e -> "Affichage : "^(string_of_expression e)^"\n"
| Conditionnelle (c,t,e) -> "Conditionnelle : IF "^(string_of_expression c)^"\n"^ | Conditionnelle (c,t,e) -> "Conditionnelle : IF "^(string_of_expression c)^"\n"^