IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

24
IFT313 Froduald Kabanza Département d’informatique Université de Sherbrooke Révision finale

Transcript of IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

Page 1: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

IFT313

Froduald Kabanza

Département d’informatique

Université de Sherbrooke

Révision finale

Page 2: IFT313 Froduald Kabanza Département dinformatique 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.

Page 3: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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é.

Page 4: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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.

Page 5: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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.

Page 6: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

IFT313 © Froduald Kabanza

6

Analyse lexical – générateurs d’analyseurs lexicaux

• Savoir utiliser JFLEX pour générer un analyseur lexical.

Page 7: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

IFT313 © Froduald Kabanza

7

Minimisation d’un AFD

• Savoir minimiser la taille (nombre d’états) d’un AFD.

Page 8: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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ë.

Page 9: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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 ?

Page 10: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

IFT313 © Froduald Kabanza

10

Analyse syntaxique LL – automate à pile LL

• Pouvoir décrire et simuler un automate à pile LL pour une grammaire donnée.

Page 11: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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)

Page 12: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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)

Page 13: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

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.

Page 14: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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ë.

Page 15: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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 ?

Page 16: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© Froduald Kabanza

16IFT313

Analyse syntaxique LL – automate à pile LL

• Pouvoir décrire et simuler un automate à pile LL pour une grammaire donnée.

Page 17: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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)

Page 18: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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)

Page 19: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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.

Page 20: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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).

Page 21: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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.

Page 22: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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).

Page 23: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© 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).

Page 24: IFT313 Froduald Kabanza Département dinformatique Université de Sherbrooke Révision finale.

© Froduald Kabanza

24IFT313

Java CUP

– Pouvoir spécifier une grammaire avec Java CUP

– Pouvoir spécifier des actions sémantiques avec Java CUP