PandaCodeur · Examen 4 / 4

Examen de compilation : 4. Synthèse et commandes

Adaptation thématique INF321 2024–2025 : 3 heures, 20 points.

Consignes et rappels

Ce sujet reformule et réorganise des thèmes du sujet figurant à la page PDF 180. Barème pédagogique sur 20 : 4 + 5 + 8 + 3. Les corrections ci-dessous ont été élaborées pour PandaCodeur. Les opérateurs du mini-langage sont # binaire, @ postfixé, les crochets et le terminateur &.

1. Définitions et clôtures : 4 points

Développer LL(1) (1 point). Expliquer compilation et interprétation (1 point). Montrer que les préfixes et les facteurs d’un langage régulier sont réguliers (2 points).

Afficher la correction expliquée

LL(1) : lecture gauche à droite, dérivation gauche, un token de prévision. La compilation produit une représentation cible ; l’interprétation exécute une représentation du programme. Pour pref(L), rendre finaux tous les états pouvant atteindre un ancien final. Pour fact(L), prendre de plus comme initiaux tous les états accessibles depuis l’ancien initial. Un nouvel initial relié par ε permet de représenter cet ensemble : on obtient un AFN, donc un langage régulier.

2. Deux parités : 5 points

Sur Σ={a,b}, reconnaître les mots ayant un nombre pair de a et impair de b. Construire l’AFD complet (2 points), prouver sa minimalité (2 points) et tester ε, b, aab et ab (1 point).

Afficher la correction expliquée
État (parité a, parité b)abFinal ?
q00q10q01Non
q10q00q11Non
q01q11q00Oui
q11q01q10Non

Initial : q00 ; seul final : q01. Lire a inverse la première parité ; lire b inverse la seconde. Les quatre états sont accessibles par ε, a, b, ab. Depuis chaque état, il existe un suffixe de longueur au plus deux menant à q01 ; appliqué à tout autre état, ce suffixe conserve une différence de parité, donc le distingue. Les quatre états sont nécessaires. ε est refusé, b et aab sont acceptés, ab est refusé.

3. Un langage de commandes : 8 points

S → C &
C → α | C # C | C @ | [ C ]

Montrer l’ambiguïté (1 point). Proposer une grammaire LL(1) où @ est plus prioritaire que # et # associe à droite (2 points). Construire sa table (3 points). Tracer α#α& (2 points).

Afficher la correction expliquée

α#α#α& possède deux regroupements : (α#α)#α et α#(α#α). Choisissons :

S → C &
C → P C′
C′ → # C | ε
P → A R
R → @ R | ε
A → α | [ C ]

R applique zéro ou plusieurs @ au seul atome précédent. C′ renvoie à C après # : l’arbre abstrait de α#α#α est #(α,#(α,α)), donc l’associativité est à droite. Les crochets forcent un regroupement.

Non-terminalPREMIERSUIVANT
S{[, α}{$}
C{[, α}{&, ]}
C′{#, ε}{&, ]}
P{[, α}{#, &, ]}
R{@, ε}{#, &, ]}
A{[, α}{#, &, @, ]}
Mα[]#@&$
SS → C &S → C &-----
CC → P C′C → P C′-----
C′--C′ → εC′ → # C-C′ → ε-
PP → A RP → A R-----
R--R → εR → εR → @ RR → ε-
AA → αA → [ C ]-----

Convention : sommet de pile à gauche ; $ marque la fin de l’entrée et le fond de pile.

PileEntrée restanteAction
S $α # α & $S → C &
C & $α # α & $C → P C′
P C′ & $α # α & $P → A R
A R C′ & $α # α & $A → α
α R C′ & $α # α & $Lire α
R C′ & $# α & $R → ε
C′ & $# α & $C′ → # C
# C & $# α & $Lire #
C & $α & $C → P C′
P C′ & $α & $P → A R
A R C′ & $α & $A → α
α R C′ & $α & $Lire α
R C′ & $& $R → ε
C′ & $& $C′ → ε
& $& $Lire &
$$Accepter

4. Non-clôture des langages algébriques : 3 points

Donner deux langages hors contexte dont l’intersection n’est pas hors contexte, puis en déduire la non-clôture par complémentation.

Afficher la correction expliquée

L1={aⁿbⁿcᵐ | n,m≥0} et L2={aᵐbⁿcⁿ | n,m≥0} sont hors contexte. Exemples de grammaires : S1 → U V ; U → aUb | ε ; V → cV | ε, et S2 → W X ; W → aW | ε ; X → bXc | ε. Leur intersection est {aⁿbⁿcⁿ | n≥0}, qui n’est pas hors contexte.

Justification par pompage : choisir aᵖbᵖcᵖ. Une fenêtre de longueur au plus p rencontre au plus deux blocs de lettres. Pomper les deux segments modifiés change au moins un compte sans changer les trois de façon égale, ou détruit l’ordre des blocs. On sort du langage. Enfin, si les langages hors contexte étaient clos par complémentation, leur clôture par union et la loi de De Morgan impliqueraient la clôture par intersection : contradiction.