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

Documents pareils