Université Lvl Fculté des sciences et de génie Déprtement d informtique et de génie logiciel IFT-3101 Dnny Dué Version: Hiver 2013 Exercices reliés u chpitre 3 Exercices Voici les exercices que je recommnde de fire: Exercice 3.1.1. (L exercice 3.3 () dns l 1ère édition est similire.) Exercice 3.3.2. (Exercice 3.6 dns l 1ère édition où les 0 et les 1 ont été remplcés pr des et des.) Exercice 3.3.3. Pour que les sous-questions (d) et (e) ient un sens, on fit l hypothèse que l chîne est composée de crctères qui sont tous distincts; pr exemple, cdefet non cc. (Exercice 3.5 dns l 1ère édition mis vec les items (c) et (d) inversés.) Exercices 3.3.5 (), () et (c). Pour plus de difficulté, fire (d), (e), (f), (h) et (i). (Exercice 3.7 dns l 1ère édition.) Note: u numéro (), l énoncé peut être précisé insi: Il s git des 5 voyelles nglises (, e, i, o, u); les mots de ce lngge contiennent exctement une occurrence de chcune des 5 voyelles; les 5 voyelles pprissent en ordre mis ne sont ps forcément consécutives. Note: ux numéros (d) et (e), ne ps tenter de créer une définition pour tous les chiffres, se limiter à {0,1,2} est mplement suffisnt. Note: u numéro (d), il s git de répétitions successives d un chiffre; utrement dit 0122 n est ps ccepté, mis 012012 l est, i.e. chque chiffre peut ppritre plus d une fois dns l chine mis on ne retrouver jmis deux chiffres identiques côte à côte). Note: u numéro (e), nous reprenons l même définition de répétition qu en (d), à l exception qu un mot du lngge peut contenir une répétition (tous chiffres confondus). Pr exemple, 012, 0221, 2110 sont cceptés, mis 1122 et 01001200 ne le sont ps. Exercice 3.3.9. (Exercice 3.10 (c) dns l 1ère édition.)
Exercice supplémentire 1. Soit l définition régulière suivnte: letter A B... Z... z 0... 9 whitespce ( \t \n ) + id letter ( letter ) num ( )? + (. + )? Note: \t représente une tultion, et \n, un chngement de ligne. Informellement, comment est défini comme une expression commençnt pr / et finissnt pr / (pouvnt contenir des ou des / mis ps consécutivement). Construisez une série d utomtes finis déterministes permettnt de procéder à l nlyse lexicle du lngge suivnt: Expression régulière Jeton Attriut whitespce comment id id (pointeur vers l tle des symoles) num num (vleur de l constnte)
Réponses 3.1.1 Notons qu il existe plusieurs choix vlides; pr exemple, dns l solution ci-dessous, tous les opérteurs sont regroupés sous le jeton op et le type précis de l opérteur est en ttriut. Créer un type de jeton pour chque type d opérteur urit ussi été correct. 3.3.2 Jeton Attriut ssocié flot id limitedsqure ( ) flot { return ( comp num -10.0 op comp num 10.0 ) op? num 100 op : op ; } () Le lngge qui contient des et des et où les mots commencent et finissent pr, de longueur u moins 2. () le lngge {,}, i.e. le lngge où les mots contiennent des et des. (c) le lngge Σ {} Σ 2 où Σ = {,}, i.e. le lngge contennt des mots d u moins 3 lettres, qui contiennent des et des, et où l troisième lettre en prtnt de l fin du mot est un.
(d) Le lngge qui contient des et des et où les mots contiennent exctement 3. (e) le lngge {w {,} il y un nomre pir de et un nomre pir de dns w}. 3.3.3 () n+1 () n+1 (c) n 1 (d) 1+n+(n 1)+...+2+1 = 1+n(n+1)/2. En effet, il y : 1 sous-chine de longueur 0, n sous-chines de longueur 1, (n 1) sous-chines de longueur 2,..., 2 sous-chines de longueur (n 1) et 1 sous-chine de longueur n. (e) 2 n. En effet, pour former une sous-séquence, on doit décider, pour chque crctère de l séquence originle, si on l inclut ou ps dns l sous-séquence. Il y 2 n fçons de décider et, donc, 2 n sous-séquences différentes. 3.3.5 () C représente une ou plusieurs consonnes (optionnelles) C [cdfghjklmnpqrstvwxyz] S C C e C i C o C u C () S c d e f g h i j k l m n o p q r s t u v w x y z (c) Q représente le contenu de guillemets ( quotes ); C représente le contenu du commentire. Le contenu du commentire est tout crctère suf suivi de /, ou des guillemets qui eux peuvent contenir tout crctère suf des guillemets. Q "[ˆ"] " C ([ˆ/"] Q) / S / C + /
(d) Puisqu il est plus fcile d imginer un utomte fini qu une définition régulière pour ce prolème, construisons l utomte fini puis utilisons l lgorithme de conversion d un utomte en définition régulière. 1 0 0 1 0 2 2 2 0 2 1 S 1 En ppliqunt l lgorithme, premièrement, en joutnt un étt cceptnt unique et, deuxièmement, en éliminnt les étts 2, 1 et 0, dns l ordre, nous otenons l définition régulière suivnte: d 0 20 d 1 21 e 0 0 d 0 e 1 1 d 1 e ǫ 2 ǫ f 0 e 1 d 1 e 0 f ǫ e 1 d 1 e ǫ g (e ǫ f ǫ ) (e 0 f 0 )(d 0 f 0 ) (e ǫ f ǫ ) (e) Nous pourrions construire un utomte fini, comme u numéro (d), puis le convertir en expression régulière. Toutefois, notons que nous pouvons simplement réutiliser l définition régulière g définie en (d) insi: S gg En effet, en concténnt deux fois g, on permet u plus une répétition, à l jonction des deux g. (f) Puisqu il n est ps évident de construire une telle définition régulière, commençons pr construire un utomte fini.
S R P Q En ppliqunt l lgorithme, premièrement, en joutnt un nouvel étt de déprt et un nouvel étt cceptnt et, deuxièmement, en éliminnt les étts P, R, Q et S, dns l ordre, nous otenons l définition régulière suivnte: d e f (d ed e) ( ed ) (h) Cette définition régulière s ssure que toute sous-chine est soit imméditement suivie d un, soit à l fin du mot. Ainsi on évite toute sous-chine. S (? ) (i) On permet un nomre ritrire de u déut cr ceux-ci ne peuvent servir à créer l sous-séquence. Après le déut, dès qu on trouve un suivnt un, on ne permet plus que d jouter des. 3.3.9 S ( ǫ) Soit r{m,n} où r est un ptron et 0 m n. Alors on : r r... r }{{} m fois r? r?... r? }{{} n m fois Cette expression régulière est équivlente, donc l nottion r{m, n} n pporte ucune puissnce supplémentire.
Exercice supplémentire 1 \t \n \t \n other 1 2 3 drop & restrt / / 1 2 3 4 5 other other drop & restrt letter _ letter other 1 2 3 return(id, instll_id( gettoken() )) other 4 1 2. 5 3 return(num, gettoken()) 6 other 7 return(num, gettoken())