CoAlgExpSourceCOMPILATION/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).
type node = | AE_true| AE_false| AE_const of string| AE_iconst of string| AE_rconst of string| AE_ival of int| AE_rval of float| AE_support of CoIdent.t| AE_pre of CoIdent.t| AE_alias of CoIdent.t| AE_call of CoIdent.t * t list| AE_external_call of CoIdent.t
* CkIdentInfo.extern_info
* CkTypeEff.profile
* t listBatterie de "constructeurs"
Réference à une variable du support
Réference au pre d'une variable du support
Référence à un alias
Tout calcul est un appel, prédéfini ou non
val of_external_call :
CoIdent.t ->
CkIdentInfo.extern_info ->
CkTypeEff.profile ->
CkTypeEff.t ->
t list ->
tAffichage prefixé sur os
Affichage infixé (autant que possible) sur os n.b. compatible Lustre/Lucky