IFT313 IFT313
Introduction aux langages formels Introduction aux langages formels
Froduald Kabanza
Département d’informatique Université de Sherbrooke
Révision de mi-session
IFT313 © Froduald Kabanza
2
Analyse Lexicale - Expressions régulières 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
3
Analyse lexicale - Automates à états finis 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 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 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 – Analyse lexical –
générateurs d’analyseurs lexicaux 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 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 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 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 – Analyse syntaxique LL –
Nullable, First, Follow, table d’analyse 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
12
Analyse syntaxique LL non-récursif 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 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
14
Remarques Remarques
• Les questions ressemblent à celles du Lab ou des TPs
• Des exemples d’anciens examens sont sur le site web
• Aucune documentation n’est permise