Td langages formels frederic gruau Théorie des langages...

Théorie des langages : Td langages formels frederic gruau

Télécharger PDF

Langages Formels 2019-2020

TDs + devoir + TP

Fr ́ed ́eric GruauPlan Le cours est divis ́e en six p ́eriodes de deux

semaines, avec l’enchainement des six th`emes

suivants : a-Rappels, b-approfondissement au-

tomates, c- Grammaires Hors Contexte, d-

Automates `a piles, e- analyse syntaxique ascen-

dantes, f- Machine de Turing. L’enchaˆınement

est une construction logique, c’est `a dire qu’il

est n ́ecessaire d’assimiler les concepts au fur et

`a mesure, pour pouvoir continuer `a suivre jus-

qu’au bout. En particulier, les ́el ́eves n’ayant

jamais vus d’expressions rationnelles ni d’au-

tomates d’ ́états finis, doivent fournir un effort

consid ́erable les deux premi`eres semaines (rap-

pels), pour se mettre `a niveau avec le reste. Ce

recueil de TD et le support de cours se trouvent

`a l’adresse : https :// ̃gruau/

Il y `a 12 cours(1h30) suivi de 12 TD(2h). Le

cours pr ́epare aux TDs. Le d ́eroulement pour

chacune des 12 semaines est le suivant :

a- Rappel

1. Cours : Panoramique, Langage formels,

Expression rationnelle, lemme d’Arden,

def. automate d’ ́état fini.

TD : Egalit ́e langage, Expression ration-

nelle, Automates simples.

2. Cours : Automate non-d ́eterministe, epsi-

lon transitions, th ́eoreme de kleene

TD : Automates, suite et fin, d ́etermi-

nisation, r ́esolution d’ ́equation (d ́ebut).

b- Approfondissement automates

3. Cours : minimisation d’un automate

TD:r ́esolutiond’ ́equation(autre

exemple),constructiond’automates,

construction directe de l’automate mini-

mal a partir du langage.

4. Cours pompage, clˆoture, d ́ecidabilit ́e.

TD pompage, clˆoture.

c- Grammaires Hors Contexte

5. Cours : grammaires hors contexte, arbre de

d ́erivation, ambiguit ́e, r ́e ́ecriture droite.

TD : grammaire d’un langage, langage

d’une grammaire, d ́esambigu ̈ıser.

6. Cours : nettoyage de grammaire, FN

Chomsky, d ́ecidabilit ́e, cloture, analyse

lexicale.

TD : analyse lexicale, grammaire d’un vrai

langage, est-il-alg ́ebrique (1,4,5).

d- Automates `a piles

7. Cours+TD : automates `a piles TD est-il-

alg ́ebrique (suite)

8. Cours : ́

Equivalence automate `a pile-

grammaire,clˆoture, premier et suivant.

TD : est-il-alg ́ebrique (fin), Analyse ascen-

dente `a la main, premier et suivant.

e- Analyse Ascendente

9. Cours+TD : Analyse ascendente

10. Cours:automateLR(1)g ́en ́eral,

LALR(1), intro machine de Turing.

TD : exo d’analyse ascendante (rappel +

LR, LALR ). machine de Turing simple

f- Machine de Turing

11. Cours d ́ecidabilit ́eTD machinede Turing

compliqu ́ee,

d ́ecidabilit ́e de l’ambigu ̈ıt ́e.

12. Cours : NP compl ́etude,

TP en salle machine : yacc et lex

Les exercices optionnels sont plus difficiles.

Ils sont con ̧cus pour occuper les meilleurs ́etudiants ou vous permettre de travailler chez

vous. Ils ne sont en g ́en ́eral pas trait ́es avec

toute la classe par manque de temps. Certains1 exercices plus importants ou plus difficile sont

r ́epartis sur deux TDs : le premier TD traite

un exemple facile, et le TD de la semaine sui-

vant un deuxi`eme exemple plus difficile. C’est

le cas pour les automates d’ ́état finis (TD 1 et

2), la r ́esolution d’ ́equations de langages (TD 2

et 3), est-il-alg ́ebrique (TD 6,7 et 8, car il y a

plusieurs m ́ethodes), l’analyse ascendante (TD

9 et 10), les machine de Turing (TD 10 et 11).

