36 0 105KB
Université Mohamed Premier Faculté des Sciences, Oujda
Année universitaire 2011/2012 Filière SMI, Semestre 5
TP 3 – Flex Exercice 1 Ecrire un programme Flex qui remplace chaque occurrence du mot "bon" par "mauvais".
Exercice 2 Ecrire un programme Flex qui lit une chaîne de bits et remplace chacun de ces bits par une lettre "b", mais aussi, il remplace un "0" suivi d’un autre "0" par une lettre "a" et remplace un "1" suivi d’un autre "1" par une lettre "c".
Exercice 3 Ecrire un programme Flex qui compte le nombre d’occurrence de chaque lettre minuscule dans un fichier texte. Le résultat doit être stocké dans un tableau « t » de 26 entiers : on met dans « t[0] » le nombre d’occurrence de la lettre "a", ... et ainsi de suite. Le programme affichera ensuite ce tableau.
Exercice 4 Ecrire un programme Flex qui extrait d’un fichier texte tous les mots dont la longueur est strictement inférieure à 10. Un mot étant une chaîne de lettres (minuscules ou majuscules). Il y a trois façons pour faire cet exercice : 1. en utilisant strlen sur la variable yytext. 2. en utilisant la variable yyleng. 3. sans utiliser ni strlen, ni yyleng.
Exercice 5 Ecrire un programme Flex qui extrait d’un fichier texte, le mot le plus court, le mot le plus long et les mots qui sont des palindrômes.
Exercice 6 Une séquence d’ADN est un mot sur l’alphabet {A, C, G, T}. 1. Ecrire un programme Flex qui convertit une séquence d’ADN donnée en forme brut en une séquence en forme condensé. 2. Ecrire un programme Flex qui convertit une séquence d’ADN donnée en forme condensé en une séquence en forme brut.
TP 4 – Bison ___________________________________________________________________________ Travaux pratiques du module Théorie des langages et Compilation Page 1
Université Mohamed Premier Faculté des Sciences, Oujda
Année universitaire 2011/2012 Filière SMI, Semestre 5
Exercice 1 Développer un analyseur syntaxique pour la grammaire suivante : S → XbY | Xb | bY X → aX | a Y → aY | bY | a | b Cet analyseur se contentera d’afficher le message "Mot accepté !" lorsque le mot en entrée est analysée avec succès.
Exercice 2 Modifier l’analyseur syntaxique de l’exercice 1 de façon qu’il affiche le nombre de lettres "a" et le nombre de lettres "b" dans le mot en entrée.
Exercice 3 Modifier l’analyseur syntaxique de l’exercice 1 de manière à ce qu’il affiche les étapes de dérivation du mot en entrée.
Exercice 4 Concevoir une calculatrice qui évalue une expression arithmétique donnée en notation polonaise inverse. Voici un modèle à suivre : >>Expression : 4 9 + >>Resultat = 13 >>Expression : 3 7 + 3 4 5 * + >>Resultat = -13 Les opérateurs sont « + », « - », « * », « / » et « n » (pour le « - » uniaire). Les opérandes sont de type « int ».
Exercice 5 Concevoir une calculatrice qui évalue une expression arithmétique donnée en notation infixe. Voici un modèle à suivre : >>Expression : 4 + 4.5 - (34 / (8 * 3 + (-3))) >>Resultat = 6.880952381 >>Expression : 3 ^ 2 - 2 >>Resultat = 7 Les opérandes sont de type « double » et les opérateurs sont « + », « - », « * », « / » et « ˆ » (puissance). Les parenthèses sont utilisées comme séparateurs.
___________________________________________________________________________ Travaux pratiques du module Théorie des langages et Compilation Page 2