let rec _Changer_Type_Assign nomModule sonExpr hashTable =
match sonExpr with
Binaire (exprL, binOp, exprR) ->
let gauche = (_Changer_Type_Assign nomModule exprL hashTable)
in
let droite = (_Changer_Type_Assign nomModule exprR hashTable)
in
Binaire(gauche, binOp, droite)
| Varia (id, _) ->
Varia((_Changer_Type_Var nomModule id hashTable))
| Construct(_) ->
raise Cas_impossible
| Unaire (unOp, exprR) ->
let droite = (_Changer_Type_Assign nomModule exprR hashTable)
in
Unaire(unOp, droite)
| Case([]) ->
Case([])
| Case ((condition, exprR)::liste_case) ->
(match (_Changer_Type_Assign nomModule (Case(liste_case)) hashTable) with
Case(reste) ->
let gauche = (_Changer_Type_Assign nomModule condition hashTable)
in
let droite = (_Changer_Type_Assign nomModule exprR hashTable)
in
Case((gauche,droite)::reste)
| _ ->
raise Cas_impossible)
| Ensemble(_) ->
raise Cas_impossible
| expr ->
expr