Vous êtes sur la page 1sur 1

Th,orle de langages et compllatlon (IRT33)

Examen. 16 Mvrler 2021. Dur,e 1H30

Exerclce 1. [Spts]

1. C'est quoi un langage algebrlque?


2. C'est quoi la difference entre un analyseur LR et un analyseur LL?
3. L'analyseur BISON est top-down ou Bottom-up?
4. Donner une grammalre qui reconnalt les mots p~!lndromes construits sur !'alphabet {0,1}.

Exercice 2. [Spts)

a,b

1. Donner tous les mots de taille 3 reconnus par !'automate ci-dessus.


2. Donner un DFA equivalent en appliquant l'algorithme de transformation NFA->DFA vu en
cours.

Exerclce 3. [10pts]

debutD
a : entier;
finD
debutP
a=5+8+a+10;
a=S+a;
a=10+a-2+3+5+8
finP

Ecrire un analyseur FLEX/BSION pour un langage simple compose de deux blocs. Le premier est un
bloc de declaration. II commence par debutD et se termine avec finD. Le langage permet la
declaration d'une seule variable (identifiant) de type entier. Ensuite, ii ya un bloc d'instructions
qui commence par debutP et se termine par finP. chaque instruction est sous la forme

identifiant=expression;

Une expression peut ~tre obtenue par une serie d'addition et soustraction d'entiers constants et
des variables (identifiants). Un identifiant est une chaine de caracteres alphanumerique qui ne
commence pas par un numerique.

Votre programme doit afficher une erreur syntaxique si l'identifiant utilise dans le programme n'a
pas ete declare dans le bloc de declaration.

A la fin de la compilation, le programme doit afficher la valeur finale de l'identifiant sachant qu'il est
a
initialise implicitement zero ..

lndication1.Ajoutercetteligneaufichieryacc:%uni on{int integer; c h ar str[S0] ;}

Indication 2. La fonction strcmp, de la bibllotheque <string. h>, permet de comparer deux


chaines de caracteres. Elle renvoie zero si les deux chaines sont identiques.

Vous aimerez peut-être aussi