Froduald Kabanza - PLANIART

Download Report

Transcript Froduald Kabanza - PLANIART

IFT313
Froduald Kabanza
Département d’informatique
Université de Sherbrooke
Révision finale
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
fichier texte avec regex.
IFT313
© Froduald Kabanza
2
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
3
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
4
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
5
Analyse lexical –
générateurs d’analyseurs lexicaux
• Savoir utiliser JFLEX pour générer un analyseur lexical.
IFT313
© Froduald Kabanza
6
Minimisation d’un AFD
• Savoir minimiser la taille (nombre d’états)
d’un AFD.
IFT313
© Froduald Kabanza
7
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
8
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
9
Analyse syntaxique LL – automate à pile LL
• Pouvoir décrire et simuler un automate à
pile LL pour une grammaire donnée.
IFT313
© Froduald Kabanza
10
Analyse syntaxique LL –
Nullable, First, Follow, table d’analyse
• Savoir définir les concepts de symboles nullables,
d’ensemble 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
follow pour une grammaire.
• Savoir calculer une table d’analyse LL(1) pour une
grammaire LL(1) donnée.
• Pouvoir déterminer si une grammaire est LL(1)
IFT313
© Froduald Kabanza
11
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
12
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.
IFT313
© Froduald Kabanza
13
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
14
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
15
Analyse syntaxique LL – automate à pile LL
• Pouvoir décrire et simuler un automate à pile LL pour une grammaire
donnée.
IFT313
© Froduald Kabanza
16
Analyse syntaxique LL –
Nullable, First, Follow, table d’analyse
• Savoir définir les concepts de symboles nullables,
d’ensemble 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
follow pour une grammaire.
• Savoir calculer une table d’analyse LL(1) pour une
grammaire LL(1) donnée.
• Pouvoir déterminer si une grammaire est LL(1)
IFT313
© Froduald Kabanza
17
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
18
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.
IFT313
© Froduald Kabanza
19
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).
IFT313
© Froduald Kabanza
20
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.
IFT313
© Froduald Kabanza
21
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
donnée.
• Pouvoir reconnaître les grammaires SLR(1).
IFT313
© Froduald Kabanza
22
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 horscontexte : LL(0), LL(1), LR(0), LR(1), SLR(1), LALR(1).
IFT313
© Froduald Kabanza
23
Java CUP
– Pouvoir spécifier une grammaire avec Java CUP
– Pouvoir spécifier des actions sémantiques avec Java CUP
IFT313
© Froduald Kabanza
24