Examens, Devoir,Rattrapage.

Seules les notes de cours manuscrites, et les

poly de cours et d’exercices sont autoris ́es aux

examens. Chaque TD fait l’objet d’un exercice

au partiel ou `a l’examen. Le partiel et l’examen

comprennent aussi des questions de cours non

trait ́ees en TD. Les notes de partiels mauvaises

pourront ˆetre ”partiellement” rattrap ́ees grˆace

`a un devoir relativement facile, mais sur un co-

efficient de seulement 10 pourcent par rapport

au partiel. Contrˆole continu = (9* partiel + de-

voir)/10. L’ ́enonce du devoir est inclus dans ce

recueil, `a la section 12. L’examen de rattrapage

en juin, porte sur toute l’ann ́ee.1 D ́emonstrationd’ ́egalit ́e

entre deux langages

Les ́egalit ́es suivantes sont elles vraies ? si oui,

le d ́emontrer sinon donner un contre-exemple.1.L ∗=L ∗.L ∗

= (L∗ )∗ 2.L.(M∩N) = (L.M)∩(L.N)

3. Optionnel : (L∗ .M)∗ ={}+ (L+M)∗ .M2 Expression rationnelle2.1 ExprRat d’un langageL 1

={w|wcommence parab}L 2

={w|wtermine parbb}L 3

={w|wcommence parabet termineparbb} L4 ={w|wcontient trois occurrences suc-

cessives de la lettrea}L 5

={w|wne commence pas parba}L 6

={w|wne termine pas parbba}2.2 optionnel : ExprRat compliqu ́e.L 7

={w|wne contient pas deux occur-

rences successives de la lettrea}L 8

={w|wne contient pas trois occurrences

successives de la lettrea}L 9

={w|le nombre deadanswest pair

}={w||w|a = 0 (mod2)}L 10={w||w| a

= 1 (mod3)}2.3 ExprRat pour l’analyse lexicale.

La premi`ere ́etape d’un compilateur et l’ana-

lyse lexicale, qui d ́ecoupe le texte d’un pro-

gramme en unit ́es lexicales appel ́ee ”token”.

Un token peut ˆetre un mot clef, un identifiant,

une constante num ́erique. On utilise des ex-

pression rationnelle pour identifier la nature

des diff ́erent token. On utilisera la notation

” ́etendue”” plus compacte. Par exemple,e? =

e|qui signifie queeest optionnel, [0−9] signifie

un chiffre.

Ecrire l’expression rationnelle d ́ecrivant :

1. un identificateur comme une lettre suivit

d’une suite de lettre ou de chiffre,

2. un entier positif

3. un entier relatif

4. un nombre `a virgule3 Automates reconnaissant un

langage donn ́e.

Donner des automates reconnaissant les lan-

gages suivants : les entiers sont cod ́es en bi-

naire. Pour les entiers comme pour les mots

habituel, on consid`ere que les caract`eres sont

lus de gauche a droite, donc en commen ̧cant

par les bits de poids forts.

— des entiers pairs, des entiers impairs, des

puissances de 2

—A={0,1},L={w|wcode une puis-

sance de 4}

—A={0,1},L={w|wcode la somme

de deux puissances de 4 distinctes : 4k +4k ′,k6=k ′}. —A={a,b},L={w|wcommence parabaaba} —A={a,b},L=

{w|wcontientaabaaab}

—A={a,b},L={w|wcommence par

abbet termine parbba}2 — Les ́ecritures de nombre `a virgule

—A={a,b,c},L={w|wcontient au

moins une fois chacune des trois lettres}

— Optionnel.A={a,b},L={w| |w|a est

pair, ainsi que|w|b }

— OptionnelA={a,b},L={w|w

contient un nombre pair de fois le facteurbab} — Optionnel.A={0,1},L={w|en base

2,wrepr ́esente un nombre valant 1 mo-

dulo 3}4 D ́eterminisation4.1 M ́ethode de d ́eterminisation.

D ́eterminisez :? l lhl ll l14 25 36 �� @@R -- @@R �� ab bb ba  � -a,ba,b 4.2

