Comme il a été dit, un « texte » lors de son utilisation est évalué : cela signifie qu'on applique un traitement sur la définition qu'on connaît du « texte » et qu'on obtient une valeur dont on ne sait rien si ce n'est qu'elle peut être affichée à l'écran. La difficulté qui se pose alors est que certains « textes », qu'on a identifié assez naturellement, nécessitent la génération "en ligne" de texte source à deux points distincts du programme.
Par exemple, dans le cas de la pile (cf. Chapitre 2.4, « Exemple de structuration des traitements »), on a isolé le paramètre :
incrémenter-pointeur
qu'on instancie par deux valeurs, selon le choix de la structure de données :
p.b := p.b + 1
ou :
(VAR q:pile;)
NEW q;
q.b := p;
p := q;
Dans le second cas, il faut, c'est le langage qui le demande, utiliser une variable auxiliaire q pour créer une nouvelle valeur du pointeur : il faut donc aussi déclarer cette variable ; cette déclaration devra presque toujours apparaître "autre part", c'est-à-dire dans la zone des déclarations de variables, qui est une zone « textuellement » distincte de la zone des instructions.
Une "mauvaise" réponse pourrait être de placer deux utilisations du texte en paramètre :
- une utilisation dans la zone des déclarations, qui permettra la déclaration éventuelle de variables auxiliaires ;
- une utilisation en zone d'instructions, qui sera le traitement proprement dit,
D'une part alors on duplique l'information : « on utilise le texte "xxx" » ; d'autre part on place des utilisations factices en zone de déclarations, sachant que dans la majorité des cas on n'aura pas besoin de variables auxiliaires pour réaliser le traitement.
Une "bonne" réponse est de placer, à partir du point d'utilisation du traitement, la déclaration dans un « point d'accumulation » prévu à cet effet dans la forme évaluée : la chose n'est pas simple, sachant qu'on n'accède normalement pas à la forme évaluée des « textes ». C'est la "bonne" approche qui a été suivie et qu'on présente dans la suite. Elle est réalisée par la définition d'un certain nombre d'opérateurs, qui vont compliquer un peu plus la syntaxe des « textes » mais sont là pour répondre à un problème compliqué.