L’étudiant, par cette matière, doit connaître et maîtriser les concepts issus de la théorie des
langages et plus particulièrement des langages algébriques, des grammaires, des dérivateurs et
des automates à pile. Ces derniers sont en fait à la base de tous les algorithmes d’analyse
syntaxique (utilisés par les compilateurs des langages de programmation).
Ce module est composé de huit chapitres qui traitent les systèmes générateurs des langages
(grammaires) et les systèmes reconnaisseurs des langages (automates). Pour la plupart des
langages issus de la classification de Chomsky, l’automate correspondant sera décrit en détail.
Pour chaque type d’automate (d’état finis, à pile de mémoire ou machine de Turing), un
ensemble d’exercices, est offert aux étudiants, permettant de bien maîtriser son fonctionnement. Un intérêt particulier sera porté sur les automates d’états finis qui sont
utilisés par les analyseurs lexicaux et les automates à pile qui sont utilisés par les analyseurs
syntaxiques (phases d’un compilateur).
Toutes les connaissances acquises seront utilisées pour bien comprendre les différentes phases
d’implémentation des compilateurs des langages de programmation. En effet, les travaux
pratiques porteront essentiellement sur les automates d’états finis et les grammaires. Ils seront
la base pour l’implémentation des deux phases d’un compilateur, à savoir l’analyseur lexical
et l’analyseur syntaxique.
- Enseignant: YACINE LAFIFI