Boum !SoitL n

l’ensemble des mots sur{a,b}de lon-

gueur au moinsndont lani`eme lettre avant la

fin est unb. Donnez un petit automate non-

d ́eterministe pourL3 . puis son d ́eterminis ́e.

Comparez leur nombre d’ ́etats. Au lieu de faire

marcher l’algorithme de d ́eterminisation, on

commencera par r ́efl ́echir quels doivent ˆetre les ́etats, puis on rajoutera les transitions.5 Resolution d’ ́equations

Rappel de cours : `a tout automate on peut

associer un syst`eme d’ ́equations dont les va-

riables repr ́esentent les langages reconnus par

cet automate `a partir de chacun de ses ́etats.5.1 Exemple `a faire` A l’aide du syst`eme d’ ́equations pr ́ec ́edent,

que l’on r ́esoudra par ́elimination et utilisation

du lemme d’Arden, d ́eterminer une expression

rationnelle correspondant aux automates sui-

vants : ( sur l’alphabetA={a,b})12 ab a,b123 ab ab a,b5.2 Exemple optionnel.123 45 ab ab ba a,ba b12 a,ba,b 6

Construction d’automates.6.1 Construction classiquesLest reconnupar l’automateA=

(Σ,Q,δ,q0 ,F). Construire des automates re-

connaissant :

—miroir(L)={a na n−1...a 3a 2a 1|a 1a 2...a n∈L} — l’ensemble des mots obtenus a partir des

mots deLen effa ̧cant tous lesa.

— le compl ́ementaire deL, en supposantA

d ́eterministe.

— Optionnel : l’ensemble des mots obtenus

en effa ̧cant un nombre pair de lettres d’un

mot deL6.2 Construction du produit syn-

chronis ́e pour l ’intersection.L 1etL 2

sont reconnus par les automatesA1 etA2 .

On suppose queA1 etA2 sont d ́eterministes

complets.

— Donner un algorithme lin ́eaire en|u|pour

savoir siu∈L1 ∩L2 .

— En d ́eduire la construction d’un automate

d ́eterministe reconnaissant l’intersection.

il s’appelle le ”produit synchronis ́e”.

— Construire ́egalementunautomate

d ́eterministe reconnaissant l’union3 — Les constructions pr ́ec ́edentes s’adaptent-

elles aux automates non complet ?non-

d ́eterministes ?6.3 Optionnel : Le barman boxeur

Un tr`es bon exercice ludique, de Laurent Ro-

saz : il met en jeu des techniques de construc-

tion d’automate, il permet de bien comprendre

comment le non-d ́etermisme est fondamental

pour mod ́eliser certain probl`emes. Corrig ́e dans

l’appendice.

Un barman et un client jouent au jeu sui-

vant : Le barman met un bandeau sur les yeux

qui le rend aveugle, et il met des gants de

boxe qui l’empˆechent de ”sentir” si un verre

est `a l’endroit ou `a l’envers. Devant le bar-

man, se trouve un plateau tournant sur lequel

sont plac ́es quatre verres en carr ́e. Ces verres

peuvent ˆetre `a l’envers ou `a l’endroit. Le sens

des verres est choisi par le client et est inconnu

du barman. Si les verres sont tous dans le mˆeme

sens, alors le barman gagne (Quand le barman

gagne, un autre client, ”arbitre”, annonce qu’il

a gagn ́e et le jeu s’arrˆete.) Le barman peut

r ́ep ́eter 10 fois l’op ́eration suivante : Il annonce

au client qu’il va retourner certains verres (par

exemple le verre en bas `a gauche et celui en bas

`a droite). Le client fait alors tourner le plateau,

puis le barman retourne les verres comme il l’a

annonc ́e. Si les verres sont alors tous dans le

mˆeme sens, le barman gagne.

1)On se place du point de vue du client.

Donnez un automate dont les ́états sont les

diff ́erentes configurations du plateau, les lettres

les coups annonc ́es par le barman et o`u les

