Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
formations:licence:2024-2025:ue:l3:gas6 [2025/01/29 10:45] – supprimée - modification externe (Date inconnue) 127.0.0.1 | formations:licence:2024-2025:ue:l3:gas6 [2025/01/29 10:45] (Version actuelle) – ↷ Page déplacée de formations:licence:ue:l3:gas6 à formations:licence:2024-2025:ue:l3:gas6 admin | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ~~NOTOC~~ | ||
+ | ====== Grammaires et Analyse Syntaxique (GAS6) ====== | ||
+ | |||
+ | ===== Description ===== | ||
+ | |||
+ | Les grammaires algébriques sont utilisées en informatique pour définir | ||
+ | une syntaxe structurée, | ||
+ | programmation avec des constructions imbriquées comme des | ||
+ | conditionnelles, | ||
+ | module enseigne les grammaires algébriques d' | ||
+ | pratique : comprendre et pouvoir écrire des grammaires, constructions | ||
+ | d' | ||
+ | (technique LR1), utilisation d'un générateur d' | ||
+ | moderne (menhir), interaction avec l' | ||
+ | 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' | ||
+ | grammaires. | ||
+ | |||
+ | ===== Syllabus ===== | ||
+ | |||
+ | ==== Sujets centraux ==== | ||
+ | |||
+ | - Rappel des expressions rationnelles et de l' | ||
+ | - Grammaires algébriques, | ||
+ | - Relation entre langages rationnels et langages algébriques | ||
+ | - Grammaires LL(1) : calcul des ensembles FIRST et FOLLOW, transformation de grammaires en forme LL(1), programmation d' | ||
+ | - Principe de l' | ||
+ | - Construction d'un automate caractéristique LR(0) et LR(1), construction d'une table d' | ||
+ | - Utilisation d'un générateur d' | ||
+ | - Programmation de la chaîne d' | ||
+ | - Limitations des grammaires algébriques : le lemme d' | ||
+ | |||
+ | ==== 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 ===== | ||
+ | |||
+ | * Cours [[..: | ||
+ | * Expressions rationnelles | ||
+ | * Automates déterministes, | ||
+ | * Déterminisation, | ||
+ | * Lemme d' | ||
+ | * Utilisation d'un générateur d' | ||
+ | |||
+ | * Cours [[pf5|Programmation Fonctionnelle du L3]] : | ||
+ | * 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, ... |