• Aucun résultat trouvé

corrigé

N/A
N/A
Protected

Academic year: 2022

Partager "corrigé"

Copied!
4
0
0

Texte intégral

(1)

Examen de Compilation

Licence Sciences Pour Ingénieur 25 juin 2015

Le sujet est composé d’exercices indépendants. Aucun document n’est autorisé. Durée de l’épreuve : 0x78 minutes. La présentation de la copie entre en compte dans la note finale.

1 Expression régulière

1 #!/bin/bash

2 # stupid prime generator

3 reg=’^(xx+)\1+$’ ; y=xx ; cpt=

$1

4 while[[ cpt −gt 0 ]] ; do

5 if [[ ! $y =~ $reg ]]; then

6 echo −n ’ ’${#y}

7 let cpt−−

8 fi

9 y=x$y

10 done

Le script utilise une commandegrep basée sur une expression rationnelle étendue conte- nant une référence arrière. Une fonctionalité dé- crite dansman 7 regex.

REGEX( 7 ) Manuel du programmeur

Linux

NOM r e g e x E x p r e s s i o n s r a t i o n n e l l e s POSIX . 2

DESCRIPTION

l a r é f é r e n c e a r r i è r e : «\» s u i v i d ’ un c h i f f r e d é c i m a l non−n u l n

c o r r e s p o n d à l a même s é q u e n c e de c a r a c t è r e s que ceux mis en

c o r r e s p o n d a n c e

a v e c l a n−ième s o u s−e x p r e s s i o n e n t r e p a r e n t h è s e s . ( l e s s o u s−e x p r e s s i o n s

s o n t

n u m é r o t é e s p a r l e u r s p a r e n t h è s e s o u v r a n t e s , de gauche à d r o i t e ) , a i n s i « ( [ bc ] ) \1 » c o r r e s p o n d à « bb » ou « c c » mais p a s à « bc » .

1. Que représentent les caractères spéciaux et $ dans une expression régulière ? Voir cor- rection sujet 1, 2015.

2. Décrire le langage L des mots correspondants au motif (a+)\1. Il s’agit du langage des motsa2n,n >0.

3. Préciser la nature, régulier, algébrique, de L. Le langage est régulier (aa)+ et donc algé- brique.

4. Commenter le résultat de la commande ci-dessous. Voir correction sujet 1, 2015.

exam> t i m e . / prime . sh 10 2 3 5 7 11 13 17 19 23 29 r e a l 0m0. 2 0 9 s

u s e r 0m0. 1 8 7 s s y s 0m0. 0 0 2 s

1

(2)

2 Théorie des Langages

On considère l’alphabet A ={0,1}. Pour tout langageX, on note p(X) les mots deX qui ont une longueur paire :

p(X) ={x∈X | |x| ≡0 mod 2}.

1. Montrer que siX est rationnel alorsp(X) est rationnel. Le langage des mots de longueur paire P est reconnu par un automate à deux états. La classe des langages réguliers est stable par intersection. Il suit quep(X) =P∪X est régulier.

2. La réciproque est fausse, donner un contre-exemple. Par exemple, le langage{xp |ppremier}.

3. Construire l’automate des mots binaires de longueur paire qui représentent un multiple de trois. Il faut construire l’intersection des automates :

soit :

3 gcc-flex

Le langage BF est un langage minimaliste qui s’appuie sur un modèle de machine composé d’un tableau d’octets MEM (initialisés à 0), d’un pointeur PTR sur le tableau et de deux files d’octets pour les entrées et sorties. La machine gère les huit opérations décrites par la table [1].

Un programme en langage BF est une suite d’octets :>,<, +,−, ?, !, [ et ] qui sont interprétés, les espaces et les caractères situés à droite d’un ’ ;’ sont ignorés.

%{

#i n c l u d e < s t d i o . h>

v o i d p r o l o g u e ( v o i d ) {

p u t s ("# i n c l u d e < s t d i o . h>\ n t y p e d e f u n s i g n e d c h a r u c h a r ; \ n\

u c h a r mem[ 1 0 2 4 ] = { 0 } ; \ n i n t p t r =0;\ n i n t main ( v o i d ) {\ n\

p r i n t f (\"# b r a i n f∗∗∗ v1 . 0 \ \ n \ " ) ; " ) ; }

2

(3)

Tab.1 – Les 8 instructions debfm

symb mnémo. ignification codage

> INC incrémente le pointeur ptr++

< DEC décrémente le pointeur ptr-- + ADD incrémente l’octet pointé mem[ptr]++

SUB décrémente l’octet pointé mem[ptr]--

! OUT sortie de l’octet pointé putchar(mem[ptr])

? IN entrée d’un octet mem[ptr]=getchar()

[ LOOP saut si 0 aprés ] while ( mem[ptr] ) {

] RET retour vers [ }

v o i d e p i l o g u e ( v o i d ) {

p u t s ( " p u t s (\"# e o j \\ n \ " ) ; r e t u r n 0 ; } " ) ; }

%}

%%

[ ]+ ;

; . ;

\n ;

. ;

%%

i n t main ( v o i d ) {

p r o l o g u e ( ) ; y y l e x ( ) ; e p i l o g u e ( ) ; r e t u r n 0 ; }

++++++++++

[ ; B o u c l e i n i t i a l e q u i a f f e c t e d e s v a l e u r s u t i l e s au t a b l e a u MEM

>+++++++>++++++++++>+++>+<<<< ]

;A l a s o r t i e de l a b o u c l e l e t a b l e a u de l a machine c o n t i e n t :

>++! ; ’ H’ = 72 ( 7 0 p l u s 2 )

>+! ; ’ e ’ = 101 ( 1 0 0 p l u s 1 )

+++++++! ; ’ l ’ = 108 ( 1 0 1 p l u s 7 )

! ; ’ l ’ = 108

+++! ; ’ o ’ = 111 ( 1 0 8 p l u s 3 )

>++! ; e s p a c e = 32 ( 3 0 p l u s 2 )

<<+++++++++++++++! ; ’W’ = 87 ( 7 2 p l u s 1 5 )

>! ; ’ o ’ = 111

+++! ; ’ r ’ = 114 ( 1 1 1 p l u s 3 )

−−−−−−! ; ’ l ’ = 108 ( 1 1 4 moins 6 )

−−−−−−−−! ; ’ d ’ = 100 ( 1 0 8 moins 8 )

>+! ; ’ ! ’ = 33 ( 3 2 p l u s 1 )

3

(4)

>! ; n o u v e l l e l i g n e = 10 hw.bf

1. Comment compilerbftoc.lpour obtenir un exécutablebftoc.exe?

$> f l e x −o b f . c b f t o c . l

$> g c c −Wall b f . c −o b f . e x e l f l

2. Quel est le résultat debftoc.exeappliqué à un fichier (entrée standard) vide ?

#i n c l u d e < s t d i o . h>

t y p e d e f u n s i g n e d c h a r u c h a r ; u c h a r mem[ 1 0 2 4 ] = { 0 } ;

i n t p t r =0;

i n t main ( v o i d ) {

p r i n t f ("# b r a i n f∗∗∗ v1 . 0 \ n " ) ; p u t s ("# e o j \n " ) ; r e t u r n 0 ; }

3. Compléter le fichier bftoc.l pour obtenir un traducteur en flex du langage BF vers le langage C.

Il suffit d’ajouter les règles :

" >" p u t s ( " p t r ++; \n " ) ;

" <" p u t s ( " p t r−−; \n " ) ;

"+" p u t s ( "mem[ p t r ]++;\n " ) ;

"−" p u t s ( "mem[ p t r ]− −;\n " ) ;

" ! " p u t s ( " p u t c h a r (mem[ p t r ] ) ; \ n " ) ;

" ? " p u t s ( "mem[ p t r ]= g e t c h a r ( ) ; \ n " ) ;

" [ " p u t s ( " w h i l e ( mem[ p t r ] ) {\ n " ) ;

" ] " p u t s ( " } ; \ n " ) ;

4. Préciser comment (compilations comprises) exécuter le progammehw.bf.

$> . / b f t o c . e x e <hw . b f >hw . c

$> g c c hwx . c

$> . / a . o u t

4

Références

Documents relatifs

Ils sont ensuite émis sans vitesse par la source S, puis accélérés par un champ électrostatique uniforme qui règne entre S et P tel que.. U sp

Le tableau suivant indique les pourcentages de part de marché que la firme F peut espérer obtenir suivant les circuits choisis par elle et la concurrence :... Combien de

Si l'on en croit Jesse Fox, auteur principal d'une étude et professeur assistante en communication à l'Université de l'Ohio, les hommes qui publient beaucoup de selfies sur

Les élèves ne disposant pour l’instant que d’informations qualitatives sur l’énergie potentielle et l’énergie cinétique d’un système, le but de

Pour cela (figure 1), on émet dans le local I avec une source de bruit normalisée, et on mesure dans le local II, séparé de I par la paroi étudiée, le niveau acoustique par

Sony a également annoncé qu'il se lancerait directement sur le marché du jeu sur portable. Sa PlayStation Suite 20 distribuera d'anciens jeux pour.. PlayStation 21 One 22 pour

Réaliser une analyse de l’arbre généalogique suivant pour déterminer quel risque pour III4 d’avoir un enfant malade. Les femmes sont symbolisées par des ronds, et les hommes par

L'objet posé sur le sol ne pourra en aucun cas libérer de l'énergie par le travail de son poids. Son énergie potentielle de pesanteur est nulle. Pour définir une énergie potentielle