Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) www.zegour.uuuq.com email: d_zegour@esi.dz
Le langage Z minimal : Objectif Définir un sous langage de Z pour développer toutes les phases de compilation et avoir un compilateur qui tourne. Étendre progressivement le langage minimal jusqu’à obtenir le langage Z. Étendre encore plus pour une extension possible du langage Z.
Le langage Z minimal : Définition Pas de procédures et fonctions Se limiter au type Entier et Booleen Se limiter aux expressions arithmétiques Se limiter aux seules instructions: Affectation, Lecture et Écriture
Étape 1 : Compilateur pour le langage Z minimal Analyse lexicale et Implémentation Analyse syntaxique et Implémentation Organisation de la mémoire (Zone de données, Attribution des adresses) Tables (Table des symboles, Les tables de compilation générées) Sémantique des déclarations ( Forme interne) Sémantique des expressions arithmétiques ( Forme interne) Sémantique des instructions d’affectation, de lecture et et d’écriture (Forme interne) Interprétation ou Génération de code
Étape 2 : Étendre le compilateur avec les expressions logiques Ajouter les expressions logiques et les expressions sur les chaînes de caractères dans la grammaire. Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 3 : Étendre le compilateur avec les expressions sur les chaînes de caractères Ajouter les chaînes de caractères dans la grammaire Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 4 : Étendre le compilateur avec les structures de contrôle Ajouter les structures de contrôle "TANTQUE" et "POUR" dans la grammaire Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 5 : Étendre le compilateur avec les structures simples et tableaux Ajouter les structures simples et tableaux dans la grammaire Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 6 : Étendre le compilateur avec les procédures et fonctions Ajouter les procédures et fonctions dans la grammaire Ajouter les appels de procédures et fonctions dans la grammaire Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 7 : Étendre le compilateur avec les structures complexes Ajouter les des structures complexes dans la grammaire Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 8 : Étendre le compilateur avec les machines de Turing Ajouter les machines de Turing dans la grammaire Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 9 : Étendre le compilateur avec les listes linéaires chaînées Ajouter les déclarations des listes linéaires chaînées Ajouter les opérations sur les listes linéaires chaînées Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 10 : Étendre le compilateur avec les fichiers Ajouter les déclarations des fichiers Ajouter les opérations sur les fichiers Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Étape 11 : Étendre le compilateur avec les fonctions standards et autres Ajouter les fonctions Aleachaine et Aleanombre Autres … Reprendre (Lexique, Syntaxe, Sémantique, Forme interne, interprétation)
Grammaire du langage Z minimal : Conventions Sep dans {:, Un, Une, Des} Cste désigne une constante numérique entière Idf désigne un identificateur Opr dans { <, <=, >, >=, =, <> }; Opa dans { +, - } Opm dans { *, / }; Sign dans {+, -};
Grammaire du langage Z minimal : Déclarations <Algo Z> [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;] <Ps> <S>;{ [~Soit|Soient~] <S>;}* <S> <Li>[Sep <Typ> ] <Li> Idf {, Idf}* <Typ> Entier | Booleen
Grammaire du langage Z minimal : Instructions < Lis > < Inst > { ; < Inst > }* <Inst> Idf := <Exp> | Lire ( Idf {, Idf }* ) | Ecrire (<Exp> {,<Exp>}* )
Grammaire du langage Z minimal : Expressions <Exp> <Exps>[ Opr <Exps>] <Exps> [Sign] <Terme> { Opa <Terme> }* <Terme> <Facteur>{Opm <Facteur>}* <Facteur> Idf | Cste | ( <Exp>)