COMPILATION/EXPANSION : expressions algébriques
------------------------------------------------------------
Représentation des expressions algébriques.
----------------------------------------------------------
C'est la structure utilisée pour toutes les expressions non "trace" (grosso/modo du Lustre !).
La structure est très simple~: on distingue plusieurs cas de feuilles, et un seul cas de noeud (opérateur).
Elle contient, dès la construction, les infos sémantiques associées : type de valeur et "controlabilité".
Rappel~: une alg_exp est contrôlable si et seulement si elle contient au moins une référence à une variable support contrôlable (output ou local).
Batterie de "constructeurs"
val of_iconst : string -> t
val of_rconst : string -> t
Réference à une variable du support
Réference au pre d'une variable du support
Tout calcul est un appel, prédéfini ou non
On donne quand même le and ...
val of_big_and : t list -> t
... et le ite i(il faut donner le type)
val is_controlable : t -> bool
Affichage prefixé sur stdout
Affichage infixé (autant que possible) sur os n.b. compatible Lustre/Lucky
val lus_dumps : t -> string
Affichage infixé (autant que possible) dans une string n.b. compatible Lustre/Lucky