Outils pour utilisateurs

Outils du site


Panneau latéral



Contacts

Scolarité L1/L2

Audrey Dalla Francesca (coordinatrice Licence et Master, en appui à la gestion pédagogique L1-L2)
téléphone 01 57 27 94 36
bureau Sophie Germain - Bur. 3055
En télétravail les jeudis et vendredis
(permanences Zoom : 14h00-17h00)

connexion à la permanence d'Audrey Dalla Francesca (code: 482147)

Marie Chandellier (gestionnaire L1 et L2)
téléphone 01 57 27 68 99
bureau Sophie Germain - Bur. 3055
Ne travaille pas les vendredis
(permanences Zoom du lundi au jeudi: 10h00-12h00)

connexion à la permanence de Marie Chandellier (code: 222732)


Scolarité L3

Raja Taimes
téléphone 01 57 27 68 93
bureau Sophie Germain - Bur. 3005
En télétravail les mercredis et vendredis
(permanences Zoom : 10h00-12h00 ; 14h00-15h00)

connexion à la permanence de Raja Taimes (code: 481714)

formations:licences:ue:l3:gas6

Grammaires et Analyse Syntaxique (GAS6)

Description

Les grammaires algébriques sont utilisées en informatique pour définir une syntaxe structurée, par exemple la syntaxe d'un langage de programmation avec des constructions imbriquées comme des conditionnelles, boucles, définitions de fonctions et procédures. Ce module enseigne les grammaires algébriques d'abord d'un point de vue pratique : comprendre et pouvoir écrire des grammaires, constructions d'analyseurs grammaticales descendants (technique LL1) et ascendants (technique LR1), utilisation d'un générateur d'analyse grammaticale moderne (menhir), interaction avec l'analyse lexicale et construction d'un arbre de syntaxe abstraite. Pendant les dernières semaines, les aspects fondamentaux des grammaires seront étudiés, comme leur relation avec les automates à pile, et les limites d'expressivité des grammaires.

Syllabus

Sujets centraux

  1. Rappel des expressions rationnelles et de l'analyse lexicale
  2. Grammaires algébriques, dérivations et arbres de dérivation, grammaires ambiguës
  3. Relation entre langages rationnels et langages algébriques
  4. Grammaires LL(1) : calcul des ensembles FIRST et FOLLOW, transformation de grammaires en forme LL(1), programmation d'analyseurs descendants
  5. Principe de l'analyse ascendante (shift/reduce)
  6. Construction d'un automate caractéristique LR(0) et LR(1), construction d'une table d'analyse LR(0) et LR(1)
  7. Utilisation d'un générateur d'analyse ascendante comme menhir.
  8. Programmation de la chaîne d'analyse syntaxique jusqu'à la génération d'une syntaxe abstraite
  9. Limitations des grammaires algébriques : le lemme d'itération des grammaires

Sujets potentiellement traités

  • Formalismes équivalents aux grammaires (diagrammes de syntaxe, forme de Backus-Naur étendue)
  • Études de cas : analyse syntaxique de langages connus aux étudiants comme XML, JSON, YAML, bash, python, OCaml, Java, …
  • Propriétés de clôture de la classe des langages algébriques
  • Automates à pile (acceptation par pile vide, ou par état acceptant), traductions entre grammaires et automates à pile

Pré-requis

    • Expressions rationnelles
    • Automates déterministes, non-déterministes et avec epsilon-transitions
    • Déterminisation, et élimination des epsilon-transitions
    • Lemme d'itération des langages rationnels (lemme de l'étoile)
    • Utilisation d'un générateur d'analyseur lexicale, du type lex.
    • Programmation fonctionnelle en OCaml
    • Programmer avec des structures de données algébriques (arbres) en OCaml
    • Utilisation basique des modules en OCaml (fichiers séparés pour interface et corps d'un module)
    • Compilation d'un projet OCaml consistant en plusieurs modules pour créer un exécutable autonome, en utilisant une des techniques comme dune, ocamlbuild, make, …
formations/licences/ue/l3/gas6.txt · Dernière modification : 2023/09/05 13:11 de treinen