chapitre3

Chapitre III : Les Formes Intermédiaires

I. Analyse

  • Analyse syntaxique : génère deux textes :

    • Dictionnaire : rassemblement des déclarations des objets manipulés par le programme source.

    • Texte intermédiaire : instructions du programme source.

  • Forme intermédiaire : ensemble d'instructions élémentaires.

    • Instruction élémentaire : composée d'un opérateur et de deux opérandes.

    • Opérande : peut être une constante, une variable ou un nom de procédure.

    • Opérateur : peut être arithmétique ou logique.

II. Types de Formes Intermédiaires

  • Différentes formes intermédiaires :

    • Forme post-fixée

    • Forme préfixée

    • Arbre abstrait

    • Quadruplés

    • Triplés directs et indirects

III. Forme Post-Fixée

1. Notation
  • Notation : opérande opérande opérateur

    • Exemple de notation et évaluation :

      • fp(t1 opérateur t2) = fp(t1) fp(t2) opérateur

      • fp(opérateur t) = fp(t) opérateur

      • fp(constante) = constante

      • fp(variable simple) = variable simple

2. Évaluation
  • Utilisation d'une pile pour sauvegarder les opérandes :

    • Processus :

      • Si tc est un opérande, empiler t1

      • Si tc est un opérateur binaire, dépiler deux opérandes, les évaluer et empiler le résultat.

      • Si tc est un opérateur unitaire, dépiler un opérande, l'évaluer et empiler le résultat.

  • Exemple :

    • Expression : a-c+d*e

    • Processus d'évaluation avec la pile.

3. Affectation en Post-Fixée
  • Notation d'affectation : Var := <expression>

    • Forme post-fixée : fp : fp(Var) fp(<expression>) :=

4. Branchement Inconditionnel
  • Notation : Goto etiq

    • Forme post-fixée : BRL opérande où opérande est une position dans la chaîne post-fixée.

5. Branchement Conditionnel
  • Notation : opérande1 opérande2 opérateur de comparaison par rapport à zéro.

  • Opérateurs : BZ(=0), BNZ(≠0), BP(>0), BPZ(>=0), BM(<0), BMZ(<=0).

6. Déclaration de Tableau
  • Forme : Array V[U1:L1,…, Un:Ln]

    • Borne : expressions arithmétiques de type entier.

    • Forme post-fixée : fp : fp(U1) fp(L1)... fp(Un) fp(Ln).

IV. Forme Préfixée

  • Notation : opérateur opérande opérande.

V. Les Quadruplés

  • Forme générale : (opérateur, opérande1, opérande2, Temporaire)

    • Exemple d'expressions : a*b/c+d décomposé en quadruplés.

    • Optimisation nécessaire pour mémoire.

1. Affectation
  • Notation : Var := <expression> en quadruplés.

2. Branchement Inconditionnel
  • Notation : Goto etiq en quadruplés.

3. Branchement Conditionnel
  • Comparaison de deux opérandes.

4. Déclaration de Tableau
  • Notation : Array[U1:L1,…, Un:Ln] en quadruplés.

VI. Arbre Abstrait

  • Représentation arborescente utilisée en compilation.

    • Représente l'arbre syntaxique de manière abstraite.

    • Exemples d'affectation, de branchements et d'instructions conditionnelles.

VII. Conclusion

  • Remarque sur la mémoire :

    • La méthode des triplés conçue pour optimiser le stockage des temporaires.