6
| Integer (* le type des entiers *)
7
| Boolean (* le type des bool�ens *)
8
| Array of int * int * expr_type;; (* le type des tableaux *)
9
(* (les deux "int" sont les bornes) *)
11
| Constante of constante
13
| Application of string * expression list
14
| Op_unaire of string * expression
15
| Op_binaire of string * expression * expression
16
| Acc�s_tableau of expression * expression;;
19
| Affectation_var of string * expression
20
| Affectation_tableau of expression * expression * expression
21
| Appel of string * expression list (* appel de proc�dure *)
22
| If of expression * instruction * instruction
23
| While of expression * instruction
26
| Bloc of instruction list;; (* bloc begin ... end *)
29
{ proc_param�tres: (string * expr_type) list;
30
proc_variables: (string * expr_type) list;
31
proc_corps: instruction }
33
{ fonc_param�tres: (string * expr_type) list;
34
fonc_type_r�sultat: expr_type;
35
fonc_variables: (string * expr_type) list;
36
fonc_corps: instruction };;
39
{ prog_variables: (string * expr_type) list;
40
prog_proc�dures: (string * d�cl_proc) list;
41
prog_fonctions: (string * d�cl_fonc) list;
42
prog_corps: instruction };;
44
val lire_programme : char Stream.t -> programme;;