Flex&Bison

Fermé
adelgh123 Messages postés 1 Date d'inscription mardi 23 février 2016 Statut Membre Dernière intervention 29 février 2016 - 23 févr. 2016 à 10:27
thefloflo64 Messages postés 650 Date d'inscription jeudi 13 novembre 2014 Statut Membre Dernière intervention 28 novembre 2017 - 23 févr. 2016 à 10:28
III) Traiter sur machine les trois questions suivantes.

Soit la grammaire G=(Vt, Vn, P, S) définie par :

Vt={int , real , boolean , array , ref , struct , var , type ,
Of , [ , ] , , , ; , : , = , identificateur , nombre}

Vn= {ListDeclaration , Declaration , ListIdentificateur ,
DefinitionType , ListeChamps}

P={
ListDeclaration -> ListDeclaration ; Declaration
| Declaration
Declaration -> var ListIdentificateur : DefinitionType
| type identificateur = DefinitionType
ListIdentificateur -> ListIdentificateur , identificateur
| identificateur
DefinitionType -> int
| real
| boolean
| array [ nombre ] of DefinitionType
| ref DefinitionType
| struct ListeChamps end
ListeChamps -> ListeChamps ; ListeChamps
| identificateur : DefinitionType
}
S= ListDeclaration




1) Ecrire une spécification lexicale renfermant un main() qui ne fait qu'appeler que le
lexer pour tester l’analyseur généré sur des fichiers contenant des déclarations
définies selon la grammaire G précédemment définie. Faire également des tests sur
des exemples qui aboutissent à des erreurs lexicales.

2) Ecrire une spécification syntaxique bison renfermant un main() qui ne fait
qu'appeler que le parseur pour tester l’analyseur généré sur des exemples bien
choisis. Faire des tests pour afficher aussi des erreurs syntaxiques.

3) Modifier les spécifications flex et bison précédente et les intégrer avec un unique
main() pour afficher les éventuelles erreurs rencontrées ou sinon la table des
identifiants trouvés dans le fichier passé en paramètre renfermant une liste de
déclarations. Tester sur divers exemples bien choisis.

Exemple :
Voici le contenu de fichier à analyser :

var var0, var1 : integer;
vreal : real;
tab : array[ 10 ] of boolean ;

et la table des identificateurs à afficher :

1
2
3
4
-->
-->
-->
-->
var0
var1
vreal
tab

1 réponse

thefloflo64 Messages postés 650 Date d'inscription jeudi 13 novembre 2014 Statut Membre Dernière intervention 28 novembre 2017 93
Modifié par thefloflo64 le 23/02/2016 à 10:29
Bonjour,

Nous sommes là pour aider les autres, pas pour faire ton devoirs...


Cordialement,
Florian

ps : pense à lire la charte du forum...
2