Jean-Louis
PATANÉ

jlp photo

[ CV ]

trefle
Fondation de la Vocation

Les Pages Web
Les Pages Web

Mailto
m'écrire

NETSCAPE 2
il y a longtemps...

worldnet
mon ISP 1996-2002 Worldnet
 
maintenant chez
free
mon ISP 2002 FREE



accueil sites java faq vocation jeux musique bouquins photos

v_dragon.jpg COMPILATEURS Principes, techniques et outils
Alfred Aho, Ravi Sethi, Jeffrey Ullman, traduction de
Pierre Boullier, Philippe Deschamp, Martin Jourdan,
Bernard Lorho et Monique Mazaud

InterEditions

retour à la page des bouquins


Préface ........................................................ 9

Avertissement des traducteurs .................................. 13

1 Introduction à la compilation ................................ 15
   1.1 Les compilateurs ........................................ 15
   1.2 Analyse du programme source ............................. 19
   1.3 Phases d'un compilateur ................................. 25
   1.4 Cousins du compilateur .................................. 31
   1.5 Regroupement de phases .................................. 36
   1.6 Outils pour la construction de compilateurs ............. 38
   Notes bibliographiques ...................................... 40

2 Un compilateur simple en une passe ........................... 41
   2.1 Présentation générale ................................... 41
   2.2 Définition de la syntaxe ................................ 42
   2.3 Traduction dirigée par la syntaxe ....................... 49
   2.4 Analyse syntaxique ...................................... 57
   2.5 Un traducteur pour des expressions simples .............. 66
   2.6 Analyse lexicale ........................................ 72
   2.7 Incorporation d'une table de symboles ................... 79
   2.8 Machines abstraites à pile .............................. 81
   2.9 Intégration des techniques .............................. 88
   Exercices ................................................... 97
   Exercices de programmation .................................. 100
   Notes bibliographiques ...................................... 101

3 Analyse lexicale ............................................. 103
   3.1 Le rôle de l'analyseur lexical .......................... 104
   3.2 Mémorisation du texte d'entrée .......................... 109
   3.3 Spécification des unités lexicales ...................... 112
   3.4 Reconnaissance des unités lexicales ..................... 119
   3.5 Un langage pour spécifier des analyseurs lexicaux ....... 127
   3.6 Automates finis ......................................... 135
   3.7 transformation d'une expression régulière en un AFD ..... 143
   3.8 Conception d'un générateur d'analyseurs lexicaux ........ 151
   3.9 Optimisation de reconnaisseurs fondés sur des AFD ....... 157
   Exercices ................................................... 170
   Exercices de programmation .................................. 180
   Notes bibliographiques ...................................... 181

4 Analyse syntaxique ........................................... 183
   4.1 Rôle de l'analyseur syntaxique .......................... 184
   4.2 Grammaires non contextuelles ............................ 190
   4.3 Écriture d'une grammaire ................................ 197
   4.4 Analyse descendante ..................................... 207
   4.5 Analyse ascendante ...................................... 222
   4.6 Analyse par précédence d'opérateurs ..................... 231
   4.7 Analyseurs LR ........................................... 244
   4.8 Utilisation des grammaires ambiguës ..................... 277
   4.9 Constructeurs d'analyseurs syntaxiques .................. 288
   Exercices ................................................... 297
   Notes bibliographiques ...................................... 307

5 Traduction dirigée par la syntaxe ............................ 311
   5.1 Les définitions dirigées par la syntaxe ................. 312
   5.2 Construction des arbres abstraits ....................... 320
   5.3 Évaluation ascendante des définitions S-attribuées ...... 326
   5.4 Définitions L-attribuées ................................ 330
   5.5 traduction descendante .................................. 335
   5.6 Évaluation ascendante des attributs hérités ............. 342
   5.7 Évaluateurs récursifs ................................... 351
   5.8 Assignation de mémoire aux attributs à la compilation ... 354
   5.9 Assignation de mémoire aux attributs à la construction .. 358
   5.10 Analyse des définitions dirigées par la syntaxe ........ 365
   Exercices ................................................... 372
   Notes bibliographiques ...................................... 376

6 Contrôle de type ............................................. 379
   6.1 Systèmes de typage ...................................... 380
   6.2 Spécification d'un contrôleur de type simple ............ 385
   6.3 Équivalence des expressions de type ..................... 389
   6.4 Conversions de type ..................................... 396
   6.5 Surcharge des fonctions et des opérateurs ............... 398
   6.6 Fonctions polymorphes ................................... 402
   6.7 Un algorithme d'unification ............................. 413
   Exercices ................................................... 419
   Notes bibliographiques ...................................... 425

