Traduction et Sémantique Traduction dirigée par la syntaxe
|
|
- Marin Bernard
- il y a 7 ans
- Total affichages :
Transcription
1 Traduction et Sémantique Traduction dirigée par la syntaxe Luigi Santocanale LIF, Université de Provence Marseille, FRANCE 19 mars 2010
2 Plan Traduction dirigée par la syntaxe Grammaires attribués Attributs synthétisés et hérités Implantation ascendante des grammaires S-attribuées Un exemple : construction de la syntaxe abstraite Grammaires L-attribuées Schémas de traduction Traduction ascendante Chercher un attribut dans la pile : les marqueurs
3 Plan 3/41 Traduction dirigée par la syntaxe Grammaires attribués Attributs synthétisés et hérités Implantation ascendante des grammaires S-attribuées Un exemple : construction de la syntaxe abstraite Grammaires L-attribuées Schémas de traduction Traduction ascendante Chercher un attribut dans la pile : les marqueurs
4 4/41 Définitions dirigées par la syntaxe Grammaire attribuée : toute production possède un ensemble de règles sémantiques : Production Règle sémantique A X 1 X n a 1 a 2 a k Chaque règle sémantique (ou action) a i : calcule un attribut d un symbole parmi A,X 1,,X n, ou produit un effet de bord
5 4/41 Définitions dirigées par la syntaxe Grammaire attribuée : toute production possède un ensemble de règles sémantiques : Production Règle sémantique A X 1 X n a 1 a 2 a k Chaque règle sémantique (ou action) a i : calcule un attribut d un symbole parmi A,X 1,,X n, ou produit un effet de bord
6 4/41 Définitions dirigées par la syntaxe Grammaire attribuée : toute production possède un ensemble de règles sémantiques : Production Règle sémantique A X 1 X n a 1 a 2 a k Chaque règle sémantique (ou action) a i : calcule un attribut d un symbole parmi A,X 1,,X n, ou produit un effet de bord
7 Grammaire attribuée pour une calculette 5/41 Production Règle sémantique L E \n E E + T E T T T F T F F (E) F chiffre Imprimer(Eval) Eval := E val + T val Eval := T val T val := T val Fval T val := Fval Fval := Eval Fval := chiffrevallex
8 Grammaire attribuée pour une calculette 5/41 Production Règle sémantique L E \n E E 1 + T E T T T 1 F T F F (E) F chiffre Imprimer(Eval) Eval := E 1 val + T val Eval := T val T val := T 1 val Fval T val := Fval Fval := Eval Fval := chiffrevallex
9 Attribution de types dans une déclaration 6/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype)
10 7/41 Formellement Une grammaire attribuée consiste de : un grammaire G = V,Σ,S,P pour tout X V, une collection d attributs de X : {Xi i I X } pour toute production A X 1,,X n, une collection de règles a i de la forme b := f (c 1,c 2,,c k ) où b,c 1,,c k sont des attribuits de A,X 1,,X n
11 Attributs synthétisés : intuition 8/41 Le flot de l information procède des fils vers les parents, et de droite à gauche du symbole de la production : Exemple, la ligne 3 + 4\n
12 Attributs synthétisés 9/41 Un attribut b est synthétisé si chaque fois que Production Règle sémantique A X 1 X n b := f (c 1,,c k ) b est un attribut de A, c est-à-dire il est de la forme Ai
13 Attributs synthétisés 9/41 Un attribut b est synthétisé si chaque fois que Production Règle sémantique A X 1 X n b := f (c 1,,c k ) b est un attribut de A, c est-à-dire il est de la forme Ai
14 L attribut Eval de la calculette est synthétisé 10/41 Production Règle sémantique L E \n E E 1 + T E T T T 1 F T F F (E) F chiffre Imprimer(Eval) Eval := E 1 val + T val Eval := T val T val := T 1 val Fval T val := Fval Fval := Eval Fval := chiffrevallex Tous les attributs de la calculette sont synthétisés
15 L attribut Eval de la calculette est synthétisé 10/41 Production Règle sémantique L E \n E E 1 + T E T T T 1 F T F F (E) F chiffre Imprimer(Eval) Eval := E 1 val + T val Eval := T val T val := T 1 val Fval T val := Fval Fval := Eval Fval := chiffrevallex Tous les attributs de la calculette sont synthétisés
16 Attributs hérités 11/41 Le flot d information procède des parents vers les fils, entre frères, (et de gauche à droite d une production) Exemple, la déclaration entier i, j
17 Attributs hérités 12/41 Un attribut b est héríté si chaque fois que Production Règle sémantique A X 1 X n b := f (c 1,,c k ) b est un attribut de X j, pour quelque j = 1,,n, c est-à-dire il est de la forme X j i
18 Attributs hérités 12/41 Un attribut b est héríté si chaque fois que Production Règle sémantique A X 1 X n b := f (c 1,,c k ) b est un attribut de X j, pour quelque j = 1,,n, c est-à-dire il est de la forme X j i
19 L attribut Ltype est hérité 13/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Ltype est hérité, T type est synthétisé
20 L attribut Ltype est hérité 13/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Ltype est hérité, T type est synthétisé
21 14/41 Implantation ascendante des définitions S-attribués Grammaire S-attribués : tous les attributs sont synthétisés Implantation On étend un analyseur ascendante On place les attributs sur la pile On calcul les attributs du père, avant réduction
22 14/41 Implantation ascendante des définitions S-attribués Grammaire S-attribués : tous les attributs sont synthétisés Implantation On étend un analyseur ascendante On place les attributs sur la pile On calcul les attributs du père, avant réduction
23 14/41 Implantation ascendante des définitions S-attribués Grammaire S-attribués : tous les attributs sont synthétisés Implantation On étend un analyseur ascendante On place les attributs sur la pile On calcul les attributs du père, avant réduction
24 14/41 Implantation ascendante des définitions S-attribués Grammaire S-attribués : tous les attributs sont synthétisés Implantation On étend un analyseur ascendante On place les attributs sur la pile On calcul les attributs du père, avant réduction
25 Exemple 15/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val top q n 4 q n 1 q n 2 3 q n 3 etat val
26 Exemple 15/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val top q n T 4 q n 1 + q n 2 E 3 q n 3 X etat val
27 Exemple 15/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val top q n T 4 q n 1 + q n 2 E 3 q n 3 X ntop q E 7 q n 3 X etat val etat val
28 Exemple 15/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val top q n 4 q n 1 q n 2 3 q n 3 ntop q 7 q n 3 etat val etat val
29 Exemple (cont) 16/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val q n 4 q n 1 q n 2 3 q n 3 etat val Production E E 1 + T Règle sémantique val[ntop] := val[top 2] + val[top]
30 Exemple (cont) 16/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val q n 4 q n 1 q n 2 3 q n 3 etat val Production E E 1 + T Règle sémantique val[ntop] := val[top 2] + val[top]
31 Exemple (cont) 16/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val q n 4 q n 1 q n 2 3 q n 3 q 7 q n 3 etat val etat val Production Règle sémantique E E 1 + T val[ntop] := val[top 2] + val[top]
32 Exemple (cont) 16/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val q n 4 q n 1 q n 2 3 q n 3 Eval = val[top 2] +val[top]; ntop = top 3 + 1; etat[ntop] = Next(etat[top], E); val[ntop] = Eval; q 7 q n 3 etat val etat val Production Règle sémantique E E 1 + T val[ntop] := val[top 2] + val[top]
33 Exemple (cont) 16/41 Production E E 1 + T Règle sémantique Eval := E 1 val + T val q n 4 q n 1 q n 2 3 q n 3 Eval = val[top 2] +val[top]; ntop = top 3 + 1; etat[ntop] = Next(etat[top], E); val[ntop] = Eval; q 7 q n 3 etat val etat val Production Règle sémantique E E 1 + T val[ntop] := val[top 2] + val[top]
34 17/41 Construction de la syntaxe abstraite pour le langage lse La syntaxe abstraite en tic (fichier lse_syntabstrtic) : type op = Plus ; type e_ expr = Id of string Const of int Op of op * e_ expr * e_ expr ; type b_ expr = Expr of e_ expr Ite of e_ expr * b_ expr * b_ expr Let of string * e_ expr * b_ expr ;
35 18/41 Les prototypes engendrés (fichier lse_syntabstrtich) : extern Let * make_let ( char *, e_expr *, b_expr *); extern Ite * make_ite ( e_expr *, b_expr *, b_expr *); extern Expr * make_ Expr ( e_ expr *); extern b_expr * m ake_b_expr_of_expr ( Expr *); extern b_expr * make_b_expr_of_ite ( Ite *); extern b_expr * make_b_expr_of_let ( Let *); extern Op * make_op ( op *, e_expr *, e_expr *); extern Const * make_ Const ( int ); extern Id * make_id ( char *); extern e_expr * make_e_expr_of_id ( Id *); extern e_expr * m a k e _ e _ e x p r _ o f _ C o n s t ( Const *); extern e_expr * make_e_expr_of_op ( Op *); extern Plus * make_ Plus (); extern op * make_ op_ of_ Plus ( Plus *);
36 19/41 Des définitions supplementaires : /* Fait à la main */ # define makelet (s,e, b ) \ ( m ake_b_expr_of_let ( make_let (s,e, b ))) # define makeite (e, b1, b2 ) \ ( m ake_b_expr_of_ite ( make_ite (e, b1, b2 ))) # define makeexpr ( e ) \ ( m a k e_b_expr_of_expr ( make_expr ( e ))) # define makeplus ( e1, e2 ) \ ( make_e_expr_of_op ( make_op ( make_op_of_plus ( make_plus # define makeid ( s ) \ ( make_e_expr_of_id ( make_id ( s ))) # define makeconst ( n ) \ ( m a k e _ e _ e x p r _ o f _ C o n s t ( make_const ( n )))
37 20/41 Le traducteur (en bison) %{ # include < stdio h > # include < stdlib h > # include " lse_syntabstr tic h " extern void yyerror ( char const *); extern int yylineno ; extern FILE * yyin ; %} % union { char * str ; int num ; union e_expr * e ; union b_expr * b ; }
38 21/41 Le traducteur (en bison) : les types % union { char * str ; int num ; union e_expr * e ; union b_expr * b ; } % left PLUS % token LPAR RPAR % token IF ELSE % token THEN % token LET EQ IN % token <str > ID % token <num > CONST % type <e > e_ expression % type <b > b_ expression % start S
39 %% 22/41 Le traducteur (en bison) : la grammaire %% S : b_expression ; b_expression : e_expression { $$ = makeexpr ( $1 );} LPAR b_ expression RPAR { $$ = $2 ;} LET ID EQ e_ expression IN b_ expression { $$ = makelet ( $2, $4, $6 );} IF e_ expression THEN b_ expression ELSE b_ expression { $$ = makeite ( $2, $4, $6 );} ; e_expression : ID { $$ = makeid ( $1 );} CONST { $$ = makeconst ( $1 );} e_ expression PLUS e_ expression { $$ = makeplus ( $1, $3 );} LPAR e_ expression RPAR { $$ = $2 ;} ;
40 23/41 Le traducteur (en bison) : le main void yyerror ( char const * str ) { fprintf ( stderr," Ligne % d : % s \ n ", yylineno, str ); exit ( EXIT_FAILURE ); } int main ( int argc, char * argv []) { if ( argc > 1 ) { if (( yyin = fopen ( argv [1], " r " ))== NULL ) exit ( EXIT_FAILURE ); yyparse (); fclose ( yyin ); } else exit ( EXIT_ FAILURE ); exit ( EXIT_SUCCESS ); }
41 Plan 24/41 Traduction dirigée par la syntaxe Grammaires attribués Attributs synthétisés et hérités Implantation ascendante des grammaires S-attribuées Un exemple : construction de la syntaxe abstraite Grammaires L-attribuées Schémas de traduction Traduction ascendante Chercher un attribut dans la pile : les marqueurs
42 25/41 Grammaires L-attribuées Grammaire L-attribuée L évaluation des attributs peut se faire par un parcours en profondeur gauche (Left=gauche) de l arbre dérivation Tout attribut est synthétisé ou hérité Si Production Règle sémantique A X 1 X i 1 X i X n X i b := f (c 1,,c k ) alors c 1,,c k sont des attributs de X 1,,X i 1, ou des attributs hérités de A
43 25/41 Grammaires L-attribuées Grammaire L-attribuée L évaluation des attributs peut se faire par un parcours en profondeur gauche (Left=gauche) de l arbre dérivation Tout attribut est synthétisé ou hérité Si Production Règle sémantique A X 1 X i 1 X i X n X i b := f (c 1,,c k ) alors c 1,,c k sont des attributs de X 1,,X i 1, ou des attributs hérités de A
44 25/41 Grammaires L-attribuées Grammaire L-attribuée L évaluation des attributs peut se faire par un parcours en profondeur gauche (Left=gauche) de l arbre dérivation Tout attribut est synthétisé ou hérité Si Production Règle sémantique A X 1 X i 1 X i X n X i b := f (c 1,,c k ) alors c 1,,c k sont des attributs de X 1,,X i 1, ou des attributs hérités de A
45 25/41 Grammaires L-attribuées Grammaire L-attribuée L évaluation des attributs peut se faire par un parcours en profondeur gauche (Left=gauche) de l arbre dérivation Tout attribut est synthétisé ou hérité Si Production Règle sémantique A X 1 X i 1 X i X n X i b := f (c 1,,c k ) alors c 1,,c k sont des attributs de X 1,,X i 1, ou des attributs hérités de A
46 Attribution de types dans une déclaration 26/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Cette grammaire est L-attribuée
47 Attribution de types dans une déclaration 26/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Cette grammaire est L-attribuée
48 Attribution de types dans une déclaration 26/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Cette grammaire est L-attribuée
49 Attribution de types dans une déclaration 26/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Cette grammaire est L-attribuée
50 Attribution de types dans une déclaration 26/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Cette grammaire est L-attribuée
51 Attribution de types dans une déclaration 26/41 Production Règle sémantique D T L T entier T reel L L 1, id L id Ltype := T type T type := entier T type := reel L 1 type := Ltype AjouterType(identree, Ltype) AjouterType(identree, Ltype) Cette grammaire est L-attribuée
52 27/41 Schémas de traduction comme une grammaire attribuée, les actions sont insérés à la droite de, n importe où Précise l ordre des actions par rapport à un parcours en profondeur gauche de l arbre Exemple : traduction postfixe des expressions additives E T R R addop T {print(addoplexeme)} R ε T chiffre {print(chiffreval)}
53 28/41 En bison nous écrivons des schémas de traduction : % union { int num ; char * string ; %} % token < string > addop <num > chiffre %% E : T R ; R : addop T { printf ("% s ", $1 );} R /* vide */ ; T : chiffre { printf ("% d ", $1 );} ; %%
54 Contraintes 29/41 si une action calcule un attribut de X i alors se trouve à la gauche de X i : A { X i b := f () }X i si une action utilise un attribut de X i alors elle se trouve à la droite de X i : A X i { b := f (X i c ) }
55 Contraintes 29/41 si une action calcule un attribut de X i alors se trouve à la gauche de X i : A { X i b := f () }X i si une action utilise un attribut de X i alors elle se trouve à la droite de X i : A X i { b := f (X i c ) }
56 Élimination des reglès intermediaires 30/41 On peut toujours se ramener à une grammaire L-attribués :
57 Élimination des reglès intermediaires 30/41 On peut toujours se ramener à une grammaire L-attribués : Les schémas E T R R addop T {print(addoplexeme)} R ε T chiffre {print(chiffreval)} sont équivalents E T R R addop T M R ε M ε {print(addoplexeme)} T chiffre {print(chiffreval)}
58 Élimination des reglès intermediaires 30/41 On peut toujours se ramener à une grammaire L-attribués : Les grammaires E T R R addop T R ε T chiffre E T R R addop T M R ε M ε T chiffre sont équivalentes
59 31/41 Schémas en Bison Fichier postfixey : % union { int num ; char * string ; %} % token < string > addop <num > chiffre %% E : T R ; R : addop T { printf ("% s ", $1 );} R /* vide */ ; T : chiffre { printf ("% d ", $1 );} ; %% Fichier postfixeoutput : 0 $accept : E $end 1 E : T R 2 $@1 : /* vide */ 3 R : addop T $@1 R 4 /* vide */ 5 T : chiffre
60 31/41 Schémas en Bison Fichier postfixey : % union { int num ; char * string ; %} % token < string > addop <num > chiffre %% E : T R ; R : addop T { printf ("% s ", $1 );} R /* vide */ ; T : chiffre { printf ("% d ", $1 );} ; %% Fichier postfixeoutput : 0 $accept : E $end 1 E : T R 2 $@1 : /* vide */ 3 R : addop T $@1 R 4 /* vide */ 5 T : chiffre
61 32/41 Exercice Considérez le fichier interreglesy % union { int num ; char * string ; } % token < string > A < string > B %% start : A { puts ( $1 );} B { puts ( $2 );} %% Expliquez pourquoi nous obtenons : $ bison interregles y interregles y :730-31: $2 de start n ' a pas de type déclaré
62 Traduction ascendante 33/41 Nous savons comment calculer les attributs synthétisés Pour calculer les attributs hérités : on effectue les actions au moment des réductions, Quand dans A X 1,X i 1X i X n on passe par X i X 1,,X i 1 sont dans la pile, A n est pas dans la pile, on cherchera un attribut herité de A dans la pile
63 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[ntop]) type[top 2] := type[ntop] T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[ntop]) type[top 2] := type[ntop] T L $ D T L type[top] := type[top 1] D $
64 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[ntop]) type[top 2] := type[ntop] T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[ntop]) type[top 2] := type[ntop] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
65 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[ntop]) type[top 2] := type[ntop] T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[ntop]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
66 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[ntop]) type[top 2] := type[ntop] T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
67 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[ntop]) type[top 2] := type[ntop] (type[ntop] = type[top 3]) T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
68 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[ntop]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
69 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
70 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[ntop]) (type[ntop] = type[top 1]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
71 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[top 1]) (type[ntop] = type[top 1]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] (type[ntop] = type[top 3]) T L $ D T L type[top] := type[top 1] D $
72 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[top 1]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[top 3]) type[top 2] := type[top 3] T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) type[top 2] := type[top 3] T L $ D T L type[top] := type[top 1] D $
73 La declaration int p,q,r 34/41 Pile Entrée Action int id,id,id$ int id, id, id$ T int type[ntop] := entier T id,id,id$ T id, id, id$ L id ajoutertype(entree[top], type[top 1]) T L,id,id$ T L, id,id$ T L, id, id$ L L, id ajoutertype(entree[top], type[top 3]) T L,id$ T L, id$ T L, id $ L L, id ajoutertype(val[top], type[top 3]) T L $ D T L type[top] := type[top 1] D $
74 Implantation de la grammaire attribuée pour les déclarations 35/41 Production Règle sémantique D T L val[top] := val[top 1] T entier T reel val[ntop] := entier val[ntop] := reel L L 1, id AjouterType(val[ntop],val[top 3]) / val[top 2] := val[top 3] / (inutile) L id AjouterType(val[ntop], val[top 1])
75 Chercher un attribut hérité dans la pile 36/41 Considérez Production S a A C S b A B C C c Règle sémantique Che := Asy Che := Asy Csy := f (Che) Quand on réduit C c, Che peut se trouver à distance 1 ou 2 du sommet la pile
76 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valhe[ntop]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valhe[ntop]) babc babc S babc valhe[top] := valsy[top 2] S
77 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valhe[ntop]) (valhe[ntop] = valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valhe[ntop]) babc babc S babc valhe[top] := valsy[top 2] S
78 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valsy[top 1]) (valhe[ntop] = valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valhe[ntop]) babc babc S babc valhe[top] := valsy[top 2] S
79 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valhe[ntop]) babc babc S babc valhe[top] := valsy[top 2] S
80 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valhe[ntop]) babc babc S babc valhe[top] := valsy[top 2] S
81 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valhe[ntop]) (valhe[ntop] = valsy[top 2]) babc babc S babc valhe[top] := valsy[top 2] S
82 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valsy[top 2]) (valhe[ntop] = valsy[top 2]) babc babc S babc valhe[top] := valsy[top 2] S
83 37/41 Pile Entrée Action aac C c valsy[ntop] := f (valsy[top 1]) aac aac S aac valhe[top] := valsy[top 1] S Pile Entrée Action babc C c valsy[ntop] := f (valsy[top 2]) babc babc S babc valhe[top] := valsy[top 2] S
84 38/41 Autre exemple Production B α 0 Aα 1 C β 0 Bβ 1 E D C Règle sémantique Ahe := Bhe Bhe := Che Che := Di Pile E A Dβ 0 α 0 Aα 1 valhe[top α 1 ] := val[top β 0 α 0 Aα 1 ] Dβ 0 B Dβ 0 Bβ 1 valhe[top β 1 ] := val[top β 0 Bβ 1 ] DC valhe[top] := val[top 1] E
85 Marqueurs et copies 39/41 On peut s organiser pour que la valeur d un attribut herité se trouve en val[ntop 1] Production S a A C S b A B C C c Règle sémantique Che := Asy Che := Asy Csy := f (Che) Production S a A N C N ε S b A B M C M ε C c Règle sémantique Che := Nsy, Nhe := Asy Nsy := Nhe Che := Msy, Mhe := Asy Msy := Mhe Csy := f (Che)
86 Marqueurs et copies Production S a A N C N ε S b A B M C M ε C c Règle sémantique Nhe := Asy, Che := Nsy Nsy := Nhe Mhe := Asy, Che := Msy Msy := Mhe Csy := f (Che) devient Production Règle sémantique S a A N C valhe[top 1] := valsy[top 2], valhe[top] := valsy[top 1] N ε valsy[top] := valhe[top 1] S b A B M C valhe[top 1] := valsy[top 2], valhe[top] := valsy[top 1] M ε valsy[ntop] := Mhe[top 1] C c valsy[top] := valhe[top 1] 40/41
87 Remarques 41/41 Le non-terminal N apparaît seulement dans les productions S a A N C N ε Il connaît son contexte De même pour M Cette transformations préserve les grammaires LL(1) Elle ne preserve pas les grammaires LR(1) Rappel : LL(1) LR(1)
88 Remarques 41/41 Le non-terminal N apparaît seulement dans les productions S a A N C N ε Il connaît son contexte De même pour M Cette transformations préserve les grammaires LL(1) Elle ne preserve pas les grammaires LR(1) Rappel : LL(1) LR(1)
89 Remarques 41/41 Le non-terminal N apparaît seulement dans les productions S a A N C N ε Il connaît son contexte De même pour M Cette transformations préserve les grammaires LL(1) Elle ne preserve pas les grammaires LR(1) Rappel : LL(1) LR(1)
90 Remarques 41/41 Le non-terminal N apparaît seulement dans les productions S a A N C N ε Il connaît son contexte De même pour M Cette transformations préserve les grammaires LL(1) Elle ne preserve pas les grammaires LR(1) Rappel : LL(1) LR(1)
Le prototype de la fonction main()
Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme
Plus en détailProgrammation système I Les entrées/sorties
Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les
Plus en détailIntroduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Plus en détailLe système de gestion des fichiers, les entrées/sorties.
Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19
Plus en détail1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
Plus en détailSuivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)
Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être
Plus en détailProgrammation système en C/C++
Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous
Plus en détailChap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1
Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-
Plus en détailCours Programmation Système
Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février
Plus en détailTP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Plus en détailAlgorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Plus en détail1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Plus en détailGénie Logiciel avec Ada. 4 février 2013
Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre
Plus en détailIntroduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Plus en détailCours 14 Les fichiers
Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une
Plus en détailLes fichiers. Chapitre 4
Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,
Plus en détailMachines virtuelles fonctionnelles (suite) Compilation ML Java
Machines virtuelles fonctionnelles (suite) Compilation ML Java Cours de Compilation Avancée (MI190) Benjamin Canou Université Pierre et Maire Curie Année 2011/2012 Semaine 3 Machines virtuelles fonctionnelles
Plus en détailCours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
Plus en détailCours 6 : Tubes anonymes et nommés
Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels
Plus en détailOCL - Object Constraint Language
OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object
Plus en détail3IS - Système d'exploitation linux - Programmation système
3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des
Plus en détailJava Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Plus en détailIntroduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Plus en détailRappels Entrées -Sorties
Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C ibr_guelzim@yahoo.fr ibrahimguelzim.atspace.co.uk
Plus en détailIN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C
IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en
Plus en détailCours de Programmation 2
Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes
Plus en détailLes structures. Chapitre 3
Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre
Plus en détailRappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme
Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation
Plus en détailCOMPARAISONDESLANGAGESC, C++, JAVA ET
REPUBLIQUE DU BENIN *******@******* MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE(MESRS) *******@******* UNIVERSITE D ABOMEY CALAVI(UAC) *******@******* ECOLE POLYTECHNIQUE D ABPOMEY
Plus en détailCours de C. Petits secrets du C & programmation avancée. Sébastien Paumier
Cours de C Petits secrets du C & programmation avancée Sébastien Paumier paumier@univ-mlv.fr Illustrations provenant du site http://tux.crystalxp.net/ 1 Affectations étendues a+=expression a=a+expression
Plus en détailCours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.
Université Montpellier-II UFR des Sciences - Département Informatique - Licence Informatique UE GLIN302 - Programmation Applicative et Récursive Cours No 3 : Identificateurs, Fonctions, Premières Structures
Plus en détailCentre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Plus en détailOS Réseaux et Programmation Système - C5
OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement
Plus en détailClasses et Objets en Ocaml.
Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.
Plus en détailAnalyse de sécurité de logiciels système par typage statique
Contexte Modélisation Expérimentation Conclusion Analyse de sécurité de logiciels système par typage statique Application au noyau Linux Étienne Millon UPMC/LIP6 Airbus Group Innovations Sous la direction
Plus en détailCours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Plus en détailÉléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if
Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike
Plus en détailDans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.
I Présentation : Dans le chapitre 1, nous avons vu comment utiliser les appels-systèmes de bas niveau pour créer et accéder à des fichiers sur le disque. Nous avons notamment mis en évidence leur dépouillement
Plus en détailThéorie des Langages
Théorie des Langages Analyse syntaxique descendante Claude Moulin Université de Technologie de Compiègne Printemps 2010 Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1) Exemple : Grammaire
Plus en détailProgrammer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)
Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Plus en détailProgrammation impérative
Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des
Plus en détailPlan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml
OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire
Plus en détailINTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Plus en détailLes chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
Plus en détailExpression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e
P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement
Plus en détailPremiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
Plus en détailSUPPORT DE COURS. Langage C
Dpt Informatique 2010-2011 SUPPORT DE COURS Langage C Semestre 1 par : «CaDePe» Marie-Françoise Canut Marianne de Michiel André Péninou Table des Matières 1 Généralités...8 1.1 Introduction aux langages
Plus en détailBrefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Plus en détailBases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Plus en détailParis Airports - Web API Airports Path finding
Paris Airports - Web API Airports Path finding Hackathon A660 Version Version Date writer Comment 1.0 19/05/2015 Olivier MONGIN Document creation Rédacteur : Olivier.MONGIN@adp.fr Date : 19/05/2015 Approbateur
Plus en détailMISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année
2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par
Plus en détailUne introduction à Java
Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)
Plus en détailProgrammation avec des objets : Cours 7. Menu du jour
1 Programmation avec des objets : Cours 7 Menu du jour 1. Retour sur la classe Liste 2. Précisions sur l interface 3. Difficultés dans le cas d erreurs 4. Soulever des exceptions 5. Utilisation des Listes
Plus en détailIntroduction à la programmation Travaux pratiques: séance d introduction INFO0201-1
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un
Plus en détailTraduction des Langages : Le Compilateur Micro Java
BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant
Plus en détailProgrammation système de commandes en C
Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes
Plus en détailACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Plus en détailINFO-F-105 Language de programmation I Séance VI
INFO-F-105 Language de programmation I Séance VI Jérôme Dossogne Année académique 2008 2009 Un grand merci à Yves Roggeman pour ses relectures et remarques des codes et commentaires qui ont contribuées
Plus en détailExceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
Plus en détailLMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour
LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections
Plus en détailCours 1 : La compilation
/38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà
Plus en détailLogiciel Libre Cours 2 Fondements: Programmation
Logiciel Libre Cours 2 Fondements: Programmation Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/
Plus en détailInterpréteur d algèbre relationnelle
Universite de Mons-Hainaut Faculté des Sciences Interpréteur d algèbre relationnelle Olivier Christiaen UMH-LIG1 Directeur du projet : M. Jef Wijsen Année académique 2003-2004 Première licence en informatique
Plus en détailINITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Plus en détailINITIATION AU LANGAGE JAVA
INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal
Plus en détailEPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0
Plus en détailStockage du fichier dans une table mysql:
Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table
Plus en détailPrénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004
Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)
Plus en détailRecherche dans un tableau
Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6
Plus en détailCours de Système : Gestion de Fichiers
Cours de Système : Gestion de Fichiers Bertrand Le cun et Emmanuel Hyon bertrand.le cun{at}u-paris10.fr et Emmanuel.Hyon{at}u-paris10.fr Université Paris Ouest Nanterre 25 octobre 2011 B.L.C. & E.H. (UPO)
Plus en détailLes structures de données. Rajae El Ouazzani
Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l
Plus en détailTD3: tableaux avancées, première classe et chaînes
TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première
Plus en détailLicence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
Plus en détailProgrammation en langage C
Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex Anne.Canteaut@inria.fr http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des
Plus en détailC++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy
Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,
Plus en détailGOL502 Industries de services
GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation
Plus en détailProgrammation Classique en langage C
DI GALLO Frédéric Programmation Classique en langage C Cours du Cycle d Approfondissement CNAM ANGOULEME 2000-2001 DI GALLO Frédéric Page 1 01/04/01 PROGRAMMATION CLASSIQUE : LANGAGE C DI GALLO Frédéric
Plus en détailCompilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
Plus en détailSTAGE IREM 0- Premiers pas en Python
Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer
Plus en détailARBRES BINAIRES DE RECHERCHE
ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d
Plus en détailLangage Java. Classe de première SI
Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les
Plus en détail3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes
PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason
Plus en détailPHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)
PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en détailThéorie de la Programmation
Théorie de la Programmation http://perso.ens-lyon.fr/daniel.hirschkoff/thpr hop Programmation, Théorie de la programmation Langages de programmation I il existe de nombreux langages de programmation I
Plus en détailPrésentation du langage et premières fonctions
1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en
Plus en détailProgrammation C. J.-F. Lalande. 15 novembre 2012
Programmation C J.-F. Lalande novembre 0 Ce cours est mis à disposition par Jean-François Lalande selon les termes de la licence Creative Commons Attribution - Pas d Utilisation Commerciale - Partage à
Plus en détailLangage C. Patrick Corde. Patrick.Corde@idris.fr. 22 juin 2015. Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde Patrick.Corde@idris.fr 22 juin 2015 Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Plus en détailLangage et Concepts de ProgrammationOrientée-Objet 1 / 40
Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr
Plus en détailArbres binaires de recherche
1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de
Plus en détailRAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)
CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes
Plus en détailArguments d un programme
Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1
Plus en détailUtilitaires méconnus de StrataFrame
Utilitaires méconnus de StrataFrame Voici quelques classes d utilitaires, parmi ceux qui se trouvent dans le NameSpace MicroFour.StrataFrame.Tools. Cette liste n est pas exhaustive, et les regroupements
Plus en détailUML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr
Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique Année 2014-2015 UML Diagrammes de classes (suite) Delphine Longuet delphine.longuet@lri.fr Opérations Opérations Service qui peut
Plus en détailAlgorithmique, Structures de données et langage C
UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure
Plus en détailEnvironnements de développement (intégrés)
Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure
Plus en détailInfo0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Plus en détailObjets et Programmation. origine des langages orientés-objet
Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève
Plus en détailObject Constraint Language (OCL)
Object Constraint Language (OCL) Eric Cariou Université de Pau et des Pays de l'adour UFR Sciences Pau Département Informatique Eric.Cariou@univ-pau.fr 1 Plan 1. Pourquoi OCL? Introduction par l'exemple
Plus en détailLa programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)
Le langage PHP (2) Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 54 1 La programmation orientée objet 2 Gestion de Connexions HTTP 3 Manipulation
Plus en détail