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

Transcript
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