Examen de compilation 4 ème année - A

Click here to load reader

download Examen de compilation 4 ème  année - A

of 24

description

Examen de compilation 4 ème année - A. CHENEVOTOT Olivier DORVEAUX Quentin GALVANE Quentin GUILPAIN Thibaud POTET Germain UZEL Baptiste 4INFO. Questions de cours. Question 1.1 : Que signifie le "1" dans "grammaire LL(1)" ? - PowerPoint PPT Presentation

Transcript of Examen de compilation 4 ème année - A

Diapositive 1

CHENEVOTOT OlivierDORVEAUX QuentinGALVANE QuentinGUILPAIN ThibaudPOTET GermainUZEL Baptiste

4INFOExamen de compilation4me anne - AQuestions de coursQuestion 1.1 : Que signifie le "1" dans "grammaire LL(1)" ?Il suffit de "prlire" une seule unit lexicale pour assurer lunicit de la rgle de drivation utiliser.

Question 1.2 : Supposons quun langage de programmation autorise les commentaires imbriqus, comme par exemple /*Ceci est /*un commentaire*/ imbriqu*/.A quelle(s) tape(s) de compilation seront-ils traits ? On justifiera en quelques phrases.Tout comme les parenthses, on traitera ces commentaires lors de lanalyse syntaxique, en effet on ne peut pas traiter ici les commentaires lors de lanalyse lexicale.Questions de coursQuestion 1.3 : Donner le nom de la rgle suivante, dire quoi elle correspond. La paraphraser exhaustivement en franais.TS E1 : T TS E2 : T TS En : T_____________________________________________________________TS [E1;E2;;En] : liste(T)

Systme dinfrence de type pour les Listes.Si selon les hypothses TS, E1 En sont de type T alors [E1;E2;;En] est de type liste de T.

Analyse lexicale et syntaxiqueG : Grammaire dun langage impratif simplifi

prog "programme" bloc "fin"bloc "var" sdec corpssdec dec "," sdecsdec decdec identcorps "debut" sinst "fin" sinst inst ";" sinstsinst instinst blocinst ident "" expr expr expr "@" exprexpr ident ident sident sident sident sident sident sident

Analyse lexicale et syntaxiqueQuestion 2.1 : Dans la grammaire G, on peut remarquer lutilisation de diffrentes notations pour distinguer plusieurs types de mots. A quoi correspondent ces types de mots ?Les mots entre guillemets sont des terminaux du langageLes mots entre chevrons sont des classes de caractresLes autres mots correspondent aux non-terminaux

Question 2.2 : Lors de la compilation, est-ce que les mots entre guillemets (double quotes) vont tre reprsents par des chanes de caractre ? Justifiez votre rponse.Non, ils seront reprsents par des unit lexicales. En fait, tous les lments dits terminaux seront reprsents par des units lexicales. Les mots entre guillemets sont ici des mots-cls du langage.

Analyse lexicale et syntaxiqueQuestion 2.3 : Quelles rgles correspondent lanalyse lexicale ? A lanalyse syntaxique ?Seules les rgles sur ident et sident correspondent lanalyse lexicale. Toutes les autres correspondent lanalyse syntaxique.

Question 2.4 : Donner les ensembles VN et VT de la grammaire G, restreintes aux rgles de lanalyse syntaxique.VN = {prog,bloc,sdec,dec,corps,sinst,inst,expr}VT = {"programme", "fin", "var", ",", "debut", ";", "", "@",ident}

Analyse lexicale et syntaxiqueQuestion 2.5 : La grammaire restreinte prsente est-elle simplement LL(1) ? Justifiez votre rponse en une phrase.Les rgles suivantes nous permettent de dire que la grammaire nest pas LL(1).sdec dec "," sdecsdec decEn effet, premier(dec "," sdec) = premier(dec). Ainsi, la pr-lecture dune seule unit lexicale ne permettra pas de dterminer la rgle de drivation utiliser.

Analyse lexicale et syntaxiqueQuestion 2.6 : Calculez les ensembles ditems LR(0) demands pour la grammaire G, et seulement ceux-l.On augmente la grammaire : prog progI0 = Fermeture transitive (prog prog) = {prog .prog, prog ."programme" bloc "fin"}I2 = Trans(I0,"programme") = {prog "programme" .bloc "fin", bloc ."var" sdec corps}I4 = Trans(I2,"var") = {bloc "var" .sdec corps, sdec .dec "," sdec, sdec .dec, dec .ident}I6 = Trans(I4,sdec) = {bloc "var" sdec .corps, corps ."debut" sinst "fin" }I10 = Trans(I6, "debut" ) = {corps "debut" .sinst "fin", sinst .inst ";" sinst, sinst .inst, inst .bloc, inst .ident "" expr, bloc ."var" sdec corps}

-->8Analyse lexicale et syntaxiqueI18 = Trans(I14, "") = {inst ident "" .expr, expr .expr "@" expr, expr.ident}I20 = Trans(I18, expr) = {inst ident "" expr ., expr expr . "@" expr}I22 = Trans(I20, "@") = {expr expr "@" . expr, expr .expr "@" expr, expr.ident}I23 = Trans(I22, expr) = {expr expr "@" expr ., expr expr . "@" expr}I22 = Trans(I23, "@") [E1;E2;;En] = {expr expr "@" . expr, expr .expr "@" expr, expr.ident}

-->9Analyse lexicale et syntaxiqueQuestion 2.7 : Donner les ensembles "suivant" pour les non-terminaux de la grammaire. On ne demande pas de faire un calcul formel.Suivant(prog) = Suivant(bloc) = {"fin", ";"}Suivant(sdec) = {"debut"}Suivant(dec) = {",", "debut"}Suivant(corps) = {"fin", ";"}Suivant(sinst) = {"fin"}Suivant(inst) = {";", "fin"}Suivant(expr) = {";", "fin","@"}Suivant(ident) = {";", "fin","@", ""}

Analyse lexicale et syntaxiqueQuestion 2.8 : Construire la table SLR laide des ensembles prcdemment calculs. On indiquera toutes les possibilits donnes par le calcul ditems dans les cases correspondantes.programmevardebut