Jean-Louis PATANÉ

[ CV ]

Fondation de la Vocation

Les Pages Web
 m'écrire
 il y a longtemps...
 mon
ISP 1996-2002 Worldnet maintenant chez
 mon ISP 2002 FREE
|
| | 
|
|
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
... |