Traduction et Sémantique Traduction dirigée par la syntaxe

Dimension: px
Commencer à balayer dès la page:

Download "Traduction et Sémantique Traduction dirigée par la syntaxe"

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() 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étail

Programmation système I Les entrées/sorties

Programmation 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étail

Introduction au langage C

Introduction 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étail

Le système de gestion des fichiers, les entrées/sorties.

Le 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étail

1/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/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étail

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Suivant 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étail

Programmation système en C/C++

Programmation 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étail

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Chap 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étail

Cours Programmation Système

Cours 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étail

TP 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 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étail

Algorithmique et Programmation, IMA

Algorithmique 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étail

1. 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. 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étail

Génie Logiciel avec Ada. 4 février 2013

Gé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étail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à 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étail

Cours 14 Les fichiers

Cours 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étail

Les fichiers. Chapitre 4

Les 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étail

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Machines 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étail

Cours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan

Cours 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étail

Cours 6 : Tubes anonymes et nommés

Cours 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étail

OCL - Object Constraint Language

OCL - 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étail

3IS - Système d'exploitation linux - Programmation système

3IS - 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étail

Java Licence Professionnelle CISII, 2009-10

Java 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étail

Introduction à 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 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étail

Rappels Entrées -Sorties

Rappels 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étail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 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étail

Cours de Programmation 2

Cours 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étail

Les structures. Chapitre 3

Les 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étail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. 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étail

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMPARAISONDESLANGAGESC, 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étail

Cours 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 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étail

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours 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étail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre 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étail

OS Réseaux et Programmation Système - C5

OS 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étail

Classes et Objets en Ocaml.

Classes 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étail

Analyse de sécurité de logiciels système par typage statique

Analyse 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étail

Cours 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 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 É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étail

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Dans 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étail

Théorie des Langages

Thé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étail

Programmer 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) 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étail

Programmation impérative

Programmation 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étail

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. 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étail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION 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étail

Les chaînes de caractères

Les 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étail

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Expression 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étail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers 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étail

SUPPORT DE COURS. Langage C

SUPPORT 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étail

Brefs 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 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étail

Bases de programmation. Cours 5. Structurer les données

Bases 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étail

Paris Airports - Web API Airports Path finding

Paris 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étail

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

MISE 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étail

Une introduction à Java

Une 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étail

Programmation avec des objets : Cours 7. Menu du jour

Programmation 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étail

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à 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étail

Traduction des Langages : Le Compilateur Micro Java

Traduction 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étail

Programmation système de commandes en C

Programmation 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étail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ 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étail

INFO-F-105 Language de programmation I Séance VI

INFO-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étail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 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étail

LMI 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 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étail

Cours 1 : La compilation

Cours 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étail

Logiciel Libre Cours 2 Fondements: Programmation

Logiciel 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étail

Interpréteur d algèbre relationnelle

Interpré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étail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION 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étail

INITIATION AU LANGAGE JAVA

INITIATION 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étail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE 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étail

Stockage du fichier dans une table mysql:

Stockage 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étail

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Pré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étail

Recherche dans un tableau

Recherche 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étail

Cours de Système : Gestion de Fichiers

Cours 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étail

Les structures de données. Rajae El Ouazzani

Les 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étail

TD3: tableaux avancées, première classe et chaînes

TD3: 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étail

Licence 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étail

Programmation en langage C

Programmation 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étail

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

C++ 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étail

GOL502 Industries de services

GOL502 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étail

Programmation Classique en langage C

Programmation 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étail

Compilation (INF 564)

Compilation (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étail

STAGE IREM 0- Premiers pas en Python

STAGE 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étail

ARBRES BINAIRES DE RECHERCHE

ARBRES 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étail

Langage Java. Classe de première SI

Langage 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étail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. 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étail

PHP 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. 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étail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation 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étail

Théorie de la Programmation

Thé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étail

Présentation du langage et premières fonctions

Pré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étail

Programmation C. J.-F. Lalande. 15 novembre 2012

Programmation 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étail

Langage 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 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étail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage 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étail

Arbres binaires de recherche

Arbres 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étail

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RAPPELS 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étail

Arguments d un programme

Arguments 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étail

Utilitaires méconnus de StrataFrame

Utilitaires 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étail

UML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr

UML. 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étail

Algorithmique, Structures de données et langage C

Algorithmique, 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étail

Environnements de développement (intégrés)

Environnements 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étail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 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étail

Objets et Programmation. origine des langages orientés-objet

Objets 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étail

Object Constraint Language (OCL)

Object 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étail

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

La 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