Vous êtes sur la page 1sur 40

COMPIL - Z

Compilateur visible
D.E ZEGOUR

Institut National d ’Informatique


Notions sur les compilateurs
•Définition

•Un compilateur a pour rôle de transformer tout

•programme écrit dans un langage source en un programme objet (code)


réellement exécuté par la machine.

•Historique

•Programmation en langage machine ( suite de 0 et de 1 )

•Programmation en langage d ’assemblage grâce à des assembleurs (écrit en


langage machine pour la première fois )

•Programmation en langage évolué grâce à des compilateurs (écrit pour la


première fois en langage d ’assemblage )

•Naissance de langages ( écrit actuellement avec des compilateurs (langages )


de haut niveau )
Notions sur les compilateurs
•Phases d ’un compilateur

•La compilation d'un programme passe par plusieurs phases :

•- analyse lexicale

•- analyse syntaxique

•- analyse sémantique

•- interprétation ou génération de code

•Lorsqu'on passe par la phase de génération de code on parle de compilateur.

•Lorsqu'on passe par la phase d'interprétation on parle d'interpréteur.


Notions sur les compilateurs
•Analyse lexicale

•L'analyse lexicale est une analyse microscopique des éléments formant un


programme.

•Ces éléments, appelés unité lexicales, sont les mots réservés du langage, les
identificateurs utilisateurs, les caractères spéciaux, les constantes, etc.

•Un analyseur lexical élimine tout ce qui n'est pas utile pour la phase suivante
qui est l'analyse syntaxique. Il ignore ainsi les commentaires et les blancs.
Notions sur les compilateurs
•Analyse sémantique

•Donne un sens aux différentes instructions du programme.

•Facilite l ’étape de génération de code ou d'interprétation.

•Transforme l'ensemble de codes en une forme interne autour de laquelle


gravitent des tables indispensables pour la phase d'interprétation ou de
génération de code.

•Forme interne = découpage du programme en un ensemble d'opérations


élémentaires directement interprétées dans un autre langage de
programmation ou traduites en code objet.
Notions sur les compilateurs
•Analyse syntaxique

•L'analyse syntaxique est une analyse macroscopique.

•Derrière tout langage de programmation il y a une grammaire formée de


l'ensemble des règles utilisées pour l ’écriture des programmes.
Notions sur les compilateurs
•Génération de code

•La phase de génération de code consiste à associer à chaque élément de la


forme interne l ’équivalent en code objet.

•Interprétation

•La phase d'interprétation consiste à associer à chaque élément de la forme


interne l ’équivalent dans le langage d'interprétation.
Langage considéré
Généralités ( le langage Z )
•Z est un langage simple con‡u spécialement pour l'initiation à

•l'algorithmique et aux concepts élémentaires de la programmation.

•(KHAWARIZM I)

•Il est limité aux structures élémentaires de données : Tableaux,

•Structures, Listes linéaires chaînées.

•Il inclue également les opérations sur les fichiers.


Langage considéré
Généralités ( le langage Z )
•Un Z-algorithme est un ensemble de modules parallèles dont le premier est
principal et les autres sont soient des actions composées soient des fonctions.

•La communication entre les modules se fait via les paramètres et/ou les
variables globales.

•Les objets globaux sont définis dans le module principal.

•Le langage permet tout type de paramètres.


Langage considéré
Généralités ( le langage Z )
•Le langage permet l'affectation globale de tout type.

•Quatre types standards (scalaires )sont autorisés :

•ENTIER, BOOLEEN, CARACTERE, CHAINE.

•Le langage est l'ensemble des algorithmes abstraits, écrits à base de modèles
ou machines abstraites.

•On définit ainsi des machines de TURING :machine-caractères et machine-


nombres permettant l'initiation à l'algorithmique.
Langage considéré
Généralités ( le langage Z )
•On définit également des machines abstraites sur

•- les structures ou objets composés

•- les vecteurs

•- les listes mono directionnelles

•- les fichiers

•permettant l'initiation aux structures élémentaires de données et de fichiers.

