[Jean-Philippe Guérard]
Et là, surprise, le terme « pretty printing » est employé aussi bien pour les outils d'impression enluminée du code que pour les outils de reformatage automatique.
Intéressant, en effet.
Donc, je me demande s'il faut vraiment séparer les 2 concepts. Le travail effectué par ces 2 types d'outils est le même. La seule différence se situe au niveau du format de sortie.
J'ai travaillé à diverses reprises sur l'un et l'autre, et à mon expérience, le travail me semble assez différent. L'enluminure est plutôt simple: on doit retrouver les mots-clés du langage, ainsi que certaines entités lexicales comme les chaìnes et les commentaires. On cherche assez souvent les identificateurs de fonctions ou noms de types, et quelques heuristiques plutôt élémentaires suffisent.
Pour refaire la présentation d'un programme, il est vrai qu'on se contente parfois d'une assez bonne collection d'heuristiques. Mais pour faire du bon travail, il semble plus utile de faire une analyse lexicale et syntaxique assez complète du programme. Cela permet par exemple de dériver plusieurs découpages différents pour une représentation de surface de l'arbre représentatif du programme et choisir celui qui semble le meilleur, selon quelques critères pré-établis, ou encore de nettoyer les parenthèses superflues en fonction des priorités des opérateurs, et toute cette sorte de chose! :-) Je crois que les moyens mis en oeuvre sont plus importants.
Pour l'anecdote, j'ai retrouvé dans la version française du livre « Compilateurs : principes, techniques et outils » de Aho, Sethi et Ullmann le terme de « paragrapheur » qui semble être utilisé pour traduire « pretty printer ».
Le terme est plutôt flou, puisqu'il est difficile d'imaginer ce qu'est un paragraphe dans le contexte d'un programme source. On ne sait pas trop à quoi il s'applique. On dirait une analogie lointaine, peu éclairante.