• Aucun résultat trouvé

Analyse lexicale

N/A
N/A
Protected

Academic year: 2022

Partager "Analyse lexicale"

Copied!
2
0
0

Texte intégral

(1)

Compilation - TD 1

Analyse lexicale

?Expressions r´eguli`eres et automates `a la main? Question 1.1 – quelques langages

Sur l’alphabet{a,b}, donner un automate fini d´eterministe reconnaissant les langages suivants : – tous les mots contenant un nombre pair de “a” et un nombre pair de “b” ;

– tous les mots contenant un nombre pair de “a” ou un nombre pair de “b” ; – tous les mots qui n’ont pas plus de quatre “a” cons´ecutifs ;

– le langageL={anbp, n=p mod 3, n, p≥0}.

Question 1.2 – expressions r´eguli`eres

Donnez si vous pouvez des expressions r´eguli`eres pour les langages pr´ec´edents.

Question 1.3 – d´efinitions r´eguli`eres

On peut rapprocher la pr´esentation des expressions r´eguli`eres de la d´efinition d’une grammaire en introduisant lesd´efinitions r´eguli`eres, de la forme

d1 → e1 d2 → e2

. . . dk → ej,

o `u chaquediest un nom distinct et chaqueeiest une expression r´eguli`ere sur les symboles deΣ∪{d1, d2, . . . , di−1} (Σ´etant l’alphabet). L’introduction des d´efinitions r´eguli`eres n’accroˆıt pas le pouvoir expressif.

Donner une d´efinition r´eguli`ere qui d´ecrit toutes les chaˆınes compos´ees de chiffres sans chiffre r´ep´et´e.

Essayez aussi sans utiliser les d´efinitions r´eguli`eres, pour rire.

Question 1.4 – sur l’expressivit´e

Montrer que le langage{anbn|n≥1}ne peut pas ˆetre d´efini par une expression r´eguli`ere.

?Analyseurs lexicaux? Question 2.1

1

6 7

3

2

4

5

8 0−9

0−9 e

0−9 0−9

0−9 a−z

0−9

+

a−z

+

FIG. 1 – Un automate fini d´eterministe

Si l’on utilise l’automate de la Figure 1 pour trouver des lex`emes dans un fichier d’entr´ee, combien de caract`eres doit-on examiner au pire apr`es la fin d’un lex`eme pour pouvoir l’identifier ?

(2)

Question 2.2 – les commentaires

En g´en´eral un analyseur lexical reconnaˆıt le plus long pr´efixe qui matche. Ccomment traiter le cas des commentaires, par exemple en Caml, de mani`ere `a ne pas oublier du code ?

let f x = (* une fonction bidon *)

if x mod 2 = 0 then x/2 else x+3 ; ; (* fin de la fonction bidon *)

?Des expressions r´eguli`eres aux automates? Question 3.1

SoitRune expression r´eguli`ere sur l’alphabetΓ. Apr`es avoir compl´et´eΓavec un symbolesignifiant

“vide”, donnez une m´ethode simple (par induction sur les expressions r´eguli`eres) de construction d’un automate reconnaissantR.

Bornez le nombre d’´etats de l’automate construit.

Question 3.2

Cet automate est-il d´eterministe ou non d´eterministe ? Question 3.3

Rappelez le principe de la “d´eterminisation” d’un automate fini non d´eterministe. Appliquez-le `a un au- tomate reconnaissant une expression r´eguli`ere. En principe cela doit commencer `a ressembler `a la m´ethode vue en cours.

Références

Documents relatifs

Les prohibitions de ce genre sont parfaitement applicables, qu'il s'agisse de crédits aux gouver- nements, d'emprunts ou de crédits à court terme. Le danger est que des

en état.. IL yaU1~U1euliCas'particulier,oùl'Ac~ufé eû cenfé s'êrre repréfenré.Ians qu'il foit dans les Prifons ; c'eït celui de l'Exoùze dont il eft parlé dans le même Art. 2)

Compl´eter le programme pour d´eterminer le nombre de caract`eres de chacun des mots contenus dans ce texte. D`es que la longueur d’un mot est connue, affichez en

Mais la loi contient 6galement une serie de clauses dont la nature et l'inten¬ tion sont fort differentes: l'interdiction d'envoyer des troupes en Macedoine clause 2, la defense

Pour g´erer l’´evaluation, vous pouvez utiliser une pile de couples : (nom de variable, valeur enti`ere)4. La valeur d’une variable est la valeur enti`ere stock´ee la plus haut dans

Syntaxe de l’adressage indirect par registre.- Comme nous l’avons d´ej` a vu, pour d´esigner une valeur constante on ´ecrit cette valeur (en hexad´ecimal), pour une valeur se

Syntaxe de l’adressage indirect par registre en langage symbolique.- Comme nous l’avons d´ej` a vu, en langage symbolique, pour d´esigner une constante on ´ecrit celle-ci

imprime toutes les lignes contenant le mot analyse suivi du mot lexical dans tous les fichiers de suffixe .tex. (L’option -i