7 Environnements d'exécution ................................... 429
   7.1 Problèmes liés au langage source ........................ 429
   7.2 Organisation de l'espace mémoire ........................ 437
   7.3 Stratégies d'allocation de mémoire ...................... 442
   7 4 Accès aux noms non locaux ............................... 453
   7.5 Passage de paramètre .................................... 467
   7.6 Tables de symboles ...................................... 473
   7.7 Mécanismes d'allocation dynamique dans les langages ..... 485
   7.8 Techniques pour l'allocation dynamique .................. 488
   7.9 Allocation de mémoire en Fortran ........................ 491
   Exercices ................................................... 501
   Notes bibliographiques ...................................... 508

8 Production de code intermédiaire ............................. 511
   8.1 Langages intermédiaires ................................. 511
   8.2 Déclarations ............................................ 521
   8.3 Instructions d'affectation .............................. 527
   8.4 Expressions booléennes .................................. 537
   8.5 Instructions de branchement à choix multiple ............ 546
   8.6 Techniques de reprise arrière ........................... 549
   8.7 Appels de procédures .................................... 556
   Exercices ................................................... 557
   Notes bibliographiques ...................................... 560

9 Production de code ........................................... 563
   9.1 Problèmes posés par la conception d'un générateur de code 564
   9.2 La machine cible ........................................ 569
   9.3 Gestion de la mémoire à l'exécution ..................... 572
   9.4 Blocs de base et graphes de flot de contrôle ............ 579
   9.5 Informations sur les utilisations ultérieures ........... 585
   9.6 Un générateur de code simple ............................ 587
   9.7 Allocation et assignation des registres ................. 593
   9.8 Représentation des blocs de base sous forme de DAG ...... 598
   9.9 Optimisation à lucarne .................................. 606
   9.10 Production de code à partir des DAG .................... 610
   9.11 Algorithme de production de code par programmation dyna-
        mique .................................................. 620
   9.12 Constructeurs de générateurs de code ................... 625
   Exercices ................................................... 633
   Notes bibliographiques ...................................... 636

10 Optimisation de code ........................................ 639
   10.1 Introduction ........................................... 640
   10.2 Principales sources d'optimisation ..................... 645
   10.3 Optimisation des blocs de base ......................... 653
   10.4 Boucles dans le graphe de flot de contrôle ............. 657
   10.5 Introduction à l'analyse globale de flot de données .... 664
   10.6 So1ution itérative des équations de flot de données .... 681
   10.7 Transformations pour améliorer le code ................. 691
   10.8 Traitement des synonymes ............................... 707
   10.9 Analyse de flot de données dans les graphes structurés . 720
   10.10 Algorithmes de flot de données efficaces .............. 733
   10.11 Un outil pour l'analyse de flot de données ............ 742
   10.12 Estimation des types .................................. 757
   10.13 Mise au point symbolique de code optimisé ............. 766
   Exercices ................................................... 775
   Notes bibliographiques ...................................... 782

11 Si vous voulez écrire un compilateur ........................ 787
   11.1 Organiser un compilateur ............................... 787
   11.2 Comment aborder la réalisation d'un compilateur ........ 789
   11.3 L'environnement de production du compilateur ........... 793
   11.4 Test et maintenance .................................... 796

12 Brève présentation de quelques compilateurs ................. 799
   12.1 EQN, un préprocesseur pour composer des formules mathé-
        matiques ............................................... 799
   12.2 Compilateurs Pascal .................................... 800
   12.3 Compi1ateurs C ......................................... 802
   12.4 CompiIateurs Fortran H ................................. 803
   12.5 Compilateur BLISS/11 ................................... 807
   12.6 Compilateur Modula-2 optimisant ........................ 809

A Un projet de programmation ................................... 811
   A.1 Introduction ............................................ 811
   A.2 Structure d'un programme ................................ 811
   A.3 Syntaxe du langage ...................................... 812
   A.4 Conventions lexicales ................................... 815
   A.5 Exercices suggérés ...................................... 815
   A.6 Évolution de l'interprète ............................... 817
   A.7 Extensions .............................................. 818

Bibliographie .................................................. 819

Glossaire anglais-français ..................................... 845

Glossaire français-anglais ..................................... 853

Index .......................................................... 861

retour à la page des bouquins

accueil sites java faq vocation jeux musique bouquins photos

...