•Le langage peut être étendu avec d'autres machines abstraites.


•Le langage est doté des opérations de haut niveau permettant de construire
des listes ou d'initialiser les structures ou les vecteurs à partir d'un ensemble
de valeurs.
Langage considéré
Généralités ( le langage Z )
•Le langage offre deux fonctions très utiles pour l'expérimentation sur les
fichiers permettant de générer aléatoirement des chaînes de caractères
(ALEACHAINE) et des entiers (ALEANOMBRE).

•Le langage permet la lecture et l ’écriture de scalaires, de vecteurs de


n'importe quelle dimension et des structures simples ou complexes.

•Le format est libre.


Langage considéré
Grammaire du langage Z
•Conventions

•~ ---/ --- ~ : Choix

•[ ---- ] : Partie facultative

•[[ : Crochet ouvrant

•]] : Crochet fermant

•{---}* : Répétition ( 0 ou plusieurs fois )


Langage considéré
Grammaire du langage Z
•Déclarations

•< Z> ::= [ ~SOIT/SOIENT~ <> ] DEBUT <> FIN [;]

•{ ~<> / <>~ [;] }*

•<> ::= ACTION Idf [ ( Idf {,Idf}* ) ] [;]

•[ ~SOIT/SOIENT~ <> ] DEBUT <> FIN

•<> ::= FONCTION Idf ( Idf {,Idf}* ) : <>

•[ ~SOIT/SOIENT~ <> ] DEBUT <> FIN

•<> ::= <>{ [~SOIT/SOIENT~] <>}*


Langage considéré
Grammaire du langage Z
•<> ::= Idf {,Idf}* ~UN / UNE / : / DES~ ~ <> / ACTION / FONCTION(Typ) ~

•<> ::= Types / <> / <> /

•MACHINE_CAR / MACHINE_NOMBRE /

•[POINTEUR VERS [~UN / UNE / : / DES~] ] LISTE [

•DE ~Types / <>~] /

•TABLEAU (Listcste) [DE ~<> / Types~ ]

•etc..
Compil - Z
Présentation
•COMPIL-Z est un outil dont le rôle est de dévoiler le fonctionnement interne
des compilateurs.

•COMPIL-Z offre la possibilité d ’écrire des algorithmes dans un prototype


de langage (Z)couvrant plusieurs notions et de les compiler en passant par
toutes les étapes de compilation :

•lexique, syntaxe, sémantique, génération de code (ou interprétation)


Compil - Z
Présentation
•COMPIL-Z fonctionne sous un système multi-fenêtrage doté d'outils pour
tailler les fenêtres, les déplacer, les consulter ou les personnaliser en modifiant
les couleurs du texte, du fond, du cadre ou de la barre de défilement.

•COMPIL-Z offre plusieurs classes de fenêtres montrant :

•- le processus de compilation

•- l'analyse lexicale

•- l'analyse syntaxique

•- l'analyse sémantique

•- l'interprétation
Compil - Z
Présentation
•Pour chaque étape, une fenêtre supplémentaire donne un rappel sur le
travail de l'analyseur en cours. Cette fenêtre montre également un fragment
du source de notre compilateur.

•A tout moment dans COMPIL-Z, vous pouvez invoquer

•l'aide ( F1 ) ou

•actionner les opérations (F10)


Compil - Z
Présentation
•COMPIL-Z offre les services suivants

•- Un EDITEUR pour écrire vos algorithmes fournissant toute la


documentation sur le langage Z.

•- INDENTEUR pour arranger vos algorithmes dont les principales fonctions


sont les suivantes :

•. chaque instruction est écrite sur une ligne différente,

•. les mots-clé sont réécrits en majuscule (ou minuscule )

•. le premier caractère de tout identificateur est réécrit en majuscule,

•. les structures de contrôle sont mises en relief,

•. les instructions de mˆme niveau commencent sur la mˆme colonne selon un


pas donné.
Compil - Z
Présentation
•- Un SCANNER donnant comme résultat les unités lexicales produites.

