Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 : (8 pts)
1. Ecrire un analyseur lexical
• qui reconnaît les unités lexicales suivantes:
− Les mots clés : Program, Begin, Var, integer, if, then, else, endIf, End.
− L'opérateur d'affectation ‘ :=’
− Le séparateur ‘;’ ‘ :’ ‘,’.
− Les opérateurs relationnels : ‘<’ ‘<=’ ‘>’ ‘>=’ ‘<>’ ‘=’
− Les identificateurs représentant les variables
− Les nombres signés (+ et -) positifs et négatifs, entiers et réels flottants
(Exemple : ‘+15.236’ ‘−178’ ‘−0.35’)
• qui remplace :
− les opérateurs de comparaison par “opComp”
− les variables par le mot “id”
− les nombre entiers par “nbInt” et les nombres flottants par “nbFloat”
− l'opérateur d'affectation par “opaff”
− les séparateurs par “sep”
• qui élimine les espaces “blancs”, “les tabulations” et les “retour en ligne”
• qui déclenche une erreur si autre caractère est lu.
𝜀 a S a
3. Construire une dérivation gauche et une dérivation droite de « 𝒂𝒂𝒃𝒃 » et dessiner leurs
arbres associés.
Dérivation gauche Dérivation Droite Arbre syntaxique
𝑆 → 𝑆𝑆 𝑆 → 𝑆𝑆
S
→ 𝑎𝑆𝑎𝑆 → 𝑆𝑏𝑆𝑏
→ 𝑎𝑎𝑆 (𝑎𝜀𝑎𝑆) → 𝑆𝑏𝑏 (𝑆𝑏𝜀𝑏)
→ 𝑎𝑎𝑏𝑆𝑏 → 𝑎𝑆𝑎𝑏𝑏 S S
→ 𝑎𝑎𝑏𝑏 (𝑎𝑎𝑏𝜀𝑏) → 𝑎𝑎𝑏𝑏 (𝑎𝜀𝑎𝑏𝑏)
a S a b S b
𝜀 𝜀
Exercice 3 : (6 pts)
Eliminer la récursivité à gauche et l’ambiguïté des grammaires suivantes :
1. 𝐸 → 𝐸 𝑜𝑟 𝑇 | 𝑇 Récursive à gauche
𝑇 → 𝐸 𝑎𝑛𝑑 𝐹 | 𝐹
𝐹 → 𝑛𝑜𝑡 𝐹 | (𝐸) | 𝑡𝑟𝑢𝑒 | 𝑓𝑎𝑙𝑠𝑒
➔ 𝐸 → 𝑇𝐸 ′
𝐸 ′ → 𝑜𝑟 𝑇 𝑇 ′ | 𝜀
𝑇 → 𝐸 𝑎𝑛𝑑 𝐹 | 𝐹
𝐹 → 𝑛𝑜𝑡 𝐹 | (𝐸) | 𝑡𝑟𝑢𝑒 | 𝑓𝑎𝑙𝑠𝑒
➔ 𝐴 → 𝐵𝐴′ ➔ 𝐴 → 𝐵𝐴′
𝐴′ → 𝑎𝑏 𝐴′ | 𝑎𝐶 𝐴′ | 𝜀 Ambigüe 𝑨′ → 𝒂𝑨′′ | 𝜺
𝑨′′ → 𝒃 𝑨′ | 𝑪 𝑨′
𝐵 → 𝑏𝐵𝑐 𝐵′ | 𝑏 𝐶 𝐵′ Ambigüe 𝑩 → 𝒃𝑩′′
𝑩′′ → 𝑩𝒄 𝑩′ | 𝑪 𝑩′
𝐵′ → 𝑑 𝐵′ | 𝜀 𝐵′ → 𝑑 𝐵′ | 𝜀
𝐶 → 𝑎𝑏𝐶′ | 𝑏𝑏𝐶′′ 𝐶 → 𝑎𝑏𝐶′ | 𝑏𝑏𝐶′′
𝐶′ → 𝐶 | 𝑑𝑑 𝐶′ → 𝐶 | 𝑑𝑑
𝐶′′ → 𝐶 | 𝑑𝑑 | 𝜀 𝐶′′ → 𝐶 | 𝑑𝑑 | 𝜀
4. 𝑆 → 𝐴𝐴 | 𝑏𝐴𝑎 | 𝑎𝑏𝑏
𝐴 → 𝑏𝐴 | 𝐴𝑏 | 𝑎 | 𝑥𝐵𝑦 | 𝑥 Récursive à gauche et ambiguë
𝐵 → 𝐵𝐶𝑦 | 𝑦 Récursive à gauche
𝐶 → 𝑐 | 𝑐𝑥 Ambigüe