PostScript
PostScript
PostScript est un langage de description de page mis au point par Adobe[1],[2]. Il repose sur des formulations vectorielles de la plupart de ses éléments. Il sait aussi traiter les images matricielles (point par point). Ce langage inter-plateformes permet d'obtenir un fichier unique comportant tous les éléments décrivant la page (textes, images, polices, couleurs, etc.). PostScript est devenu pratiquement un standard : la plupart des imprimantes laser contiennent un interpréteur et peuvent traiter directement un document décrit selon ce format. Sur les autres, il faut utiliser un filtre logiciel en entrée pour convertir le langage PostScript au format raster compréhensible par ces imprimantes. Le développement du PostScript est arrêté par Adobe depuis 2007, afin que le PDF puisse prendre la relève. D'autres descendants de PostScript sont :
Le langagePostscript est un langage complet, qui permet le codage de tout algorithme. Bien qu'il soit tout à fait possible d'écrire directement de tels programmes[3], ils sont en général fabriqués par d'autres programmes, des pilotes d'impression par exemple. Postscript est indissociable de l'environnement dans lequel il sera exécuté. Étant donné le caractère totalement dynamique de ce langage, il sera en fait interprété. L'interpréteur fonctionne en manipulant une pile et plusieurs dictionnaires. La pile sert de stockage temporaire pour les paramètres des fonctions, puis pour leurs résultats. Les dictionnaires permettent le stockage des variables, ainsi que le code des fonctions. Un programme PostScript est composé d'une séquence de mots séparés par des espaces, tabulation (TAB), retour chariot (CR), avance de ligne (LF), ou commentaires. L'interpréteur analyse chaque mot du programme PostScript séquentiellement en fonctionnant comme un calculateur en notation polonaise inverse, c’est-à-dire que chaque mot est évalué, puis le (ou les) résultat(s) de cette évaluation est placé au sommet de la pile, et ainsi de suite. Exemple, pour effectuer le calcul numérique simple b2 - 4ac, cela pourra se coder :
PostScript utilise les cinq types de mots suivants :
Les dictionnaires sont des tableaux avec seulement deux colonnes :
Avec cette propriété, un dictionnaire fonctionne donc comme un tableau à une colonne, mais dont l'index peut être de type quelconque, sans être restreint à un simple intervalle d'entiers. Le dictionnaire est géré comme une table de hachage (grâce à une fonction de hachage prédéfinie par le langage lui-même), dont on peut définir à la création la taille initiale, en fonction du nombre de couples nom-valeur qu'on veut y stocker, afin de limiter les occurrences de collisions (cependant PostScript sait redimensionner dynamiquement un dictionnaire en fonction du nombre de collisions sur les noms, ou de son taux de remplissage). Les dictionnaires de PostScript servent principalement (mais pas seulement) à définir (dynamiquement) la portée des variables nommées et référencées ailleurs dans le langage. Parmi les opérateurs prédéfinis, le plus important est Exemples :
Dans le dernier exemple ci-dessus, rien n'indique que la variable nommée « compteur » sera la même que celle dont on a extrait la valeur. En effet, « def » sert à stocker une association nom-valeur uniquement dans le dictionnaire actuel, et dans aucun autre dictionnaire de la pile de portées. Or, la lecture de la variable compteur (la seconde référence dans le code ci-dessus) peut retourner la valeur d'une variable trouvée dans un autre dictionnaire que le dictionnaire actuel (ou produire une exception à l'exécution si aucun des dictionnaires dans la pile de portées ne contient une variable de ce nom) : dans ce cas, une nouvelle variable sera ajoutée par « def » dans le dictionnaire actuel, sans modifier la variable d'origine là où elle a été trouvée, qui conservera donc sa valeur ; cependant tant que le dictionnaire courant sera actif, la nouvelle variable masquera l'ancienne. Ce dispositif permet donc de gérer des variables locales autrement que par une position relative dans la pile. PostScript peut différencier les références à une variable (par son nom indiqué après un Aussi, pour créer une référence complète à une variable bien définie et non sa valeur ou une autre variable de même nom dans un autre dictionnaire, on doit indiquer non seulement le nom de cette variable, mais aussi une référence au dictionnaire qui la contient et où elle doit être recherchée. Si on ne référence pas le dictionnaire (par exemple en ne préfixant pas par un Postcript définit donc deux contextes distincts d'utilisation d'une référence à une variable :
Ce comportement pour le déréferencement d'une variable (accès en lecture) est donc très différent de celui du stockage d'une variable avec Opérateurs
ImplémentationPostScript est fourni sous licence de la société Adobe. Néanmoins il existe un interpréteur PostScript libre, Ghostscript. Notes et références
Voir aussiArticles connexes
Liens externes
|
Portal di Ensiklopedia Dunia