]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/contribs/assembly/compiler/preast_tree.ma
mod change (-x)
[helm.git] / helm / software / matita / contribs / assembly / compiler / preast_tree.ma
old mode 100755 (executable)
new mode 100644 (file)
index fcc1fbf..6ad8c3d
@@ -20,8 +20,6 @@
 (* ********************************************************************** *)
 
 include "string/string.ma".
-include "compiler/utility.ma".
-include "freescale/word32.ma".
 include "compiler/ast_type.ma".
 
 (* ****************** *)
@@ -44,6 +42,9 @@ inductive preast_expr : Type ≝
 | PREAST_EXPR_DIV: preast_expr → preast_expr → preast_expr
 | PREAST_EXPR_SHR: preast_expr → preast_expr → preast_expr
 | PREAST_EXPR_SHL: preast_expr → preast_expr → preast_expr
+| PREAST_EXPR_AND: preast_expr → preast_expr → preast_expr
+| PREAST_EXPR_OR:  preast_expr → preast_expr → preast_expr
+| PREAST_EXPR_XOR: preast_expr → preast_expr → preast_expr
 
 | PREAST_EXPR_GT : preast_expr → preast_expr → preast_expr
 | PREAST_EXPR_GTE: preast_expr → preast_expr → preast_expr
@@ -69,6 +70,25 @@ with preast_var : Type ≝
 
 (* -------------------------- *)
 
+(* inizializzatori: ... valori ... *)
+inductive preast_init_val : Type ≝
+  PREAST_INIT_VAL_BYTE8: byte8 → preast_init_val
+| PREAST_INIT_VAL_WORD16: word16 → preast_init_val
+| PREAST_INIT_VAL_WORD32: word32 → preast_init_val
+| PREAST_INIT_VAL_ARRAY: ne_list preast_init_val → preast_init_val
+| PREAST_INIT_VAL_STRUCT: ne_list preast_init_val → preast_init_val.
+
+(*
+ inizializzatori: ammesse solo due forme, no ibridi
+  1) var1 = var2
+  2) var = ... valori ...
+*)
+inductive preast_init : Type ≝
+  PREAST_INIT_VAR: preast_var → preast_init
+| PREAST_INIT_VAL: preast_init_val → preast_init.
+
+(* -------------------------- *)
+
 (* statement: assegnamento/while/if else if else *)
 inductive preast_stm : Type ≝
   PREAST_STM_ASG: preast_var → preast_expr → preast_stm
@@ -78,7 +98,8 @@ inductive preast_stm : Type ≝
 (* dichiarazioni *)
 with preast_decl : Type ≝
   PREAST_NO_DECL: list preast_stm → preast_decl
-| PREAST_DECL: bool → aux_str_type → ast_type → option preast_expr → preast_decl → preast_decl.
+| PREAST_CONST_DECL: aux_str_type → ast_type → preast_init → preast_decl → preast_decl
+| PREAST_VAR_DECL: aux_str_type → ast_type → option preast_init → preast_decl → preast_decl.
 
 (* -------------------------- *)