Université Lyon 1
Arqus
Accueil  >>  Théorie des langages et compilation
  • Unité d'enseignement :
    Théorie des langages et compilation
Nombre de crédits : 2 ECTS
Code Apogée : PL5044IF
    Responsabilité de l'UE :
PIERRON THEO
 theo.pierronuniv-lyon1.fr
    Type d'enseignement
Nb heures *
Cours Magistraux (CM)
7.5 h
Travaux Dirigés (TD)
9 h
Travaux Pratiques (TP)
9 h
Activité tuteurée personnelle (étudiant)
3 h
Activité tuteurée encadrée (enseignant)
3 h
Heures de Tutorat étudiant
3 h

* Ces horaires sont donnés à titre indicatif.

    Pré-requis et objectifs :
Connaissance de base en algorithmique, structures de données, et programmation impérative en Java.
    Acquis intermédiaires d’apprentissage et compétences visés :
  • Comprendre les principes fondamentaux des langages réguliers, des automates et des grammaires formelles.
  • Acquérir des compétences pratiques dans le développement de compilateurs.
  • Appliquer les techniques d'analyse lexicale et syntaxique.
  • Comprendre les différentes phases du processus de compilation.
  • Gagner une expérience pratique dans la conception et la mise en œuvre d'un compilateur.
Développer une application informatique et un système d'information :
  • En respectant les objectifs, contraintes et exigences en terme de coût, délais et qualité
  • En appliquant efficacement des méthodes collaboratives
  • En argumentant le choix des technologies adaptées
Concevoir l’architecture d’une application, Identifier les couches et Développer des composants modulaires, Mettre en œuvre des optimisations algorithmiques

Conduire des projets informatiques :
  • En planifiant efficacement les phases du projet en fonction des besoins du client et du contexte 
  • En manageant efficacement les équipes et les différents intervenants d’un projet
  • En communiquant efficacement tout au long du projet en interne et en externe
Rédiger les documentations techniques et utilisateurs 
Modéliser des problèmes sous forme mathématique, Développer des algorithmes et des applications avec des langages de programmation (Python, Java)
Mettre en place un système d'information et une infrastructure informatique En mettant en œuvre les technologies adéquates
Evaluer le fonctionnement d’un circuit et d’un processeur, Utilisation d’un langage machine et d’un assembleur, Créer un compilateur
    Programme de l'UE / Thématiques abordées :

Description : L'Unité d'Enseignement de Théorie des Langages et Compilation offre une compréhension approfondie des fondements théoriques des langages de programmation, des automates, des grammaires et du processus de compilation. Ce cours combine la théorie avec une application pratique à travers un projet majeur consistant à développer un compilateur d'un langage de programmation similaire à C vers le langage d'assemblage.

Contenu du cours :

  1. Introduction aux langages formels :

    • Langages réguliers
    • Expressions régulières
    • Automates finis déterministes et non déterministes
  2. Grammaires formelles :

    • Grammaires formelles context-free
    • Analyse syntaxique ascendante et descendante
    • Notions de récursivité et de factorisation
  3. Théorie de la compilation :

    • Phases de la compilation
    • Analyse lexicale
    • Analyse syntaxique
    • Analyse sémantique et typage
    • Génération de code intermédiaire
    • Génération de code final
    • Gestion de la mémoire
  4. Projet pratique : Les étudiants seront amenés à concevoir et à mettre en œuvre un compilateur pour un langage de programmation inspiré de C. Le projet inclura les différentes phases de la compilation, de l'analyse lexicale à la génération de code d'assemblage. Les étudiants auront l'occasion de mettre en pratique les concepts théoriques abordés en cours.

    Méthodes d’évaluation :
Projet + examen
Date de la dernière mise-à-jour : 21/05/2025
SELECT MEN_ID, `MEN_DIP_ABREVIATION`, `MEN_TITLE`, `PAR_TITLE`, `PAR_ID` FROM parcours INNER JOIN ue_parcours ON PAR_ID_FK=PAR_ID INNER JOIN mention ON MEN_ID = PAR_MENTION_FK WHERE PAR_ACTIVATE = 0 AND UE_ID_FK='30557' ORDER BY `MEN_DIP_ABREVIATION`, `MEN_TITLE`, `PAR_TITLE`