NFA003 2008-2009 Joëlle Delacroix
Exercice 2 : Compilation
Soit le langage défini par les règles de Backus-Naur suivantes:
< programme > ::= PROGRAM < nom de programme > < corps de programme >
< corps de programme > ::= < suite de declarations >< suite d'instructions > FIN
< suite de declarations > ::= < declaration >| < declaration > < suite de declarations >
< declaration > ::= < identificateur > : REEL := <valeur réelle> ; | < identificateur > : ENTIER :=
<valeur entière> ;
< suite d'instructions > ::= < instruction > | < instruction > < suite d'instructions >
< instruction > ::= < addition > | < multiplication >
< identificateur > ::= < lettre >
< valeur entière > ::= < chiffre >
< valeur réelle > ::= < chiffre > , < chiffre >
< nom de programme > ::= <lettre > < chiffre >
< lettre > ::= A |B | C | D | E....| X | Y | Z
< chiffre > ::= 0 |1 | 2 | 3 | 4...| 9
A. Une addition est de la forme
A := B + 3 ; ou A := B + 3,2 ;
A et B sont des identificateurs, 3 est un entier et 3,2 est un réel.
Une multiplication est de la forme suivante :
A := B * C ;
A, B et C sont des identificateurs.
Ecrivez la règle BNF donnant la syntaxe d’une addition et celle donnant la syntaxe d’une
multiplication.
B. Soit à présent le programme suivant:
PROGRAM A3 /
A : REEL := 3,2;
B : ENTIER := 3,2;
A := A + 5,1 ;
B:= B * 61,
FIN
Entourez les unités lexicales reconnues. Signalez les éventuelles erreurs lexicales rencontrées à ce
niveau.
C. Pour chaque phrase du programme donnée ci-dessous, donnez l’arbre syntaxique correspondant.
Signalez les éventuelles erreurs syntaxiques rencontrées à ce niveau.
Phrase 1 A : REEL := 3,2;
Phrase 2 B : ENTIER := 3,2;
Phrase 3 A := A + 5,1;
Phrase 4 B:= B * 61,
Exercice 3 : Étude du chargeur et de l'éditeur de liens
Soit une machine disposant d’une mémoire de 10000 emplacements. Chaque emplacement
peut contenir un entier, qui peut représenter une donnée ou une instruction.
La machine dispose de 5 instructions qui sont codées comme suit:
2