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

2.2 Restrictions

2.3 Grammaire

2.4 Compilateur


 

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.