Cours ENSIIE Langages et Systèmes Formels (LSF) 2019-2020


Horaire: lundi 9:00-12:45, du 9 septembre au 21 octobre 2019, examen le 18 novembre 2019

Lieu: ENSIIE, cours en amphi 101, TDs en salle 121 (groupe 1) et 122 (groupe 2)

Intervenants: Frédéric Blanqui (cours + TD groupe 1) et Stefania Dumbrava (TD groupe 2)

Planning:

Notes de cours complètes: ici (version mise à jour le 14/10/19)

Résumé:

Dans ce cours, nous nous intéressons à différentes manières de définir des langages pour représenter des données (e.g. XML) ou des programmes (e.g. C, Java, OCaml), et comment vérifier qu'un fichier est bien un fichier XML ou un programme C, Java, etc. sans erreurs syntaxiques.

Nous verrons plusieurs manières de définir des langages: avec une grammaire (nous ne considérons que des grammaires dites algébriques ou hors-contextes), des ``machines'' (automate ou automate à pile), ou une ``expression régulière''.

Dans le 1er cours, nous introduirons la notion de grammaire algébrique et établirons un certain nombre de propriétés fondamentales des grammaires algébriques et de la classe des langages définissables par une grammaire algébrique. Nous verrons également un certain nombre de transformations permettant de simplifier la présentation d'une grammaire ou de la mettre sous une forme particulière.

Dans le 2e cours, nous introduirons la notion d'automate. Nous verrons que l'analyse syntaxique d'un langage défini par une forme très simple de grammaire dite linéaire peut être implémentée de manière très efficace en utilisant un automate (cela fera l'objet d'un TP).

Dans le 3e cours, nous verrons comment minimiser le nombre d'états d'un automate. Nous verrons également que les automates avec $\vep$-transitions ne sont pas plus puissants que les automates standards, et quels sont les propriétés de la classe des langages reconnaissables par automate.

Dans le 4e cours, nous introduirons la notion d'expression régulière. Nous verrons alors que grammaires linéaires, automates et expressions régulières sont en fait équivalents et définissent la même classe de languages, mais que ces trois techniques sont limitées: elles ne permettent pas de traiter les langages bien parenthésés.

C'est ainsi que, dans le 5e et dernier cours, nous considérons la classe des langages dits LL(k) qui peuvent être analysés efficacement en utilisant un automate à pile.

Pour plus de détails, voir par exemple:

Exemples de grammaires:


Statcounter W3C Validator Last updated on 24 October 2019. Come back to main page.