:: Enseignements :: ESIPE :: E4INFO :: 2010-2011 :: Analyse syntaxique ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Analyse lexicale |
Le but de ce TD est de manipuler des expressions rationnelles,
puis de concevoir un ensemble de règles lexicales permettant de reconnaître les lexèmes d'un petit langage.
Exercice 1 - La commande grep
Taper une commande
shell utilisant
grep qui
recherche dans la sous-arborescence de
/etc:
- les lignes contenant la chaîne de caractères IPV6 sans
tenir compte de la casse ;
- les lignes qui commencent par une variable en majuscule suivie
de = ;
- les lignes qui ne contiennent qu'une chaîne de caractères
alphabétiques, éventuellement entourée d'espaces ou de tabulation.
La documentation des expressions rationnelles de
grep est
accessible à partir de l'URL suivant :
http://www.gnu.org/software/grep/manual/grep.html#Regular-Expressions
Exercice 2 - Expressions rationnelles
Dans cet exercice, pour tester vos expressions rationnelles, vous
utiliserez le programme
visual regexp
dont les expressions rationnelles ont une syntaxe rappelée par une
aide succincte accessible
via le menu
View -> Show
regexp help
Écrire des expressions rationnelles pour reconnaître:
- les chaînes de caractères du C ;
- les entiers (décimal, hexadécimal 0x... et octal
0...) (voir exemple) ;
Exercice 3 - Analyse lexicale
Dans cet exercice, nous souhaitons reconnaître les différents lexèmes des programmes écrits dans le petit langage illustré par l'exemple ci-dessous :
Les différents types de lexèmes (ou tokens) sont :
- des variables: des séquences commençant par une lettre suivie optionnellement de lettres, chiffres et '_';
- des mots-clés: print, if, else
- des parenthèses: ( et )
- des opérateurs arithmétiques : +, -, /, *
- un symbole d'affectation : =
- des comparateurs: >=, <=, ==, !=, >, <
- une fin d'instruction: retour à la ligne
- des doubles
Pour chaque lexème reconnu, l'analyseur devra indiquer son type.
Par exemple, le token
VAR1 sera reconnu comme variable.
Pour effectuer cette tâche, vous devrez utiliser un analyseur lexical se basant sur
Tatoo.
- Télécharger et décompresser l'archive simple-lexer.zip.
- Lire le README et tester sans modifier les règles lexicales sur le fichier test.txt.
Que fait cet analyseur?
- Modifier les règles lexicales dans le fichier simple-lexer.ebnf pour reconnaître les lexèmes définis ci-dessus.
Vous trouverez de l'aide pour l'écriture des règles dans la documentation décrivant le fichier de spécification EBNF.
- Compiler l'analyseur.
- Lancer l'analyseur sur le fichier exemple_langage.txt.
© Université de Marne-la-Vallée