•- Un ANALYSEUR SYNTAXIQUE montrant comment les règles de


grammaire sont appliquées aux différentes lignes de vos algorithmes.

•- Un ANALYSEUR SEMANTIQUE montrant la forme interne produite


(quadruplés) et toutes les tables qui lui gravitent autour.
Compil - Z
Présentation
•- Un INTERPRETEUR montrant le déroulement de l'algorithme découpé en
opérations élémentaires.

•L'image mémoire est aussi donnée pour voir réellement ce qui se passe à
l ’exécution d'un programme.

•- Un HYPER-TEXTE fournissant toute la documentation sur le langage


considéré.
Compil - Z
Présentation
•COMPIL-Z est bourré de documentation. On y trouvera

•- le langage Z

•- la grammaire de Z sous forme BNF

•- le rôle d'un compilateur

•- le fonctionnement des analyseurs lexicaux, syntaxiques

•et sémantiques.

•- le fonctionnement d'un interpréteur.

•- etc..
Compil - Z
Utilisation
•1.{Familiarisation avec le langage Z (un prototype de langage algorithmique)

•Se familiariser avec le langage algorithmique utilisé et la grammaire associée.


Pour cela, Aller à l ’éditeur, puis utiliser l'aide.

•2. {Edition de l'algorithme}

•Ecrire un algorithme ou corriger un algorithme existant.


Compil - Z
Utilisation
•4. {Lexique}

•Lancer le scanner pour une analyse lexicale de votre algorithme (Alt-L).

•Les fenêtres montrent alors

•- votre algorithme,

•- le résultat du scanner,

•- un rappel sur le scanner incluant un fragment de source.


Compil - Z
Utilisation
•3. {Arrangement de l'algorithme}

•Lancer le module Arranger

•Le module corrige les erreurs de syntaxe.

•Répéter tant qu'il y a des erreurs

•. Aller à l'éditeur ( Alt-E) afin de corriger les erreurs

•. Relancer le module Arranger (Alt- A) après avoir fait (Alt-Q) et


sauvegarde.

•A ce stade, votre algorithme est bien écrit et il a été indenté pour vous.( Vous
pouvez changer les modes de présentation de votre algorithme avec l'option
"Options" du menu ).
Compil - Z
Utilisation
•5. {Syntaxe}

•Lancer l'analyse syntaxique (Alt-S).

•Les fenêtres montrent alors

•- votre algorithme,

•- les différentes règles de grammaire appliquées,

•- un rappel sur les analyseurs syntaxiques incluant un fragment de source.


Compil - Z
Utilisation
•7. { Interprétation }

•Lancer l'analyse sémantique (Alt-C).

•Les fenêtres montrent alors

•- votre algorithme,

•- les résultats de votre algorithme,

•- l'image mémoire montrant les emplacements mémoires

•et les changements effectués,

•- un rappel sur les interpréteurs incluant un fragment de source.


Compil - Z
Les programmes
•Programmation du système multi fenêtrage ( Pascal pur )

•Compilateur / Interpréteur ( Pascal pur)

•Editeur ( Turbo Vision ]

•Indenteur (Pascal pur)

•( Fichiers sur disques : 6 2 2 K )


Diapositive PPT
Compil - Z
Utilisation
•6. {Sémantique}

•Lancer l'analyse sémantique (Alt-M).

•Les fenêtres montrent alors

•- votre algorithme,

•- la forme interne ( ensemble de tables de compilation ),

•- Description des tables de compilation,

•- Description des quadruplés,

•- un rappel sur les analyseurs sémantiques incluant un fragment de source


Diapositive PPT
Le système multi - fenêtrage

avec menu
Diapositive PPT
Utilisation
Diapositive PPT
Editeur
Diapositive PPT
Aide sur le langage
Diapositive PPT
Aide sur la grammaire
Diapositive PPT
Scanner
Diapositive PPT
Syntaxe
Diapositive PPT
Sémantique
Diapositive PPT
Interprétation
Diapositive PPT
Aide