Sommaire Définition du langage d’expérimentation Compilateur pour le langage Z minimal Extensions du langage Z minimal
Chapitre précédent Chapitre 2 : Le langage Z minimal
2.1 Objectif
Afin de faciliter la réalisation du compilateur, nous définissons dans un premier temps un sous langage de Z dans le but de développer toutes les phases de compilation et avoir un compilateur qui tourne.
Dans un second temps, nous étendons progressivement le langage minimal jusqu’à obtenir un compilateur pour le langage Z en entier.
2.2 Restrictions
Le langage Z minimal est défini avec les restrictions suivantes;
- Pas de procédures et fonctions.
- Se limiter au type ENTIER.
- Se limiter aux expressions arithmétiques.
- Se limiter aux seules instructions: Affectation, Lecture et Écriture.
2.3 Grammaire
La grammaire du langage Z minimal est défini comme suit:
Déclarations
<Algo Z> → [ ~Soit|Soient~ <Ps> ] Debut <Lis> Fin [;]
<Ps> → <S>;{ [~Soit|Soient~] <S>;}*
<S> → <Li> Sep <Typ>
<Li> → Idf {, Idf}*
<Typ> → Entier
Instructions
< Lis > → < Inst > { ; < Inst > }*
<Inst> → Idf := <Exp> | Lire ( Idf {, Idf }* ) | Ecrire (<Exp> {,<Exp>}* )
Expressions
<Exp> → <Exps>[ Opr <Exps>]
<Exps> → [Sign] <Terme> { Opa <Terme> }*
<Terme> → <Facteur>{Opm <Facteur>}*
<Facteur> → Idf | Cste | ( <Exp>)
2.4 Compilateur
Il s’agit de réaliser pour le langage Z minimal toutes les fonctions énumérées ci après:
- Analyse lexicale et Implémentation.
- Analyse syntaxique et Implémentation.
- Organisation de la mémoire (Zone de données, Attribution des adresses, ...).
- Gestion des tables (Table des symboles, Tables de compilation, ...).
- Sémantique des déclarations ( Forme interne).
- Sémantique des expressions arithmétiques ( Forme interne).
- Sémantique des instructions d’affectation, de lecture et d’écriture (Forme interne).
- Interprétation ou génération de code.
Ces fonctions seront définies dans les chapitres qui suivent.