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