fl`eches d ́ecrivent les ́evolutions possibles des

configurations. Le fait que 1- le client fait tour-

ner le plateau comme il veut, et 2- on ne

se pr ́eoccupe pas que tout les verres soit a

l’endroit, mais seulement qu’ils soient dans le

mˆeme sens, conduit `a beaucoup simplifier : il y

a seulement quatre ́états `a distinguer, et seule-

ment trois coups possibles `a jouer, pour passer

d’un ́état `a un autre.

2) A partir de l’ ́état ou 2 verres a Cote l’un

de l’autre dans un sens et les 2 autres dans

l’autre, donner une s ́equence de coup permet-

tant au barman de gagner. Comme on a utilis ́e

une seule lettre pour nommer les coups, cette

suite corresponds `a un mot d’un langage for-mel. 3) Donnez un automate non d ́eterministe

(avec ́eventuellement plusieurs ́états entr ́ee) qui

donne toutes les s ́equences d’annonces les bonschoix). 4) Donnez un automate qui donne les coups

qui assurent au barman de gagner quel que

soit le comportement du client. On utilisera

le r ́esultat suivant : SoitAun automate

d ́et ́erministe complet qui reconnaˆıt un langage

L, pour obtenir un automate qui reconnaˆıt le

compl ́ementaire, il suffit d’inverser final/non-

final. Attention, cette m ́ethode ne marche pas

siAest non-deterministe ou siAest non-

complet.

5) Jouez-vous de l’argent contre le barman ?7 Minimisation7.1 Construction de l’automate mi-nimal. Minimisez l’automates suivant :-   j

            j

  12345678 ---- aaaaa a,b@ @@R �� � �� � bbb 6?? bbb� ?a 6 b  ?a 7.2

Egalit ́e entre automates.

Montrer que les deux automates suivants,

( ́état initial 0), reconnaissent le mˆeme langage.δ0123 a1213

b3133 ́état terminal : 1δ012345 a123225b545345 terminaux : 1,3,47.3 Construction de l’automate mi-

nimal `a partir du langage.7.3.1 Rappel de cours.

L’exercice fait intervenir des concepts un peu

difficile `a dig ́erer en cours, c’est pourquoi on

vous les redonne ici, r ́esum ́e. SiL ́etant un4 langage sur l’alphabetA, la relation de demi

congruence syntaxique surA∗ , not ́ee∼L , est

d ́efinie par la relation suivante :x∼L yssi∀z∈A ∗

,(xz∈L⇔yz∈L) C’est une relation

d’ ́equivalence. Deux mots sont en relation pour

la demi-congruence, si ils ont le mˆeme avenir

avec avenirL (u) qui est{v|uv∈L}. Si un au-

tomateAreconnaitL, `a un ́etatq, on asso-

cie un languageAvenirL (q) qui est les mots

qui m`enent de cet ́état a un final. Ce langage

est pr ́ecis ́ement celui qui se calcule en r ́esolvant

les ́equations associ ́e a chaque nœud avec le

Lemme d’Arden. L’avenir d’un ́état est ́egal

`a l’avenir d’un mot qui y m`ene. Deux ́etats

peuvent ˆetre fusionn ́es, si ils ont le mˆeme ave-

nir. Dans l’automate minimal, il y a donc un

seul ́état par classe d’ ́equivalence, la classe d’un ́etatp, c’est l’ensemble des mots qui vont deq0 `ap, et l’avenir dep, c’est les mots qui vont de

pa un final.

Th ́eoreme :Lreconnaissable ssi siLa un

nombre fini de classes, le nombre de classe etant

en fait le nombre d’ ́états dans le determiste mi-nimal SiLreconnaissable, alors les classes sont en

nombre fini, puisque il y a une classe par ́etat.

Si il y a un nombre fini de classe, alors on fait

l’automate comme suit : un ́état par classe, ou,

ce qui revient au mˆeme et rend la chose plus

compr ́ehensible, un ́état par avenir distinct. On

met une fl`eche depversqavec la lettreasi

Classe(p).aest inclus dans classe deq, L’etat

initial = la classe de epsilon, Un ́état est final

si il a epsilon dans son avenir.7.3.2 Calcul des classe d’ ́equivalence et

construction de l’automate.

SoitA={a,b}. Pour chacun des langages

ci-dessous, d ́eterminer les classes d’ ́equivalences

