Vous êtes sur la page 1sur 3

Année Universitaire : 2012-2013

Département Génie Logiciel Matière : Techniques de compilation


et Systèmes d’Information Niveau : 1ère année ING
GLSI Responsables de TD : Narjes Ben Hariz

TD 1 : Analyse lexicale

EXERCICE 1 :

Lister les lexèmes et les unités lexicales correspondantes dans le programme suivant :

fonction max(i, j : integer)

begin

if i>j then max: = i

else max : = j

end;

EXERCICE 2:

Simulez le travail de l’analyseur lexical pour la chaine suivante :

MONTANT = PRIX (QUANTITE) + 12.7

EXERCICE 3 :

Soient les lignes de code suivantes extraites d’un programme Java :

Classe Cercle // définition d’une classe


{
Private double rayon ;
Public void setRayon (double r)
{
rayon = r ;
}
Public double aire ( )
{
return rayon * rayon * PI ;
}
}

Reproduire puis remplir le tableau suivant :


Lexème UL ER correspondante

1
EXERCICE 4 :

Supposant que le compilateur d’un langage de programmation assigne l’unité lexicale suivante
OPREL pour les opérateurs relationnels : <, >, <=, >=,= et < >.

Proposer un diagramme de transition qui reconnait ce type d’unité lexicale et qui est, une fois arrivé à
des états finaux de l’automate, émet comme message : retourne (< OPREL, le lexème de l’opérateur
en question >).

EXERCICE 5 :

Supposant que dans un langage de programmation X, les noms de variables doivent être écrits en
commençant par V suivi (non obligatoirement) d’une suite quelconque de lettres écrites en majuscule
et / ou de chiffres de 1 à 5.

1. Donner 3 exemples de variables écrites dans le langage X et tel que :


a) La première variable est de taille égale à 6.
b) La deuxième variable est de taille égale à 15.
c) La troisième variable comporte le nombre 2132 et les lettres C, D au mois une fois et la
lettre Z exactement une fois.
2. Donner les expressions régulières du modèle associé aux variables de X.
3. Proposer un automate qui permet de reconnaitre le modèle des variables de X.

EXERCICE 6 :

Donner une définition régulière des identificateurs formés d’une suit de lettres et/ou chiffres,
commençant par une lettre et comportant exactement deux fois le symbole _

EXERCICE 7 :

Une commande est composée de 4 parties dont seul le premier est obligatoire.

• La première partie est constituée du nom de la commande (un identificateur).


• La deuxième partie est composée du nom d’une variable (un identificateur) sur laquelle la
commande est appliquée.
• La troisième partie correspond à l’ensemble des paramètres : c’est une suite non nulle de
paramètres (qui sont ici des caractères) séparés par des virgules, encadrés par des accolades.
• La dernière partie correspond à la partie option. Elle est constituée par une suite non nulle
d’options séparées par des points virgules, encadrées par des crochets. Une option est
représentée par un caractère.

Donner des exemples de commandes lexicalement correctes.

Ecrire une définition régulière décrivant la syntaxe d’une commande.

EXERCICE 8 :

On vous demande de donner une définition régulière décrivant la syntaxe d’expressions


vectorielles sachant que :

2
• Une expression vectorielle (v) est :

1. Soit une suite de nombres encadrés par des crochets. (Ex : [4, 2, 9] ).
2. Ou bien la somme de deux expressions vectorielles de même taille.
(Ex : [3, 5, 7] + [1,4,9])
3. Ou bien le produit d’une expression vectorielle par un nombre.
(Ex : 3*[3, 5, 7] ou [1, 4, 9]*2)

• Un nombre (nb) étant défini comme un entier.

EXERCICE 9 :

1. Donner un automate fini déterministe qui reconnait dans une chaine de caractères les unités
lexicales suivantes :
• Les opérateurs + et - ;
• Les identificateurs en pascal composés uniquement de chiffres et de caractères ;
• Les entiers non signés ;
• Un sous ensemble des réels comportant syntaxiquement une suite de chiffres suivis de la
lettre e suivis d’une suite de chiffres éventuellement signés (exemple : 24e-3, 4e56)
2. Donner pour chaque unité lexicale une description régulière qui la définit.
3. Comment l’analyseur lexical décompose-t-il les chaines suivantes :
• +- ;
• Aa+9 ;
• Ae9+9 ;
• 13e12 ;
• 6 b+a ;

EXERCICE 10 :

On souhaite écrire un analyseur lexical pour le langage de commandes suivant :

1. Une commande est composée d’un nom de la commande, suivi d’une liste optionnelle
d’arguments, suivie d’une liste facultative d’options.
2. Une liste d’arguments est une suite d’arguments.
3. Une liste d’options est une suite non vide d’options encadrée par crochets. A l’intérieur de la
quelle les options sont s éparées par « , ».
4. Une option est un caractère précédé par un tiret.
5. Un argument est un identificateur, de même le nom de la commande.

Par exemple macom arg1 arg2 [-t,-o] est une commande.

Q1- Quelles sont les unités lexicales nécessaires à la description d’une commande ?

Q2- Donner pour chacune une description régulière qui la définit.

Vous aimerez peut-être aussi