Théorie des langages : Td6 analyse lexicale
Télécharger PDFNF11 – TD6 : Analyse Lexicale
Exercice 1
Les entités lexicales d’un mini-langage de programmation sont définies comme suit :
Mots-clés
Les mots-clés sont : begin, end, if, then, else.
Identificateurs
Chaînes composées d’une lettre suivie de zéro ou plusieurs lettres ou chiffres. Exemple : a, abc, a1b2.
Constantes entières
Chaînes composées d’un chiffre suivi de zéro ou plusieurs chiffres. Exemple : 5, 123, 0.
Constantes réelles signées
Exemples : 62.85, -0.45, +123.56E-25 (à détailler dans l’exercice 2).
Opérateurs
Les opérateurs sont : <, >, =, <>, <=, >=, +, -.
Exercice 2 : Constantes Réelles Signées
Les constantes réelles signées respectent les règles suivantes :
- Elles peuvent commencer par un
+ou un-(optionnel). - Elles contiennent une partie entière (un ou plusieurs chiffres), suivie d’un point, puis d’une partie décimale (un ou plusieurs chiffres).
- La partie entière ou décimale peut être absente (ex.
.5ou3.). - Elles peuvent inclure une notation scientifique :
Eouesuivi d’un signe optionnel (+ou-) et de chiffres.
Exercice 3 : Langage L sur {A, B, C, ..., Z}
Les mots du langage L doivent respecter les règles suivantes :
- Les consonnes sont séparées par des voyelles (pas de consonnes consécutives).
- Plusieurs voyelles (au maximum 3) peuvent se suivre.
- Un mot ne peut pas commencer et se terminer par la même consonne.
- La longueur d’un mot est comprise entre 2 et 8 caractères inclus.
FAQ
1. Qu’est-ce qu’un automate fini déterministe (AFD) ?
Un AFD est un modèle mathématique utilisé pour reconnaître des chaînes de caractères selon des règles précises. Il se compose d’états, de transitions et d’un état final.
2. Comment écrire une expression régulière pour un langage ?
Une expression régulière combine des caractères littéraux, des quantificateurs (comme *, +, ?), des groupes (( )) et des alternances (|) pour décrire les motifs valides d’un langage.
3. Pourquoi les mots-clés doivent-ils être distincts des identificateurs ?
Pour éviter les conflits sémantiques et permettre au compilateur/interpréteur de distinguer les instructions du langage (mots-clés) des variables ou fonctions définies par l’utilisateur (identificateurs).