Analyse lexicale
Transcription
Analyse lexicale
Concepts des langages de programmation Analyse lexicale Structure d’un compilateur/phases de compilation Programme écrit en langage A (code source) Fromer les mots du langage (lexèmes) Analyse lexicale Analyse syntaxique Analyse sémantique Table des symboles Génération de code intermédiaire Optimisation Génération de code final Programme cible écrit en langage B (code machine) 2 Gestion d’erreurs Plan Analyse lexicale Types d’unités lexicales Notations des lexèmes Analyse lexicale et analyse syntaxique Outils 3 Plan Analyse lexicale Types d’unités lexicales Notations des lexèmes Analyse lexicale et analyse syntaxique Outils 4 Analyse lexicale Traiter le texte du programme source à l’entrée découpe le texte en unités lexicales (lexème ou token) conformément à la définition lexicale du langage élimine (éventuellement) certaines unités inutiles Exemple : les commentaires Schéma fonctionnel Source Lexèmes Analyse lexicale Lexème : unité lexicale (mot du langage) 5 Analyse lexicale (suite) Chaque entité lexicale est décrite par une expression régulière Exemple : 6 Variables décrites par l'expression régulière [a-zA-Z]+ signifie qu'une variable ne peut être composée que de lettres (minuscules ou/et majuscules) Plan Analyse lexicale Types d’unités lexicales Notations des lexèmes Analyse lexicale et analyse syntaxique Outils 7 Analyse lexicale : types d’unités lexicales Caractères spéciaux simples : +, =, *, /, ... Caractères spéciaux composés : +=, ==, *=, <=, ... Les mots clés : if, while, for, ... Les constantes littérales : 20, 5656, -342, ... Les identifiants (variables, constantes) : 8 var, i, temps, PI ... Plan Analyse lexicale Types d’unités lexicales Analyse lexicale et analyse syntaxique Outils 9 Analyse lexicale et analyse syntaxique L'analyseur syntaxique appelle l'analyseur lexical lorsqu'il a besoin de lire un autre mot (token) du code source d'un programme Principales approches de construction d'un analyseur lexical Écrire une description formelle des tokens (expressions régulières) et utiliser un outil logiciel (ex. lex) pour transformer ces descriptions en un analyseur lexical Concevoir un diagramme d'état pour décrire les tokens et implémenter ce diagramme sous forme de programme ou d'une table 10 Plan Analyse lexicale Types d’unités lexicales Notations des lexèmes Analyse lexicale et analyse syntaxique Outils 11 Outils Expressions régulières Automates d’états finis 12