pour la relation de congruence syntaxique. Dire

s’il est reconnaissable, et si oui, construire l’au-

tomate minimal le reconnaissant, `a partir de

ces classes.

On proc ́edera en choisissant d’abord des pe-

tits motsu, en calculant l’avenir deu, puis la

classe deuqui est l’ensemble des mots qui on le

mˆeme avenir ; On choisisuseulement parmi les

mots qui sont des pr ́efixes d’un mot du langage,

les autres mots ont tous le mˆeme avenir : l’en-

semble vide, et sont donc dans la mˆeme classe

qui corresponds `a un ́état poubelle dans l’au-

tomate minimal.1.A ∗2.{a} 3.a∗ b∗ 4.abba+ababa5.{a nb n,n≥0} 6. Optionnel :{uu|u∈A∗ }8 Le lemme de la pompe8.1 Non pompabilit ́e

Montrez, en utilisant le lemme de la pompe

que les langages suivants ne sont pas reconnais-sables —{an b2n |n≥0}—{(ab) nc n|n≥0} —{an bm |n≥m≥0}—{a nb m|m≥n≥0} —{an bn |n≥0}+{ap bq |p6=q[7]}

— optionnel{an bm |n6=m}8.2 Pompabilit ́e-optionnel

Montrez que le langage suivant est pompable

mais pas reconnaissable :{bm an bn |m >0, n≥

0}∪a(a+b)∗ 9

Clˆoture langages r ́eguliers.

En utilisant les propri ́et ́es de clˆoture des lan-

gages rationnels et le fait que{an bn }n’est pas

rationnel, montrer que les langages suivants ne

sont pas rationnels :

—L1 ={w∈(a+b)∗ ||w|a =|w|b }

—L2 ={an bp |n6=p}

—L3 ={a2n b2n |n≥0}

—L4 ={an bp |n≥p}

Pour le dernier, vous pourrez utiliser deux

m ́ethodes : Une premi`ere qui ́etablit une re-

lation entre{an bp |n≥p}et{an bp |n > p}. Une

deuxi`eme qui utilise la stabilit ́e des reconnais-

sables par miroir.. 10

Grammaires hors contexte10.1 De la grammaire vers le langage

D ́eterminer les langages engendr ́es par les

grammaires dont les r`egles de production sont

les suivantes :5 1.S→|aaaS

2.S→ab|aSb

3.S→XY|Z;X→Xa|a;Y→aY b|;

Z→aZb|W;W→bW|b

4.S→SS||(S)

5.S→SS|()|[]|(S)|[S]6.S→ S→ai Sai pour touti,1≤i≤n 7.S→bS|aT;T→aT|bU;U→aV|bS;

V→aT|bU|

Ces grammaires sont-elles ambigu ̈es ? Si

oui, pouvez-vous donner une grammaire non-

ambigu ̈e ?10.2 Du langage vers la grammaire

Trouver des grammaires pour les langages

suivants.

1. (a+ (a+b)∗ )(ab∗ )∗ 2.{an bp |0< p < n}3.{a nb p

|0≤n≤p+ 1}4.{a nb nc md m|n,m∈N} 5.{an bm cn+m |n,m∈N}6.{a nb mc p

|n=moum=p}

7. optionnel{an bm cp dq |n+q=m+p}

8. optionnel{an bm cp dq |n+p=m+q}10.3 D ́esambiguiser `a la mainSoitF 1

la grammaire

E→E+E|E−E|(E)|idetG 1

la grammaireF1 plus les r`egles :

E→E∗E|E/E|E∧E

1. Donner tous les arbres de d ́erivations du

motid−id−id. Combien y en a-t-

il ? Correpondent-ils `a des interpr ́etations ́equivalentes ?

2. Donner des grammairesF2 etG2 telles queL(F 1

) =L(F2 ), queL(G1 ) =L(G2 ), que

chaque motwposs`ede une seule d ́erivation

`a partir du symbole initial deG2 , et que

la d ́ecomposition en arbre corresponde au

regles usuelles de priorit ́e.11 Grammaire et compilation.

Faut avoir parl ́e d’analyse lexicale en cours.11.1 Analyse lexicale

