Compilation : série 1

À rendre avant le mercredi 6 novembre 2002, 12h00 dans la boîte située devant le bureau IN/R 318

Exercice 1 (10 points)

Trouver une grammaire non contextuelle (BNF) pour les langages suivants : Si vous utilisez plusieurs non-terminaux, indiquez clairement lequel est le symbol initial.

Exercice 2 (4 points)

Parmi les langages de la question 1, lesquels sont réguliers ? Pour ceux qui le sont, prouvez-le.

Exercice 3 (12 points)

Les grammaires ci-dessous définissent des langages réguliers. Pour chacune d'elle, donnez une seule règle EBNF non récursive définissant le même langage, puis écrivez une fonction Java qui retourne vrai si et seulement si un mot donné appartient à ce langage. Dans le code des fonctions utilisez la variable ch pour obtenir le caractère courant et la fonction next() pour faire passer ch au caractère suivant. La fin du mot est atteinte lorsque ch vaut EOF.

Exercice 4 (6 points)

Trouvez une grammaire EBNF non récursive qui spécifie la syntaxe des nombres à virgule flottante dont la spécification est la suivante : Voici quelques exemples de nombres à virgule flottante:
    -3.1415927, 1.4e10, 127.0e-2, -0.1e-1, .0