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~] <>}*
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 S c a n n e r
Diapositive PPT S y n t a x e
Diapositive PPT S é m a n t i q u e
Diapositive PPT I n t e r p r é t a t i o n
Diapositive PPT Aide