PostScript
Un article de Wikipédia, l'encyclopédie libre.
Cet article fait partie de la série Langages de programmation |
Langages à objets |
C++ - C# Delphi - Eiffel - Java Groovy - Python - Ruby Simula - Smalltalk Visual Basic - WinDev |
Langages impératifs |
APL - ASP - Assembleur BASIC - C - Cobol Forth - Fortran - Logo Pascal - Limbo - Perl - PHP |
Langages fonctionnels |
Haskell - ML/OCaml Lisp/Common Lisp Scheme XSLT |
Langages déclaratifs |
Clips - Prolog |
Langages concurrents |
Ada 95 - Erlang |
Langage de balisage |
HTML - SGML - XML S-expressions |
Voir aussi |
Conception - Codage Tests - Optimisations |
Le PostScript est un langage de programmation spécialisé dans la description de page, mis au point par Adobe. Il repose sur des formulations vectorielles de ses éléments.
Ce langage interplates-formes permet d'obtenir un fichier unique comportant tous les éléments constituant la page (textes, images, polices, couleurs, etc.).
Malgré ses qualités et ses extensions comme EPS (pour Encapsulated PostScript), PostScript n'est guère populaire que sur les plates-formes Unix tandis que son avatar, le PDF, est très utilisé sur les plates-formes Macintosh et Windows.
D'autres rejetons de PostScript sont Display PostScript et NeWS, tous deux concernant les systèmes de fenêtrage.
Sommaire |
[modifier] Le langage
Postscript est un langage complet, qui permet le codage de tout algorithme. Bien qu'il soit tout à fait possible d'écrire directement de tels programmes, ils sont en général fabriqués par d'autres programmes, des pilotes d'impression par exemple.
Le 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 est composé d'une pile, et d'un ou 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 du 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 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 :
b b mul 4 a mul c mul sub
PostScript supporte cinq types de mots :
- constante numérique entière ou réelle :
123
ou3.14157
, l’évaluation ajoute la valeur numérique au sommet de la pile ; - constante chaîne : ce sont des tableaux de caractères encadrés par des parenthèses, ex
(Abc)
représente la chaîne « Abc » ; - référence à un nom :
/a
représente le nom « a », qui pourra permettre de nommer une variable ou une fonction ; la référence est ajoutée au sommet de la pile ; - nom : ce peut être le nom d'une procédure prédéfinie ou créée, d'une variable, d'un dictionnaire ; le nom est cherché dans les dictionnaires actifs, puis si c’est une valeur, elle est placée sur la pile, et si c’est une fonction, elle est appelée (exécutée) ; à noter que l'évaluation d’une fonction pourrait utiliser les valeurs au sommet de la pile et les remplacer par les éventuels résultats ;
- constructeur : quatre constructeurs permettent de créer des structures de données de taille variable, ils sont composés de caractères appariés suivants, qui délimitent le début et la fin de la structure :
[
et]
: des tableaux quelconques.<
et>
: des tableaux d’octets codés en hexadécimal.<<
et>>
: des dictionnaires.{
et}
: du code exécutable.
- La première partie du constructeur place une marque sur la pile, puis les éléments de cette structure sont placés successivement sur la pile, enfin la partie droite du constructeur récupère tous les éléments depuis la dernière marque dans la pile et « fabrique » la structure correspondante et la met sur la pile.
Les dictionnaires sont des tableaux avec seulement deux colonnes, la première ne pouvant contenir que des références à un nom, et la seconde, une valeur quelconque associée à ce nom.
Parmi les opérateurs prédéfinis, le plus important est def
, il permet d'ajouter une association nom-valeur dans le dictionnaire courant, ce qui permet de définir de nouvelles variables avec leur valeur, ou de modifier leur valeur, et de définir ou redéfinir des fonctions. On constate donc, qu’en Postscript, le code exécutable est une donnée, presque comme les autres, et peut être créé à la volée, modifié.
Exemples :
/pi 3.14157 def
: définit la variable de nom pi, avec la valeur numérique 3,14157 ;/compteur compteur 1 add def
: ajoute 1 à la variable nommée compteur./incremente {1 add} def
: définit la fonction incremente, qui ajoute 1 au paramètre/compteur compteur incremente def
: permet d’incrémenter grâce à la fonction définie au dessus.
[modifier] Opérateurs
tout | pop | — | élimine l'élément de la pile | ||||||||||
tout1 | tout2 | exch | tout2 | tout1 | échange les deux éléments | ||||||||
… | … | ||||||||||||
nombre1 | nombre2 | add | somme | renvoie nombre1 plus nombre2 | |||||||||
nombre1 | nombre2 | div | quotient | renvoie nombre1 divisé nombre2 | |||||||||
entier1 | entier2 | idiv | quotient | renvoie entier1 divisé entier2 | |||||||||
… | … |
[modifier] Exemples
[modifier] Une étoile
%!PS %% Une étoile 2 setlinewidth %% %% pour un angle d (en degrés) trace un trait entre (300,400) %% et (300 + 200 cos(d) , 400 + 300 sin(d)) /tracerayon { 300 400 moveto dup dup cos 200 mul exch sin 200 mul rlineto stroke } def %% %% Boucle (variation de la variable de boucle de 0 à 360 par pas de 10) 0 10 360 { tracerayon } for %% showpage
[modifier] Implémentation
PostScript est sous licence de la société Adobe. Néanmoins il existe un interpréteur PostScript libre, Ghostscript.
[modifier] Liens
[modifier] Voir aussi
- PCL
- Forth : langage de programmation basé sur les mêmes principes (pile, dictionnaire, notation polonaise inverse...)
Portail de l'informatique – Accédez aux articles de Wikipédia concernant l’informatique. |