IFT313
Froduald Kabanza
Département d’informatique
Université de Sherbrooke
Révision finale
IFT313 © Froduald Kabanza
2
Analyse Lexicale - Expressions régulières
• Savoir ce qu’un langage régulier.
• Être capable d’écrire une expression régulière décrivant un langage
donné.
• Être capable de faire une recherche dans un fichier texte en utilisant
grep.
• Être capable d’écrire un programme cherchant des patterns dans un fi-
chier texte avec regex.
IFT313 © Froduald Kabanza
3
Analyse lexicale - Automates à états finis
• Être capable d’écrire une automate fini acceptant un langage donné.
• Être capable de programmer un automate fini reconnaissant les tokens
d’un langage donné.
IFT313 © Froduald Kabanza
4
Analyse lexicale – de Exp. Reg. à AFN
• Être capable d’écrire un automate fini acceptant le langage décrit par
une expression régulière donnée.
IFT313 © Froduald Kabanza
5
Analyse lexical – de AFN à AFD
• Être capable d’écrire un automate fini déterministe correspondant à un
automate fini non déterministe.
• Être capable de simuler un AFN.
IFT313 © Froduald Kabanza
6
Analyse lexical – générateurs d’analyseurs lexicaux
• Savoir utiliser JFLEX pour générer un analyseur lexical.
IFT313 © Froduald Kabanza
7
Minimisation d’un AFD
• Savoir minimiser la taille (nombre d’états) d’un AFD.
IFT313 © Froduald Kabanza
8
Analyse syntaxique - grammaires
• Savoir reconnaître et expliquer les différentes types de grammaires.
• Pouvoir donner une grammaire acceptant un langage donné.
• Pouvoir décrire le langage accepté par une grammaire donnée.
• Connaître le rapport entre les grammaires et les automates finis.
• Pouvoir expliquer le concept d’arbre d’analyse.
• Pouvoir expliquer ce qu’une grammaire ambiguë.
IFT313 © Froduald Kabanza
9
Analyse syntaxique – automate à pile
• Savoir décrire un automate à pile acceptant un langage donné ?
• Savoir simuler l’exécution d’un automate à pile ?
• Exprimer le pouvoir d’expressivité d’un automate à pile ?
IFT313 © Froduald Kabanza
10
Analyse syntaxique LL – automate à pile LL
• Pouvoir décrire et simuler un automate à pile LL pour une grammaire donnée.
IFT313 © Froduald Kabanza
11
Analyse syntaxique LL – Nullable, First, Follow, table d’analyse
• Savoir définir les concepts de symboles nullables, d’en-semble first et d’ensemble follow pour une grammaire.
• Pouvoir décrire et appliquer un algorithme pour calculer
les symboles nullables, l’ensemble first et l’ensemble fol-
low pour une grammaire.
• Savoir calculer une table d’analyse LL(1) pour une gram-
maire LL(1) donnée.
• Pouvoir déterminer si une grammaire est LL(1)
IFT313 © Froduald Kabanza
12
Analyse syntaxique LL non-récursif
• Comprendre et pouvoir décrire et simuler l’algorithme d’analyse LL (1) non-récursif.
• Pouvoir transformer une grammaire non LL(1) en une
grammaire LL (1)
– Pouvoir transformer une grammaires ambiguë en une grammaire
non-ambiguë.
– Pouvoir éliminer la récursivité à gauche (left recursion).
– Pouvoir utiliser la factorisation à gauche (left factoring)
IFT313 © Froduald Kabanza
13
Analyse syntaxique LL récursif
• Pouvoir programmer un analyseur syntaxique récursif pour une grammaire donnée.
• Connaître les fondements d’un générateur d’analyseur syntaxique LL
tel que JavaCC.
© Froduald Kabanza
14IFT313
Analyse syntaxique - grammaires
• Savoir reconnaître et expliquer les différentes types de grammaires.
• Pouvoir donner une grammaire acceptant un langage donné.
• Pouvoir décrire le langage accepté par une grammaire donnée.
• Connaître le rapport entre les grammaires et les automates finis.
• Pouvoir expliquer le concept d’arbre d’analyse.
• Pouvoir expliquer ce qu’une grammaire ambiguë.
© Froduald Kabanza
15IFT313
Analyse syntaxique – automate à pile
• Savoir décrire un automate à pile acceptant un langage donné ?
• Savoir simuler l’exécution d’un automate à pile ?
• Exprimer le pouvoir d’expressivité d’un automate à pile ?
© Froduald Kabanza
16IFT313
Analyse syntaxique LL – automate à pile LL
• Pouvoir décrire et simuler un automate à pile LL pour une grammaire donnée.
© Froduald Kabanza
17IFT313
Analyse syntaxique LL – Nullable, First, Follow, table d’analyse
• Savoir définir les concepts de symboles nullables, d’en-semble first et d’ensemble follow pour une grammaire.
• Pouvoir décrire et appliquer un algorithme pour calculer
les symboles nullables, l’ensemble first et l’ensemble fol-
low pour une grammaire.
• Savoir calculer une table d’analyse LL(1) pour une gram-
maire LL(1) donnée.
• Pouvoir déterminer si une grammaire est LL(1)
© Froduald Kabanza
18IFT313
Analyse syntaxique LL non-récursif
• Comprendre et pouvoir décrire et simuler l’algorithme d’analyse LL (1) non-récursif.
• Pouvoir transformer une grammaire non LL(1) en une
grammaire LL (1)
– Pouvoir transformer une grammaires ambiguë en une grammaire
non-ambiguë.
– Pouvoir éliminer la récursivité à gauche (left recursion).
– Pouvoir utiliser la factorisation à gauche (left factoring)
© Froduald Kabanza
19IFT313
Analyse syntaxique LL récursif
• Pouvoir programmer un analyseur syntaxique récursif pour une grammaire donnée.
• Connaître les fondements d’un générateur d’analyseur syntaxique LL
tel que JavaCC.
© Froduald Kabanza
20IFT313
Automate à pile LR Notion de poignée (handle)
• Pouvoir définir et simuler un automate à pile LR.
• Pouvoir définir la notion de poignée (handle).
© Froduald Kabanza
21IFT313
Préfixes viablesÉléments LR(0)
AFD LR())
• Pouvoir calculer l’AFD des préfixes viables.
• Pouvoir générer une table d’analyse LR(0).
• Pouvoir décrire le driver LR(0) et le simuler.
© Froduald Kabanza
22IFT313
Analyse LR(0)Analyse SLR(1)
• Pouvoir définir et simuler l’algorithme d’analyse LR (Driver LR)
• Pouvoir générer une table d’analyse SLR(1) pour une grammaire don-
née.
• Pouvoir reconnaître les grammaires SLR(1).
© Froduald Kabanza
23IFT313
Analyse LR(1)Analyse LALR(1)
• Pouvoir définir ce qu’un élément LR(1).
• Pouvoir calculer l’AFD LR(1).
• Pouvoir construire la table d’analyse LR(1).
• Pouvoir reconnaître des grammaires LR(1).
• Pouvoir calculer l’AFD LALR(1)
• Pouvoir construire la table d’analyse LALR(1).
• Pouvoir reconnaître des grammaires LALR(1).
• Comprendre les forces relatives des analyses LR(0), SLR(1), LR(1) et
LALR(1).
• Connaître l’hiérarchie entre les différentes classes de grammaires hors-
contexte : LL(0), LL(1), LR(0), LR(1), SLR(1), LALR(1).
© Froduald Kabanza
24IFT313
Java CUP
– Pouvoir spécifier une grammaire avec Java CUP
– Pouvoir spécifier des actions sémantiques avec Java CUP
Top Related