l’utilisation d’ocamllex n’est pas limit ́ee a

l’analyse lexicale des que l’on souhaite analyser

un texte (chaˆıne, fichier, flux) sur la base d’ex-

pressions r ́eguli`eres, ocamllex est un outil de

choix en particulier pour ́ecrire des filtres, i.e.

des programmes traduisant un langage dans un

autre par des modifications locales et relative-

ment simples. ́

Ecrire un programme occamlex qui imprime

un fichier en ayant pr ́ealablement enlev ́e toutes

les lignes vides, et un autre qui compte les oc-

currences d’un mot dans un texte le mot et le

nom du fichier texte sont pass ́es en param`etres11.2 Grammaire d’un Language de

programmation

Consid ́erons le petit programme suivant ́ecrit

en Pascal :

program calcul;var T : array[1..10] of integer;

S,I : integer;begin S:=0; (* initialisation *)

for I:= 1 to 10 dobegin read(T[I]);

S := S + T[I]end; writeln(S)end. L’analyseur lexical d ́ecoupe ce programme en

une liste des entit ́es lexicales appel ́ees ”token”

dont nous donnons ici le d ́ebut :

programcalcul;

<0><-1,50><11>

varT:array[1

<1><-1,51><12><2><13><3,1>

Chaque token est donn ́e par une classe et sa

valeur, s’il y en a une. Pour les identificateurs,

la valeur sera la chaine de caract ́ere, ou mieux,

l’adresse d’entr ́ee dans une table des symboles.

Lorqu’elle

rencontredes identificateurs,

l’analyse lexicale les ranges dans une table des6 symboles qui permettra de centraliser les infor-

mations rattach ́ees aux identificateurs. Apr ́es

l’analyse lexicale, cette table sera :

adressechaˆıneinformation

0program1var 2array3of 4integer5begin 6for7to 8do9end .. .. .. 50calcul51T 52S53I 54read

55writeln. .. .. .

La table est d ́ecoup ́ee en une zone pour les

mots-cl ́es, occup ́ee ici de 0 `a 9 et une zone pour

les identificateurs `a partir de 50. Cette table est

compos ́ee d’un champ repr ́esentant la chaˆıne

de caract`eres et d’un champ pouvant contenir

diff ́erentes informations utiles `a l’analyse

s ́emantique. On suppose les diff ́erentes entit ́es

rang ́ees dans l’ordre de leur apparition, sauf les

mots-cl ́es qui sont charg ́es pr ́ealablement dans

la table. Les symboles ; : [],.,..sont associ ́es

dans l’ordre `a des tokens de classe 11 `a 17 ;

Comme il n’y a qu’une unit ́e lexicale dans

chacune de ces classes il n’est pas n ́ecessaire

de passer de valeurs.

On souhaite ́ecrire un grammaire permet-

tant de g ́en ́erer des programme Pascal, et en

particuler notre programme. Plus pr ́ecis ́ement,

la grammaire doit g ́en ́erer non pas le texte

du programme mais le ”mot” repr ́esentant la

suite de token de ce programme. On commence

par quelques questions pour d ́ej`a mieux com-

prendre c’est quoi ce ”mot”.

1. A quoi corresponds la classe d’un token

pour cette grammaire ?

2. A quoi corresponds la classe -1, sur cet

exemple ?

3. Que sont les mots clefs pour cette gram-

maire ?

4. Quelle valeur a un token constante enti ́ere,

`a quelle ́etape on la calcule, et comment la

calculer ?

5. Proposer une grammaire permettant d’en-

gendrer le langage auquel ce programme

appartient.

6. Donner l’arbre de d ́erivation syntaxique

associ ́e `a ce programme. Il couvre plusieurs

pages, on pourra le finir chez soi. Indiquez

les valeurs des tokens.

7. Lorsqu’on compile, on construit une ver-

sion r ́esum ́ee de l’arbre d’analyse appel ́ee

”Arbre de Syntaxe Abstraite” (AST). Elle

contient juste les informations utiles. Pro-

poser un AST pour ce programme.12 DM pour mardi 17 mars.

Ce devoir est `a faire individuel. Il est `a rendre

imp ́erativement `a votre prof de TD, sauf le

groupe du mercredi qui peut le rendre ou bien

en cours, ou bien `a Sandrine. Un devoir rendu

apr`es mardi 17 mars aura pour note z ́ero.

Ce DM reprends le TD11.2 qui va trop vite

pour que tout le monde comprenne. Il vous per-

mettra de 1- dissocier le travail fait par l’ana-

lyse lexicale 2- apprendre `a ́ecrire des gram-

maires ”grandeur nature” 3- Aborder la notion

de syntaxe abstraite.

On consid ́ere le programme PASCAL sui-

vant :

program factoriel ;var i,n : integer ;

f : longint ;begin write(’ Donner un entier : ’) ;

readln(n) ; f:=1 ;

for i:=2 to n do

f:= f * i ;

writeln(’Le factoriel est ’, f);End. 12.1

Analyse lexicale : Classe, valeur

L’analyseur lexical d ́ecoupe ce programme en

token (comprenant toujours une classe et par-

fois une valeur) et range les identificateurs dans

une table des symboles.

1. Que code le num ́ero de classe d’un token ?

2. Les identificateurs sont ils tous de la mˆeme

classe ?

3. Les mots clefs sont ils tous de la mˆeme

classe ?7 4. Quelle valeur a un token identificateur ?

5. Quelle valeur a un token mot clef ?

6. Comment peut on reconnaˆıtre les mots

clefs de facon simple, lors de l’analyse lexi-

cale ? (On suppose que les mot clefs sont

pr ́echarg ́es dans cette table.)

7. D ́ecrivez l’ ́état de la table des symboles,

apr ́es l’analyse lexicale.

8. Ecrire la suite de tokens g ́en ́er ́ee par ce

programme, avec les classes et les valeurs

des tokens. pour le bout suivant

for i:=2 to n do

f:= f * i ;12.2 Analyse syntaxique

1. Construction de la grammaire : Propo-

ser une grammaire permettant d’engen-

drer un langage auquel ce programme ap-

partient. On convient qu’un non-terminal

commence par une majuscule et que les

terminaux (correspondant aux classe de

tokens) commencent par une minuscule

2. Analyse syntaxique : Dessiner l’arbre de

d ́erivation syntaxique g ́en ́er ́e pour l’ana-

lyse de ce programme. Comme il est tr`es

grand, utiliser plusieurs pages. On indi-

quera aussi la valeur des tokens, lorqu’il

y en a une.

3. Syntaxe abstraite : Proposer un AST

r ́esumant les informations contenue dans

le programme.13 Optionnel grammaire13.1 Nettoyage de grammaires

On veut nettoyer une grammaire, c’est `a dire

enlever :

(1) Les non-terminaux impasse, c’est `a dire

qui ne produisent pas de mots surA∗ (2) les non-terminaux inaccessibles , c’est `a

dire qui ne figurent dans aucune d ́erivation faite

`a partir deS.

Donner un algorithme permettant de rep ́erer

(et donc d’ ́eliminer) les impasses

Donner un algorithme permettant de rep ́erer

(et donc d’ ́eliminer) les inaccessibles

Quand on veut faire un nettoyage com-

plet, l’ordre dans lequel on effectue ces deux

op ́erations est-il indiff ́erent ? Pourquoi ?

Nettoyer la grammaire :

S→X X→Y Z→W|eS

W→b|fX Y→aT|TK

U→bdX|Y|dZ K→cV|Z

X→abcY W→U

T→aT||ef|aY V→af13.2 D ́esambigu ̈ısation difficile.SoientD 1,D 2etD 3

les langages suivants :D 1

={w∈{a,b}∗ ||w|a =|w|b }D 2

={w∈{a,b}∗ ||w|a =|w|b et

∀vpr ́efix dew|v|a ≥|v|b }D 3={w R∈{a,b} ∗|w∈D 2} On veut donner une grammaire pourD1 non

ambigue. Montrer comment obtenirD1 avec les

op ́erations de concat ́enation et d’ ́etoile `a partir

du langageD2 (Dyck d’ordre 1) et de son miroirD 3

. Utiliser cette description et

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2