Sémantique des instructions pour le langage Z minimal

download Sémantique des instructions pour le langage Z minimal

of 13

  • date post

    12-Mar-2016
  • Category

    Documents

  • view

    50
  • download

    0

Embed Size (px)

description

Sémantique des instructions pour le langage Z minimal. Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz. Sémantique des instructions pour le langage Z minimal: Introduction. - PowerPoint PPT Presentation

Transcript of Sémantique des instructions pour le langage Z minimal

  • Smantique des instructions pour le langage Z minimalPr ZEGOUR DJAMEL EDDINEEcole Suprieure dInformatique (ESI)http://zegour.esi.dz/ email: d_zegour@esi.dz

  • Smantique des instructions pour le langage Z minimal: IntroductionTrois types dinstructions existent dans le langage minimal : affectation, lecture, criture

    Il sagit dinsrer les fonctions smantiques quelque part dans les rgles syntaxiques pour gnrer les quadrupls.

    Une lecture/criture permet de lire plusieurs donnes/expressions la fois ( Ex : Lire(A, B,C,D, E, )

    Comme un quadruplet ne suffit pas pour ranger tous les arguments des oprations de lecture ou criture, nous utiliserons une table complmentaire : TABCOMP

  • Smantique des instructions pour le langage Z minimal: la table TABCOMPSolution

    Ranger les arguments (adresses vers les objets ) dans TABCOMP partir du premier emplacement disponible dans cette table

    Dans le quadrupl il suffit de ranger lemplacement du premier argument et le nombre darguments

    Remarque :

    TABCOMP est partage par plusieurs types de quadrupls

  • Smantique des instructions pour le langage Z minimal: Quadrupls Quadrupl de laffectation : B : pointeurs dans TABOB vers le membre gaucheC : non utilisD : pointeur dans TABOB sur lobjet qui contient le rsultat de lexpression du membre droit

    Quadrupl de la lecture : B : pointeurs dans TABCOMP vers la liste des variablesC : Nombre de variablesD : non utilis

    Quadrupl de lcriture : B : pointeurs dans TABCOMP vers la liste des variables contenant les rsultats des expressions crireC : Nombre de variablesD : non utilis(Aff, B, C , D )(Lire, B, C , D )(Ecrire, B, C , D )

  • Smantique des instructions pour le langage Z minimal: Syntaxe< Lis > < Inst > { ; < Inst > }* Idf := |

    Lire ( Idf {, Idf }* ) |

    Ecrire ( {,}* )

  • Smantique des instructions pour le langage Z minimal : Dfinition smantiqueLe programme est un ensemble dinstructions.Une instruction peut tre une affectation, lecture ou criture.Affectation : attribution de la valeur dune expression une variableLes deux membres du signe daffectation doivent tre de mme typeLecture : introduction des donnesLes paramtres de lopration Lire doivent tre des variables du mme que celles des donnes luesAucune conversion nest entreprise par le compilateurcriture : afficher les rsultatsLes paramtres de lopration Ecrire ne peuvent tre que des expressions de type scalaire (Entier ou Booleen pour le langage Z minimal)

  • Smantique des instructions pour le langage Z minimal: Fonctions smantiques< Lis > < Inst > { ; < Inst > }* Idf := |

    Lire ( Idf {, Idf }* ) |

    Ecrire ( {, }* )

    F1F2F3F4F5F6F7F8

  • Smantique des instructions pour le langage Z minimal: Fonctions smantiques

    F1F2F3Soit Temp le rsultat de . Vrifier que le type de Temp peut tre crit. Ranger Temp dans TABCOM. Soit Pt son emplacement dans TABCOMP. Initialiser une variable Compte 1Soit Temp le rsultat de . Vrifier que le type de Temp peut tre crit. Ranger Temp dans TABCOM. Il est donc rang lemplacement Pt + 1. Incrmenter la variable Compte dune unitGnrer le quadruplet (Ecrire, Pt, Compte, )ECRITUREEcrire ( {, }* ) F1F2F3

  • Smantique des instructions pour le langage Z minimal: Fonctions smantiques

    F4F5F6Rechercher Idf dans la table des symboles pour rcuprer lobjet correspondant dans TABOB (Soit Temp).Vrifier que le type de Temp peut tre lu. Ranger Temp dans TABCOM. Soit Pt son emplacement dans TABCOMP. Initialiser une variable Compte 1.Rechercher Idf dans la table des symboles pour rcuprer lobjet correspondant dans TABOB (Soit Temp).Vrifier que le type de Temp peut tre lu. Ranger Temp dans TABCOM. Il est donc rang lemplacement Pt + 1. Incrmenter la variable Compte dune unitGnrer le quadruplet (Lire, Pt, Compte, )LECTURELire ( Idf {, Idf }* ) |F4F5F6

  • Smantique des instructions pour le langage Z minimal: Fonctions smantiques

    F7F8Rechercher Idf dans la table des symboles pour rcuprer lobjet correspondant dans TABOB (Soit Temp1). Erreur si Idf non trouv (non dclar)Soit Temp2 le rsultat de . Vrifier que les types de Temp1 et Temp2 sont les mmes, sinon Erreur. Gnrer le quadruplet (Aff, Temp1, , Temp2 )AFFECTATIONIdf := |F7F8

  • Smantique des instructions pour le langage Z minimal : ExempleSOIT A , B , C DES ENTIERS ; Res UN ENTIER ;DEBUT LIRE ( A ) ; B := 5 ; C := 12 ; Res :=((A+B) / C) + ( B-C ) ; ECRIRE ( Res )FIN

    TABCONS01En fin de compilation, programme source = table des quadrupls + TABOB + TABCONS + TABCOMP + LONGZDD012TABOB8LONGZDD34Quadrupls gnrs56789TABCOMP01

    512

    LE0LE1LE2LE3CE0CE1XE4XE5XE6XE7

    DE0DE1DE2DE3Lire01Aff14Aff25+E016/E627-E128+E789Aff39Ecrire11

    03

  • Smantique des instructions pour le langage Z minimal : Implmentations Modules sur la table complmentaire

    New_item_comp (Pointeur_objet) Indice dans la table complmentaire o le pointeur de lobjet est rang , -1 si Echec

    Dfinir une limite pour la table complmentaire

    LimitTabcomp = une valeur arbitraire

  • Smantique des instructions pour le langage Z minimal : Synthse Afin de simplifier lcriture du compilateur, on a utilis des tables. On peut utiliser diverses structures de donnes.

    La forme intermdiaire choisie (Quadrupl) est la forme la plus simple. On peut utiliser toute autre forme interne.

    On na pas trait les optimisations. En gnral, elles se font sur le code intermdiaire gnr. ( Ex: pour chaque nouvelle expression, rutiliser les auxiliaires dj utilises ou bien au sein dune mme expression rutiliser certains auxiliaires ) On peut rajouter des programmes doptimisation

    Pour les raisons de clart, les fonctions smantiques sont des modules spars. Les appels de modules consomment de lespace! On peut insrer directement les codes des modules.