• Aucun résultat trouvé

IFT313 IFT313 Introduction aux langages formels Introduction aux langages formels

N/A
N/A
Protected

Academic year: 2022

Partager "IFT313 IFT313 Introduction aux langages formels Introduction aux langages formels"

Copied!
14
0
0

Texte intégral

(1)

IFT313 IFT313

Introduction aux langages formels Introduction aux langages formels

Froduald Kabanza

Département d’informatique Université de Sherbrooke

Révision de mi-session

(2)

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.

(3)

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

(4)

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.

(5)

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.

(6)

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.

(7)

IFT313 © Froduald Kabanza

7

Minimisation d’un AFD

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

d’un AFD.

(8)

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

(9)

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 ?

(10)

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.

(11)

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)

(12)

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)

(13)

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.

(14)

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

Références

Documents relatifs

- On vient de voir qu’en calculant First(S) ou First(XYS) on doit tenir compte des non-terminaux qui pourraient dériver la chaîne vide et de ceux qui pourraient les suivre dans

 Parce que les deux règles ont la même fonction d’analyse (c-à-d., la fonction correspondant au non terminal dans la partie gauche de chaque production).. Si elle partagent le

– Si le symbole est un non terminal, l’attribut pourrait être une donnée calculée en utilisant les actions sémantiques. – Une grammaire avec des attributs est appelée

• Pour aller au-delà, il faut utiliser d’autres outils ou des méthodes adhoc pour évaluer les attributs (avec l’aide

AFD pour préfixes viables, avec état initial I0 et fonction de transition goto Initialement la pile contient I0.. L’état I2 contient élément Shift (T ® T.*F) et un élément

- Pour montrer que la grammaire n’est pas LR(0), on montre que l’AFD correspon- dant pour les préfixes viables a au moins un état contenant à la fois un élément shift et

– Un AFD LALR(1) est obtenu de l’AFD LR(1) en fusionnant les états identiques pour les éléments LR(0) (seuls les composantes lookahead diffèrent). – Une table d’analyse

– Java CUP assigne aussi une priorité à chaque production : c’est la priorité du dernier terminal dans la partie droite de la production. – Par exemple, expr ::= expr TIMES expr