Théorie des Langages et Compilation GIN3209
Enseignant:
Email:
Durée totale du cours: 67,5 H
Semestre : 3
Nombre de crédits : 4.5
| Modules
spécialisés |
Modules de
base |
Sciences et techniques de
l’ingénierie |
Préparation à la carrière professionnelle |
| X |
| Nombre d’heures | Activités hors classe |
| 67.5 | 58 |
| Code | GIN3209 | Théorie des Langages et Compilation |
Volume Horaire : 3h cours et 1h 30 de Travaux pratiques (par semaine)
Objectifs d’apprentissage et compétences visées
L’objectif de cette unité étant de comprendre les principes de base inhérents à la réalisation d’un compilateur, à savoir :
- L’analyse lexicale
- L’analyse Syntaxique
- L’analyse sémantique et génération de code
L’étudiant touchera dans les travaux pratiques de cette unité deux outils de prototypage (LEX et YACC/BISON) pour construire des analyseurs lexicaux et syntaxiques.
Contenu du cours
- Introduction à la compilation
- Définition de la compilation
- Compilation vs Interprétation
- Structure d’un compilateur
- Analyse Lexicale
- Lexèmes
- Mise en œuvre d’un analyseur lexical
- Erreurs lexicales
- Analyse Syntaxique
- Grammaire
- Mise en œuvre d’un analyseur syntaxique
- Analyse descendante
- Analyse ascendante
- Erreurs syntaxiques
- Théorie des langages : Les automates
- Classification des grammaires
- Automates à états finis
- Les automates à piles
- Analyse Sémantique
- Définition dirigée par la syntaxe
- Portée des identificateurs
- Contrôle de type
- Génération de code
- Environnement d’exécution
- Code Intermédiaire
- Optimisation de code
Méthodes d’enseignement et d’apprentissage
- Enseignement frontal (magistral) avec des exemples à résoudre en
- Exercices théoriques et études de cas (présentation et discussion).
- Travaux pratiques (laboratoire)
- Travaux à faire à domicile (mini-projet, exposé, compte-rendu, …)
Connaissances et compétences pré-requises
- Algorithmique & Structures de données
- Programmation C
Références bibliographiques
- Un polycopié (Notes du cours) de l’enseignant sera
- Autres références sous forme de tutoriaux, manuels ou documents à télécharger
- Les recommandations bibliographiques suivantes doivent être considérées :
- Alfred Aho, Monica Lam, Ravi Sethi and Jeffrey D. Ullman, « Compilateurs Principes, techniques et outils », Pearson education, 2007, 920 p, EAN13 :
- Silverio Nino, « Réaliser un compilateur : les outils Lex et Yacc », Eyrolles, 1994, ISBN = 2-212- 08834-5.
- Gautier, « Compilation des langages de programmation », Ellipses.
- Grune, « Modern compiler design », Wiley.
Modalité d’évaluation
100% Travaux pratiques (mini-projet avec présentation orale, examen TP, compte-rendu, …)
Résultats d’apprentissage :
A l’issue de ce cours, l’étudiant sera capable de :
- analyser les tâches de compilation et appliquer les techniques de compilation standard.
- développer, mettre en œuvre et appliquer des modifications aux techniques et algorithmes de compilation standard chaque fois que cela est nécessaire.
- comprendre et mettre en œuvre les décisions de conception dans les compilateurs modernes.
Index :
Compiler, identifier, créer, planifier, réviser, analyser, concevoir, sélectionner, utiliser, appliquer, démontrer, préparer, utiliser, calculer, discuter, expliquer, prédire, évaluer, comparer, noter, critiquer, décrire ou évaluer.