Flanker :
j'avais déjà réfléchi à un truc de ce genre, et cet obstacle m'avait arrêté (et puis j'ai arrêté le basic, ça a pas mal joué)
le plus simple (je pense) est tout simplement d'interdire les expressions de calcul formel. C'est peut-être un peu violent, mais ça a l'avantage d'être simple.
Sinon, pour le changement de type, tu peux pas déclarer plusieurs variables, genre
3 -> x
"coucou" -> x
serait transformé en
int x_int = 3;
char[] x_char = "coucou\0";
?
J'ai repensé à cette architecture et j'ai réalisé qu'il y aurait un problème lorsque viendrait le temps de faire une opération comme
x -> y
comment choisir entre x_int et x_char. Ça reste une bonne idée, par contre.