[Next] [Previous] [Top]

Metteur en page de sources Ada


5. Deuxième application : ada_to_postscript


5.1. Description

Cette application génère du code PostScript à partir des sources Ada. En plus du code source, on ajoute un en-tête avec le nom du fichier, la date et l'heure courantes et le numéro de page comme informations.

Elle importe des services de :

- Ada_To_Foo_G (pour l'analyse lexicale),
- Calendar (pour l'obtention de la date et de l'heure courantes),
- Command_Line (pour l'analyse des arguments de l'application),
- Text_IO (pour la manipulation des fichiers d'E/S).

Sans noms de fichiers en paramètres, comme dans l'application précédante, elle travaille sur les canaux standard d'E/S. De même, les erreurs de syntaxe du code sont tolérées.

Dans le code généré, les mots réservés sont en gras et les commentaires en italique. L'apparence des mots réservés et des identificateurs ne change pas. Cependant, on peut toujours combiner cette application avec l'application "apparence" pour produire cet effet.

On va d'ailleurs se servir de cette application pour l'annexe contenant le code.


5.2. Options

Forme générale de la commande :

ada_to_postscript [-t<titre>] [-l<lignes_par_page>]

[-n<numérotation>] [in_file [out_file]]

(1) Titre dans l'en-tête :

-t<"Chaîne de caractères"|Chaîne_de_caractères>

Valeur par défaut : "standard input" ou nom du fichier d'entrée

(2) Nombre maximum de lignes par page :

-l<Positive range 1 .. 66>

Valeur par défaut : -l66

(3) Intervalle de numérotation des lignes :

-n<Natural>

Valeur par défaut : -n1 (-n0 : pas de numérotation)

(4) Fichier d'entrée :

Valeur par défaut : standard input

(5) Fichier de sortie (seulement si le fichier d'entrée a été spécifié) :

Valeur par défaut : standard output


5.3. Code PostScript

Le code PostScript généré est conforme à la norme Adobe, c'est-à-dire qu'il peut être combiné avec d'autres applications de manipulation de fichiers PostScript, telles que "psnup" (pour placer plusieurs pages par feuille) et "psselect" (pour sélectionner des pages).

Le langage PostScript fournit toute une série de commandes, de jeux de caractères et d'outils graphiques dont on s'est servi pour la génération du code.

On a notamment utilisé :

- les jeux de caractères Courier et Helvetica, avec des styles normal, gras et italique,

- des commandes telles que "def" (pour définir des variables et/ou procédures), "gsave" et "grestore" (pour respectivement sauvegarder et restaurer le contexte graphique), "moveto" (pour positionner le curseur), "scalefont" (pour adapter la taille des caractères) et "show" (pour afficher des textes).

Seules les caractères `(`, `)' et `\' du code ASCII étant des métacaractères dans le langage PostScript, il faut les faire précéder du caractère `\' pour qu'ils soient interprétés correctement.

L'application supporte aussi les caractères accentués, à l'aide d'une extension de la table de caractères standard définie dans PostScript (StandardEncoding), à laquelle on ajoute les codes en octal correspondantes aux caractères accentués, pour obtenir le jeu de caractères ISOLatin1Encoding.

Pour générer le code PostScript à partir des sources, on s'est inspiré de l'application "mp". On a aussi utilisé d'autres applications, telles que "pageview" et "ghostview", pour vérifier la conformité des résultats obtenus.

Certains choix ont été adoptés lors de la génération du code. Ils concernent notamment le format des pages ainsi que les jeux de caractères et styles employés :

(1) Jeux de caractères utilisés :

- Code (normal) : police Courier de taille 10 points;
- Mots réservés (gras) : police Courier-Bold de taille 10 points;
- Commentaires (italique) : police Courier-Oblique de taille 10 points;
- En-tête : police Helvetica-BoldOblique. Tailles de 14 points pour le titre et le numéro de page, et de 10 points pour les autres informations.

(2) Format des pages (voir figure 2) :

- Echelle d'unités = 72 points par pouce (1 pouce xc5 25 mm.);
- Format A4 (595 x 842 points xc5 8.3 x 11.7 pouces xc5 207 x 292 mm.);
- Marge gauche de 50 points;
- Cadre d'en-tête de 495 x 20 points, avec séparation de 54 points par rapport à l'espace d'écriture;
- Marges supérieure et inférieure de 54 points;
- Espace d'écriture de 545 x 660 (66 lignes de 91 caractères).



Figure 2. Format des pages PostScript générées.


5.4. Exemples

Etant donné le fichier hello_world.a :

-------------------------------------

--/ Title    : Hello_World
--/ Creation : 11-Mai-1994 M. Larrea

WITH
  text_io;

-- This is a simple Ada program

PROCEDURE hello_world IS

BEGIN
  text_io.put_line ("Hello World !");
END hello_world;
-------------------------------------

(1) ada_to_postscript hello_world.a (valeurs par défaut) :

1 -------------------------------------

     2   --/ Title    : Hello_World
     3   --/ Creation : 11-Mai-1994 M. Larrea
     4
     5   WITH
     6     text_io;
     7
     8   -- This is a simple Ada program
     9
    10   PROCEDURE hello_world IS
    11
    12   BEGIN
    13     text_io.put_line ("Hello World !");
    14   END hello_world;
15 -------------------------------------

(2) apparence -iu hello_world.a | ada_to_postscript -n5 (LRM 83) :

-------------------------------------

         --/ Title    : Hello_World
         --/ Creation : 11-Mai-1994 M. Larrea

     5   with
           TEXT_IO;

         -- This is a simple Ada program

    10   procedure HELLO_WORLD is

         begin
           TEXT_IO.PUT_LINE ("Hello World !");
         end HELLO_WORLD;
15 -------------------------------------

(3) apparence hello_world.a | ada_to_postscript (RM 9X) :

-------------------------------------

         --/ Title    : Hello_World
         --/ Creation : 11-Mai-1994 M. Larrea

         with
           Text_Io;

         -- This is a simple Ada program

         procedure Hello_World is

         begin
           Text_Io.Put_Line ("Hello World !");
         end Hello_World;
-------------------------------------


Metteur en page de sources Ada - 29 MAR 95
[Next] [Previous] [Top]

Generated with CERN WebMaker