P 3 : Analyse lexicale

publicité
L’analyse lexicale
Pr ZEGOUR DJAMEL EDDINE
Ecole Supérieure d’Informatique (ESI)
http://zegour.esi.dz/
email: [email protected]
L’analyse lexicale : Rappel

Produit les unités lexicales : couple (Syn, Sem)
- Syn (code) utilisée dans la phase syntaxe
- Sem(chaîne de caractères)utilisée dans la phase sémantique

Élimine les blancs, les commentaires

Signale certains types d’erreurs
L’analyse lexicale : les conventions du
langage

Longueur maximale des identificateurs = 11

Pas de distinction entre minuscule et majuscule

Les constantes numériques sont entières et de longueur <=11
Syntaxe : [~+|-~] { digit }+ avec digit dans {0,1,2,…..9}

Les commentaires sont entre les symboles /* et */ ou { et }

Longueur maximale des chaînes de caractères = 256
L’analyse lexicale : les mots clés
Considérer le langage minimal

Recenser les mots clés du langage et leur attribuer un code. Les mettre
dans une structure de donnée à accès rapide(table triée, arbre, Hcode, …)

Organiser les codes en classes

Développer le module de recherche sur cette structure

Recherche dichotomique s’il s’agit d’une table triée.

Exemples de mots clés : SOIT, TANTQUE, …
L’analyse lexicale : les délimiteurs

Recenser les délimiteurs du langage et leur attribuer un code. Les
mettre dans une structure de donnée à accès rapide(table triée, arbre,
H-code, …)

Organiser les délimiteurs en classes

Développer le module de recherche sur cette structure

Recherche dichotomique s’il s’agit d’une table triée.

Exemples de délimiteurs : ‘+’, ‘:’, ‘=‘, …
L’analyse lexicale : le module Nextch

Délivre le prochain caractère non blanc du texte :

Il peut appartenir
– À la ligne en cours
– À la prochaine ligne

Nextch rend un caractère spécial si la fin du texte d’entrée est
rencontré

Développer ce module
L’analyse lexicale : le module Scan

Récupère le texte d’entrée caractère par caractère (utilisation de
Nextch)

Applique l’automate de reconnaissance des unités lexicales qui produit
le couple (Syn, Sem)

Forme générale du module Scan (PASCAL)
CASE Classe of
1 : begin … End // identificateurs
2 : begin … End // signe +
…
n : begin … End
END
L’analyse lexicale : Test du scanner

Répéter
Scan  (Syn, Sem)
Afficher Syn et Sem
Jusqu’ à fin du fichier d’entrée (Programme)
L’analyse lexicale : Type des erreurs

Identificateur trop long

Constante caractère trop longue

Caractère invalide

Fin de fichier dans un commentaire : erreur fatale

Fin de fichier dans une chaîne de caractères: erreur fatale

Erreur dans une constante numérique

Ligne trop longue
 …
Téléchargement