La forme structurée de l'information autorise deux choses :
- manipuler des entités structurellement cohérentes, en s'intéressant non pas à une suite de caractères mais à un nœud de l'arbre des textes, nœud qui est visuellement représenté par une suite de caractères ;
- avoir une vue structurée du texte construit : soit l'affichage dispensé permet de reconnaître un nœud (généralement on utilise un affichage en inverse vidéo de la suite de caractères qui dépendent directement du nœud) ; soit la forme visuelle du texte est rendue plus concise, par le remplacement des caractères attachés au nœud par une dénomination symbolique.
Dans le présent paragraphe, on s'intéresse à ce dernier point.
1. Présentation
2. L'élision dans la syntaxe initiale
3. L'opérateur d'élision
1. Présentation
La possibilité d'une vue concise de branches du programme demande l'introduction de deux notions :
- l'holophraste : c'est un attribut entier hérité de l'arbre (syntaxique) ;
- le procédé d'élision : c'est la spécification de schémas de décompilation différents du nœud (syntaxique) selon la valeur de l'holophraste.
Cette technique de gestion des formes élidées du programme est très classiquement utilisée dans les éditeurs structurés. Elle n'est cependant pas universelle : dans CPS (« Cornell Program Synthesizer » [TRH 81] [ReT 85]) la décision d'élider une branche de l'arbre syntaxique incombe à l'utilisateur ; l'argument avancé est que d'une manière automatique il est toujours difficile de deviner les intentions du programmeur ; aussi le laisse-t-on disposer librement de la possibilité d'élision, sans devancer ses désirs.
Dans l'approche classique, on observe également quelques différences :
- à la manière de Mentor [AnB 87] [MMV 85], l'élision est une propriété uniforme, qui remplace un schéma de décompilation complexe par une autre plus simple dès que l'holophraste est nul ;
- à la manière de Cépage [MeN 87], elle cherche à toujours donner à l'utilisateur une vision cohérente du programme : par exemple si l'on construit une fonction, le bloc de déclaration de la fonction sera toujours visible, il servira de « cadre d'édition » au code de la fonction, lequel sera en partie élidé pour des raisons techniques de taille d'écran.