Analyse descendante LL(k)
|
|
- Clementine Bédard
- il y a 8 ans
- Total affichages :
Transcription
1 Bureau M3 extension mirabelle.nebut at lifl.fr
2 Principes Factorisation à gauche Suppression de la récursivité à gauche 2/119
3 Objectif du cours Comprendre le fonctionnement des générateurs de parser descendants : LL(1), ex antlr V1 LL(k), ex javacc LL(*), ex antlr V3 3/119
4 Analyse descendante L automate à pile sous-jacent : effectue uniquement des lectures et des expansions ; construit un arbre en ordre préfixe (idem aut. items) ; part de l axiome (idem aut. items) ; construit une dérivation gauche (idem aut. items). 4/119
5 Différence avec l automate des items Deux différences fondamentales : analyse déterministe dite prédictive ; plus d items ni de réductions explicites. 5/119
6 Analyse déterministe À chaque expansion l analyseur sait choisir une production. Il ne revient jamais sur ce choix : en cas de succès le mot appartient au langage ; en cas d échec on est sûr que mot n appartient pas au langage. 6/119
7 Analyse prédictive L analyseur prédit quelle production utiliser en analysant les k prochains symboles sous la tête de lecture. Conséquences : ne fonctionne qu avec certaines grammaires, dites LL(k) ; tête de lecture toujours définie : marqueur de fin de mot #. NB : dans ce cours techniques pour k=1, on regarde uniquement la tête de lecture. 7/119
8 Se passer des items Rappel : item de la forme [X α β] : X est en cours de reconnaissance ; α a déjà été reconnu ; il reste à reconnaître β, le futur de l item Un analyseur LL : ne mémorise pas qu il est en train de reconnaître X ; ne mémorise pas qu il a reconnu α ; considère uniquement β. 8/119
9 Se passer des items : conséquences Plus besoin d axiome supplémentaire. Dans la pile : plus d items mais des mots étendus : mots de (V N V T ) ; l alphabet est V N V T ; le symbole de pile initiale est l axiome. S pile initiale A b B une pile pile vide (acceptation) 9/119
10 Exemple à suivre dans le cours Soit la grammaire G = {V T, V N, S, P} avec : V T = {a, b, d, e} ; V N = {S, A, B, D} ; P contient les productions : S AB Da A aab ɛ B bb ɛ D dd e 10/119
11 Exemple - les piles pour abb# S AB Da B bb ɛ A aab ɛ D dd e abb#? S abb# (1) A B abb# (2) a A b B abb# (3) A b B bb# (4) b B bb# (5) B b# (6) b B b# (7) B # (8) # (9) Comparer avec l automates des items! Dérivation gauche, arbre en ordre préfixe. 11/119
12 Généralisation La configuration initiale est (m#, S) ; La configuration finale est (#, ) : acceptation par pile vide. On traite systématiquement le sommet de pile. 12/119
13 Transition de lecture Si le sommet de pile est un terminal a V T : on contrôle que a est bien sous la tête de lecture (sinon échec) ; on le consomme ; on le dépile. Lecture de a : (am, z 1... z n a) (m, z 1... z n ) 13/119
14 Transition d expansion Si le sommet de pile est un non terminal X V N et que la tête de lecture est y V T {#}... si Table[X, y] contient X X 1... X n : on dépile X ; on empile à sa place X 1... X n, avec X 1 au sommet. (m, z 1... z n X ) (m, z 1... z n X n... X 1 ) sinon erreur. 14/119
15 Transition d expansion : remarque Expansion par X X 1... X n : (m, z 1... z n X ) (m, z 1... z n X n... X 1 ) X 1 sera traité en premier. on assure ainsi la construction d une dérivation gauche ; 15/119
16 Construction de l arbre syntaxique : ordre préfixe Transition d expansion par X X 1... X n : X est le prochain nœud à traiter dans l arbre (pour l ordre préfixe) ; on lui rajoute les fils X 1... X n de la gauche vers la droite ; le prochain nœud à traiter devient X 1. Transition de a-lecture : a est le prochain nœud à traiter dans l arbre (pour l ordre préfixe) ; on vérifie que a concorde bien avec la tête de lecture ; et on passe au nœud suivant. 16/119
17 Mise en œuvre Les outils n implantent pas un automate à pile. Ils utilisent une implémentation récursive. Dans tous les cas, le choix de l expansion est indiqué par une table d analyse. 17/119
18 Table d analyse - exemple S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur 18/119
19 Table d analyse LL(1) Contient toute l intelligence de l analyseur syntaxique. Definition La table d analyse Table est un tableau à deux dimensions tel que : chaque colonne est indicée par un non-terminal V N ; chaque ligne est indicée par un terminal V T ou # ; chaque case contient une production P ou erreur. On verra plus tard comment remplir cette table. 19/119
20 Interprétation de Table[a, X ] si le terminal a V T est sous la tête de lecture ; et si le non-terminal en cours de traitement est X V N ; alors on consulte Table[a, X ]. Si Table[X, a] contient X γ alors on choisit une expansion par cette production ; erreur alors erreur de syntaxe : X et a ne s accordent pas. 20/119
21 Principes Factorisation à gauche Suppression de la récursivité à gauche 21/119
22 Analyseur descendant récursif Principe : analyseur LL codé par un ensemble de fonctions ; ces fonctions s appellent les unes les autres ; n utilise pas de pile explicite : pile implicite des appels. Codage des fonctions : une fonction X() par non-terminal X V N de la grammaire ; X() reconnaît un mot engendré par X ; la fonction X() code les productions Table[X, y] de la table d analyse, pour tout y V T #. 22/119
23 Exemple Écrire un analyseur syntaxique récursif LL(1) Parser pour G : S AB Da A aab ɛ B bb ɛ D dd e À voir : écriture de S(), A(), B(), D() ; collaboration avec un analyseur lexical. 23/119
24 Collaboration avec un analyseur lexical On reprend les conventions utilisées en TP : un an. lexical anlex de type Scanner (supposé donné) ; symboles de type Symbole ; codage entier du type des symboles dans TypeSymboles (noté TS dans les transparents) ; méthode int gettype() de Symbole pour obtenir ce type ; méthode Symbole next token() de Scanner : avance la tête de lecture tetelect ; retourne le symbole lu, de type Symbole. on remplace le marqueur # par TS.EOF. 24/119
25 Construction de l analyseur syntaxique... public class Parser { // analyseur lexical private Scanner anlex; // symbole courant reçu de l analyseur lexical private Symbole tetelect; public Parser (Scanner anlex) { this.anlex = anlex; }... 25/119
26 Lancement de l analyseur syntaxique Dans la classe Parser : public void analyser() throws ScannerException, ParserExcep // positionnement tete de lecture this.tetelect = (Symbole) this.anlex.next_token(); this.s(); // je veux reconna^ıtre l axiome } // et uniquement l axiome if (this.tetelect.gettype()!= TS.EOF) throw new ParserException(); 26/119
27 Code de S() La tête de lecture est déjà positionnée sur le symbole de prédiction. S a S AB b S AB d S Da e S Da # S AB private void S() throws... { if (this.tetelect.gettype() == TS.a)... // S -> AB else if (this.tetelect.gettype() == TS.b)... // S -> AB else if (this.tetelect.gettype() == TS.d)... // S -> Da else if (this.tetelect.gettype() == TS.e)... // S -> Da else if (this.tetelect.gettype() == TS.EOF)... // S -> AB else throw new ParserException(); } 27/119
28 Code de S() On factorise. S a S AB b S AB d S Da e S Da # S AB private void S() throws... { if (this.tetelect.gettype() == TS.a this.tetelect.gettype() == TS.b this.tetelect.gettype() == TS.EOF)... // S -> AB else if (this.tetelect.gettype() == TS.d this.tetelect.gettype() == TS.e)... // S -> Da else throw new ParserException(); } 28/119
29 Code des productions de S() Code pour S AB : je veux reconnaître A puis B ; A() ; B() ; Code pour S Da : je veux reconnaître D puis vérifier que a est bien sous la tête de lecture ; et consommer a. 29/119
30 Terminaux : vérification et consommation Méthode consommer dédiée à la gestion des terminaux : private void consommer(int type) throws ScannerException, ParserException { if (this.tetelect.gettype() == type) this.tetelect = (Symbole) this.anlex.next_token(); else throw new ParserException(); } Code pour S Da : D(); this.consommer(ts.a);. 30/119
31 Code final de S() S a S AB b S AB d S Da e S Da # S AB private void S() throws... { if (this.tetelect.gettype() == TS.a this.tetelect.gettype() == TS.b this.tetelect.gettype() == TS.EOF) { A(); B(); // S -> AB } else if (this.tetelect.gettype() == TS.d this.tetelect.gettype() == TS.e) { D(); this.consommer(ts.a); // S -> Da } else throw new ParserException(); } Quand S() termine, pour un mot accepté, la tête de lecture est sur TS.EOF. 31/119
32 Code de A() La tête de lecture est déjà positionnée sur le symbole de prédiction. A a A aab b A ɛ d erreur e erreur # A ɛ private void A() throws... { if (this.tetelect.gettype() == TS.a)... // A -> aab else if (this.tetelect.gettype() == TS.b this.tetelect.gettype() == TS.EOF)... // A -> else // erreur throw new ParserException(); } 32/119
33 Code des productions de A() Code pour A aab : this.consommer(ts.a); A(); this.consommer(ts.b); Code pour A ɛ : le mot vide est immédiatement reconnu ; sans toucher à la tête de lecture ; on ne fait rien. 33/119
34 Code final de A() A a A aab b A ɛ d erreur e erreur # A ɛ private void A() throws... { if (this.tetelect.gettype() == TS.a) { // A -> aab this.consommer(ts.a); A(); this.consommer(ts.b); } else if (this.tetelect.gettype() == TS.b this.tetelect.gettype() == TS.EOF) // rien, A -> } else // erreur throw new ParserException(); } Quand A() termine, pour un mot accepté, la tête de lecture est positionnée pour reconnaître un B ou lire un b. 34/119
35 Code final de B() B a erreur b B bb d erreur e erreur # B ɛ private void B() throws... { if (this.tetelect.gettype() == TS.b) { // B -> bb this.consommer(ts.b); B(); } else if (this.tetelect.gettype() == TS.EOF) // rien, B -> } else // erreur throw new ParserException(); } 35/119
36 Code final de D() D a erreur b erreur d D dd e D e # erreur private void D() throws... { if (this.tetelect.gettype() == TS.d) { // D -> dd this.consommer(ts.d); D(); } else if (this.tetelect.gettype() == TS.e) // D -> e this.consommer(ts.e); else // erreur throw new ParserException(); } 36/119
37 Exemple d exécution Reconnaître abb#? 37/119
38 Principes Factorisation à gauche Suppression de la récursivité à gauche 38/119
39 Principes Factorisation à gauche Suppression de la récursivité à gauche 39/119
40 Outils pour l analyse prédictive, intuition - 1 Comment choisir entre S AB et S Da? Supposons que je sache que : AB ne permet de dériver que des mots préfixés par a ou par b ; AB au et AB bu, pour u V T ; Da ne permet de dériver que des mots préfixés par d ou par e ; Da du et Da eu, pour u V T. 40/119
41 Outils pour l analyse prédictive, intuition - 1 Maintenant je sais (partiellement) choisir entre S AB et S Da : si tête lecture {a, b} : choisir S AB ; si tête lecture {d, e} : choisir S Da. S a S AB b S AB d S Da e S Da #? 41/119
42 Ensemble Premier - définition On dit que Premier(AB) = {a, b} et Premier(Da) = {d, e}. Pour α (V T V N ) +, Premier(α) contient l ensemble des terminaux de V T susceptibles de commencer un mot de V T + dérivé de α. Si α = ɛ, cet ensemble est vide. Definition Soit une grammaire algébrique. On définit : Premier : (V T V N ) P(V T ) α {a V T α au, u V T } 42/119
43 Les Premier sur les arbres syntaxiques S S S A B A B A B a A b b B α (V T V N ) S S D D d D a e a Premier(α) 43/119
44 Calcul des Premier - 0 Soit α (V N V T ) : cas α = ɛ :? α = a, a V T :? α = aβ, a V T, β (V N V T ) :? α = X, X V N :? α = X β, X V N, β (V N V T ) :? fcas 44/119
45 Calcul des Premier - 1 Soit α (V N V T ) : cas α = ɛ : α = a, a V T : {a} α = aβ, a V T, β (V N V T ) : {a} α = X, X V N :? α = X β, X V N, β (V N V T ) :? fcas 45/119
46 Calcul de Premier(X ), X V N Si l ensemble des productions de membre gauche S est : alors on a : S AB Da Premier(S) = Premier(AB) Premier(Da) Cas général : Si la grammaire contient les productions de membre gauche X : X γ 1... γ n alorspremier(x ) = {Premier(γ i ) X γ i P} 46/119
47 Calcul des Premier - 2 Soit α (V N V T ) : cas α = ɛ : α = a, a V T : {a} α = aβ, a V T, β (V N V T ) : {a} α = X, X V N : {Premier(γ i ) X γ i P} α = X β, X V N, β (V N V T ) :? fcas 47/119
48 Calcul des Premier, α = X β, X V N Deux cas selon que X peut s effacer ou non : X ɛ? Si X ɛ on dit que X est ɛ-productif : X ɛ-prod 48/119
49 Calcul des Premier, α = X β, X ɛ-prod - exemple Par exemple D ɛ-productif : S S D dd e D D alors Premier(Da) = Premier(D) d D a e a Donc, si X ɛ-prod, Premier(X β) = Premier(X ) 49/119
50 Calcul des Premier, α = X β, X ɛ-prod - exemple Par exemple A ɛ-productif : A ɛ aab Premier(AB) = Premier(A) Premier(B) Premier(ABS) = Premier(A) Premier(BS) a A A S b S B A B B b Donc, si X ɛ alors Premier(X β) = Premier(X ) Premier(β) 50/119
51 Calcul des Premier Principes Soit α (V N V T ) : cas fcas α = ɛ : α = a, a V T : {a} α = aβ, a V T, β (V N V T ) : {a} α = X, X V N : {Premier(γ i ) X γ i P} α = X β, X V N \ ɛ-prod, β (V N V T ) : Premier(X ) α = X β, X V N ɛ-prod, β (V N V T ) : Premier(X ) Premier(β) 51/119
52 Calcul effectif des ensembles Premier On procède en deux étapes : 1. on pose un système d équations pour Premier ; 2. on calcule par itération de point fixe les plus petits ensembles qui satisfont ces équations. Pour le moment on suppose donné ɛ-prod, l ensemble des ɛ-productifs. 52/119
53 Exemple Principes S AB Da A aab ɛ B bb ɛ D dd e ɛ-prod = {A, B, S} Premier(S) =? Premier(A) =? Premier(B) =? Premier(D) =? α = ɛ : α = a, a V T : {a} α = aβ, a V T, β (V N V T ) : {a} α = X, X V N : {Premier(γi ) X γ i P} α = X β, X V N \ɛ-prod, β (V N V T ) : Premier(X ) α = X β, X V N ɛ-prod, β (V N V T ) : Premier(X ) Premier(β) 53/119
54 Exemple Principes Premier(S) = Premier(A) Premier(B) Premier(D) Premier(A) = {a} Premier(B) = {b} Premier(D) = {d, e} D où Premier(S) = {a, b, d, e} Premier(A) = {a} Premier(B) = {b} Premier(D) = {d, e} Premier(AB) = {a, b} Premier(Da) = {d, e} Premier(aAb) = {a} Premier(bB) = {b} Premier(dD) = {d} Premier(e) = {e} Premier(ɛ) = 54/119
55 Exemple : remplissage de la table A aab et Premier(aAb) = {a} A ɛ et Premier(ɛ) = S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur 55/119
56 Exemple : remplissage de la table S AB et Premier(AB) = {a, b} S Da et Premier(Da) = {d, e} S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur 56/119
57 Remarque : résolution du système Premier(S) = Premier(A) Premier(B) Premier(D) Premier(A) = {a} Premier(B) = {b} Premier(D) = {d, e} Se résoud sans itération de point fixe : système d équations non récursif. Ce n est pas toujours le cas. 57/119
58 Résolution du système : autre exemple S S 1 S 2 a S 1 S b S 2 c Premier(S) = Premier(S 1 ) {a} Premier(S 1 ) = Premier(S) {b} Premier(S 2 ) = {c} iter Premier(S) Premier(S 1 ) Premier(S 2 ) 0 1 {a} {b} {c} 2 {a, b} {b, a} {c} 3 {a, b} {b, a} {c} stabilisation 58/119
59 Principes Factorisation à gauche Suppression de la récursivité à gauche 59/119
60 Définition des ɛ-prod Definition Un non terminal X V N est dit ɛ-productif si X ɛ. L ensemble des ɛ-productif est ɛ-prod. X est ɛ-productif si la grammaire contient la production : X ɛ ; ou X Y 1 Y 2... Y n telle que l ensemble des non-terminaux {Y 1, Y 2,..., Y n } V N ne contient que des non-terminaux ɛ-productifs. Algorithme de calcul similaire à celui qui calcule les productifs. 60/119
61 Exemple Principes S AB Da A aab ɛ B bb ɛ D dd e ɛ-prod? 61/119
62 Principes Factorisation à gauche Suppression de la récursivité à gauche 62/119
63 Outils pour l analyse prédictive, intuition - 2 Pour choisir entre S AB et S Da : si tête lecture {a, b} : choisir S AB ; si tête lecture {d, e} : choisir S Da. Et si la tête de lecture est #? # Premier(AB) Premier(Da). Comment choisir entre A aab et A ɛ? Premier(ɛ) = les ensembles Premier ne suffisent pas. 63/119
64 , intuition Quand appliquer A ɛ? Quand la tête de lect. correspond à un terminal qui peut suivre A. A S A A B a b b Suivant(A) Suivant(A) Premier(B) 64/119
65 , intuition On a donc b Suivant(A) A a A aab b A ɛ d? e? #? 65/119
66 , intuition Pour α (V T V N ) +, Suivant(α) contient l ensemble des terminaux de V T susceptibles de suivre α dans un mot de V T + dérivé de l axiome S. Si α = ɛ, cet ensemble est vide. Par convention, Suivant(S) {#}. 66/119
67 , définitions équivalentes Definition Soit une grammaire algébrique d axiome S. On définit : Suivant : (V T V N ) P(V T ) α {a V T S βαaγ, pour β, γ (V N V T ) } Definition Suivant : (V T V N ) P(V T ) α {a Premier(γ) S βαγ, pour β, γ (V N V T ) } 67/119
68 Calcul des Suivant - 1 Pour calculer Suivant(X ), on regarde les productions dans lesquelles X apparaît en partie droite (différent du calcul des Premier). Pour Suivant(A) : A aab A S AB S A A B a b 68/119
69 Calcul des Suivant - 2 Soit P X P l ensemble des productions p dans lesquelles X apparaît en partie droite : Suivant(X ) = p P X Suivant p (X ) Ex : P A = {S AB, A aab} Suivant(A) = Suivant(A) S AB Suivant(A) A aab 69/119
70 Calcul des Suivant, cas de l axiome Pour l axiome, on ajoute le marqueur de fin de mot : Ex : pour X axb ɛ Suivant(S) = {#} p P S Suivant p (S) P X = {X ax b} Suivant(X ) = {#} Suivant(X ) X ax b 70/119
71 Calcul des Suivant exemple Suivant(A) S AB? (exemple précédent) Cas déjà vu : S A B Suivant(A) Premier(B) 71/119
72 Calcul des Suivant exemple Suivant(A) S AB? (exemple précédent) mais B est ɛ-prod! S A B Suivant(A) Suivant(S) 72/119
73 Calcul des Suivant exemple Puisque B est ɛ-prod : Suivant(A) S AB = Premier(B) Suivant(S) 73/119
74 Calcul des Suivant - 4 Quand une production est de la forme... X α : pour calculer Suivant(X ) ; Il faut pouvoir dire si α (V N V T ) est ɛ-productif ou pas. Definition α (V N V T ) est ɛ-productif si α ɛ. On définit la fonction : Eps : (V N V T ) {vrai, faux} α α est ɛ-productif On verra après comment calculer Eps. 74/119
75 Calcul des Suivant - 5 Pour calculer Suivant p (X ) avec : p = Y αx β et Eps(β) = faux, α, β (V N V T ) Y X β Suivant p (X ) = Premier(β) Ex : pour Y Xb, Suivant(X ) Y Xb = {b}. 75/119
76 Calcul des Suivant - 6 Pour calculer Suivant p (X ) avec : p = Y αx Y α X Suivant p (X ) = Suivant(Y ) 76/119
77 Calcul des Suivant - 7 Pour calculer Suivant p (X ) avec : p = Y αx β et Eps(β) = vrai, α, β (V N V T ) Y X β Suivant p (X ) = Premier(β) Suivant(Y ) Ex : pour S AB, Suivant(A) S AB = Premier(B) Suivant(S). 77/119
78 Remarque - 1 Principes Si X apparaît plusieurs fois en partie droite d une production, il faut prendre en compte toutes ses occurrences dans le calcul de Suivant(X ). Ex : Y X ax ax c Suivant Y X ax ax c (X ) = {a, c} 78/119
79 Remarque - 2 Principes Pourquoi pas Suivant(X ) Y X β = Premier(β) Suivant(β)? Parce que Suivant(Y ) Suivant(β). Ex : S Y Z Y X 1 X 2 X 1 a X 2 ɛ b Z X 2 c Suivant(S) = {#} Suivant(Y ) = Suivant(S) = {#} Suivant(Z) = Suivant(S) = {#} Suivant(X 2 ) = {c} Suivant(Y ) = {c, #} Suivant(X 1 ) = Premier(X 2 ) Suivant(Y ) 79/119
80 Calcul des Suivant, récapitulons! # Suivant(axiome) Soit P X P l ensemble des productions p dans lesquelles X apparaît en partie droite : Suivant(X ) = p P X Suivant p (X ) avec : Suivant p (X ) = cas p = Y αx : Suivant(Y ) p = Y αx β et Eps(β) = faux : Premier(β) p = Y αx β et Eps(β) = vrai : Premier(β) Suivant(Y ) fincas 80/119
81 Calcul effectif des ensembles Suivant On procède en deux étapes : on pose un système d équations pour Suivant ; on calcule par itération de point fixe les plus petits ensembles qui satisfont ces équations. avec initialement Suivant(S) = {#}, et pour les autres non-terminaux Suivant(X ) =. 81/119
82 Exemple Principes S AB Da A aab ɛ B bb ɛ D dd e Eps(B) = vrai Suivant? # Suivant(axiome) Suivant(X ) = p P X Suivant p (X ) avec : Suivant p (X ) = cas p = Y αx : Suivant(Y ) p = Y αx β et Eps(β) = faux : Premier(β) p = Y αx β et Eps(β) = vrai : Premier(β) Suivant(Y ) fincas 82/119
83 Exemple de remplissage de table A ɛ et Suivant(A) = {b, #} S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur 83/119
84 Exemple de remplissage de table S AB et Suivant(S) = {#} S A B D a S AB A aab erreur erreur b S AB A ɛ B bb erreur d S Da erreur erreur D dd e S Da erreur erreur D e # S AB A ɛ B ɛ erreur 84/119
85 Calcul des ɛ-productifs On connaît déjà ɛ-prod, ens. des non-terminaux ɛ-productifs. Pour calculer Eps(α) : Eps(α) = cas α = ɛ : vrai α = X 1... X n, n 1 avec {X 1,..., X n } V N et {X 1,..., X n } ɛ-prod : vrai autre : faux // α contient un terminal fincas 85/119
86 Exemple Principes Sachant que ɛ-prod = {A, B, S} : Eps(Da)? Eps(AB)? Eps(ɛ)? Eps(B)? 86/119
87 Principes Factorisation à gauche Suppression de la récursivité à gauche 87/119
88 Table d analyse : au préalable On calcule : les ɛ-productifs ; les ensembles Premier ; les ensembles Suivant. 88/119
89 Remplissage de la table Entrée : une gram. alg. G, ses ensembles Premier et Suivant Sortie : la table d analyse Table pour toute production X γ P faire pour tout a Premier(γ) faire ajouter X γ à Table[X, a] fait si Eps(γ) = vrai alors pour tout b Suivant(X ) faire Table[X, b] = X γ fait finsi fait Ajouter erreur dans les entrées de Table restées vides 89/119
90 Exemple Principes S AB : Premier(AB) = {a, b} ; Eps(AB) = vrai ; Suivant(S) = {#}. S Da : Premier(Da) = {d, e} ; Eps(Da) = faux. Rien à compléter par erreur. S a S AB b S AB d S Da e S Da # S AB 90/119
91 Exemple Principes A aab : Premier(aAb) = {a} ; Eps(aAb) = faux. A ɛ : Premier(ɛ) = ; Eps(ɛ) = vrai ; Suivant(A) = {b, #}. On complète par erreur. A a A aab b A ɛ d erreur e erreur # A ɛ 91/119
92 Principes Factorisation à gauche Suppression de la récursivité à gauche 92/119
93 Analyseur LL(1) Un analyseur LL(1) est déterministe et piloté par le sommet de pile : si terminal a : lecture de a (ou erreur) ; si non terminal X avec a sous la tête de lecture : expansion selon Table[X, a]. Et si Table[X, a] contient plus d une production? Non-déterminisme : la grammaire n est pas LL(1) ; on ne peut pas appliquer une analyse LL(1). 93/119
94 Caractérisation par table d analyse : une grammaire est LL(1) si chaque case contient exactement une production ou erreur. Caractérisation par contre-exemple : une grammaire n est pas LL(1) s il existe 2 productions X α et X β telles que : 1. soit Premier(α) Premier(β) ; Ex : S as A, A a 2. soit Eps(α) = vrai et Premier(β) Suivant(X ) ; Ex : S as Ab, A ɛ b 3. soit Eps(α) = vrai et Eps(β) = vrai (la grammaire est ambiguë) Ex : S A B, A ɛ, B ɛ 94/119
95 LL(1) et ambiguïté Une grammaire LL(1) n est pas ambiguë. Une grammaire ambiguë n est pas LL(1). 95/119
96 Cas classiques non LL(1) Dans les cas suivants, la grammaire n est pas LL(1) : ambiguïté ; récursivité gauche : A Aa ɛ ; intuitivement récursivité infinie de A(). non factorisation gauche : S aa ab Solutions : : factorisation à gauche (parfois) ; suppression de la récursivité gauche (parfois) ; utiliser un générateur de parser plus puissant! 96/119
97 Factorisation à gauche Suppression de la récursivité à gauche Principes Factorisation à gauche Suppression de la récursivité à gauche 97/119
98 Factorisation à gauche Suppression de la récursivité à gauche Principes Factorisation à gauche Suppression de la récursivité à gauche 98/119
99 Factorisation à gauche : exemple - 1 Factorisation à gauche Suppression de la récursivité à gauche Les listes d identificateur de Init : listeident IDENT IDENT SEPVAR listeident On factorise IDENT et on obtient : listeident IDENT suitelisteident suitelisteident ɛ SEPVAR listeident 99/119
100 Factorisation à gauche : exemple - 2 Factorisation à gauche Suppression de la récursivité à gauche X ab abbx abbbx Factorisation de ab : on prend le plus grand préfixe commun. X aby Y ɛ bx bbx Puis à nouveau factorisation de b. 100/119
101 Factorisation à gauche Suppression de la récursivité à gauche Factorisation à gauche - algorithme On remplace les règles de la forme : où X αβ 1... αβ n γ 1... γ m α (V T V N ) + et β i, γ j (V T V N ) ; le préfixe commun α est choisi le plus grand possible ; α n est pas préfixe de γ j. par les règles : X αx γ 1... γ m X β 1... β n où X est un nouveau non-terminal. On réitère ce processus tant que nécessaire. 101/119
102 Factorisation à gauche Suppression de la récursivité à gauche Principes Factorisation à gauche Suppression de la récursivité à gauche 102/119
103 Factorisation à gauche Suppression de la récursivité à gauche Suppression de la récursivité à gauche Récursivité gauche : immédiate : production A Aα, α (V T V N ) + ; générale : il existe une dérivation A Aα, α (V T V N ) +. Il est possible de supprimer les deux cas. On ne verra que la récursivité immédiate. 103/119
104 Factorisation à gauche Suppression de la récursivité à gauche Suppression de la récursivité gauche immédiate On remplace les règles de la forme où X X α 1... X α n β 1... β m α i (V T V N ) + et β j (V T V N ) ; les β j ne commencent pas par X. par les règles : X β 1 X... β m X X α 1 X... α n X ɛ où X est un nouveau non-terminal. 104/119
105 Factorisation à gauche Suppression de la récursivité à gauche Suppression de la récursivité gauche : exemple Grammaire non ambiguë des expressions arithmétiques : E E + T T T T F F F i (E) X X α 1... X α n β 1... β m Après suppression de la rec gauche : E TE E +TE ɛ T FT T FT ɛ F i (E) X β 1 X... β m X X α 1 X... α n X ɛ 105/119
106 Factorisation à gauche Suppression de la récursivité à gauche Parfois ça ne suffit pas La grammaire ({a, b}, {S, A}, S, P) avec P = {S asb A, A aa ɛ} n est pas ambiguë ; n est pas récursive gauche ; est factorisée à gauche ; mais elle n est pas LL(1). 106/119
107 Au delà des grammaires LL(1) - 1 Factorisation à gauche Suppression de la récursivité à gauche La grammaire ({a, b}, {A, B}, A, P) avec P = {A abb ɛ, B Aaa b} n est pas LL(1). En effet Eps(A) = vrai et a Premier(A) Suivant(A). 107/119
108 Principes Factorisation à gauche Suppression de la récursivité à gauche 108/119
109 Grammaires LL(k), exemple La grammaire : n est pas LL(1). declaration DECLINT listeident FININSTR listeident IDENT IDENT SEPVAR listeident Elle est LL(2), et acceptée par un analyseur LL(k). En regardant 2 symboles sous la tête de lecture : si IDENT FININSTR : choisir listeident IDENT si IDENT SEPVAR : choisir listeident IDENT SEPVAR listeident 109/119
110 Grammaire LL(k), autre exemple P = {A abb ɛ, B Aaa b} Cette grammaire est LL(2) : Premier 2 (A) = {ab} Premier 2 (B) = {ab, aa, b} Suivant 2 (A) = {aa, #} 110/119
111 Table d analyse LL(2) A abb ɛ B Aaa b aa ab b # A A ɛ A abb erreur A ɛ B B Aaa B Aaa B b erreur 111/119
112 Analyseurs LL(k), principe Effectuent une prédiction basée sur k symboles. k borné. Ex : javacc 112/119
113 Insuffisance de l approche LL(k), [antlr] method type ID [ args ] ; type ID [ args ] { body } args unarg unarg, args unarg INT ID... Cette grammaire n est pas LL(k), mais est acceptée par antlr. 113/119
114 Analyseurs LL(*) Ne fixent pas une taille de look-ahead a priori. Représentent par un AFD le langage de look-ahead, pourvu qu il soit régulier. 114/119
115 Vers les formes ebnf Même un analyseur LL(*) refuse la récursivité gauche. Fâcheux pour les grammaires à opérateurs! Solution : grammaires dites en forme ebnf. E T ( + T ) * T F ( * T ) * F ( E ) id E E + T T T F * T F F ( E ) id 115/119
116 Grammaires sous forme ebnf Grammaires algébriques avec facilités d écriture. En partie droite de production : opérateurs à la expression régulière Refusé par Cup et tout générateur de parseur n acceptant pas les ebnf Accepté par la majorité des analyeurs LL(k). Semble plus simple, attention à l attribution. Ne pas utiliser en DS sauf si explicitement demandé. 116/119
117 Grammaires non LL(*) [antlr] s : label ID = expr label return expr ; label : ID : label ; n est pas LL(*) : [fatal] rule s has non-ll(*) decision due to recursive rule invocations from alts 1,2. [...] Version LL(*) : label : ( ID : )* 117/119
118 Génération de code à la ebnf E T ( + T ) * E() { T(); tant que tetelect est + { consommer(+); T(); } } Clôture de Kleene itération dans le code 118/119
119 Génération de code à la ebnf listea a* listea() { tant que tetelect est a { consommer(a); } } plus efficace que le code récursif généré par : listea a listea ɛ 119/119
120 AntLR Outil très riche. Décrit dans le même formalisme ebnf les entités lexicales et la syntaxe. Lit toute l entrée avant de lancer l analyse lexicale. 120/119
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é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étailCompilation. Algorithmes d'analyse syntaxique
Compilation Algorithmes d'analyse syntaxique Préliminaires Si A est un non-terminal et γ une suite de terminaux et de non-terminaux, on note : A γ si en partant de A on peut arriver à γ par dérivations
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é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étailTravaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
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étailReprésentation d un entier en base b
Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir
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étailCours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
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étailCours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
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
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é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étailProjet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte
Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes
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étailExercices - Polynômes : corrigé. Opérations sur les polynômes
Opérations sur les polynômes Exercice 1 - Carré - L1/Math Sup - Si P = Q est le carré d un polynôme, alors Q est nécessairement de degré, et son coefficient dominant est égal à 1. On peut donc écrire Q(X)
Plus en détailCours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Plus en détailLes algorithmes de base du graphisme
Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............
Plus en détailRésolution de systèmes linéaires par des méthodes directes
Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.
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étailV- Manipulations de nombres en binaire
1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,
Plus en détailSouad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/
Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation
Plus en détailArithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
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étailPour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Plus en détailArchitecture des ordinateurs TD1 - Portes logiques et premiers circuits
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice
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étailInformatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur
Université Paris-Sud Licence d Informatique Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur Adresse de l auteur : LIX École Polytechnique
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étailTp 1 correction. Structures de données (IF2)
Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que
Plus en détailAlgorithme. Table des matières
1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............
Plus en détailRappels sur les suites - Algorithme
DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................
Plus en détail1 Lecture de fichiers
Programmation 1 Cours n 6 GB3, 2 nd semestre 2014-2015 Cours de Python Gilles Bernot 1 Lecture de fichiers Un fichier est une suite de caractères mémorisés sur le disque dur de la machine dans un endroit
Plus en détailDe même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que
Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer
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étailLES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN
LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas
Plus en détailProgrammation linéaire
1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit
Plus en détailLimites finies en un point
8 Limites finies en un point Pour ce chapitre, sauf précision contraire, I désigne une partie non vide de R et f une fonction définie sur I et à valeurs réelles ou complees. Là encore, les fonctions usuelles,
Plus en détailProbabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12
Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont
Plus en détailLicence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...
Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez
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étailInitiation à l algorithmique
Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -
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étailTP 2 Réseaux. Adresses IP, routage et sous-réseaux
TP 2 Réseaux Adresses IP, routage et sous-réseaux C. Pain-Barre INFO - IUT Aix-en-Provence version du 24/2/2 Adressage IP. Limites du nombre d adresses IP.. Adresses de réseaux valides Les adresses IP
Plus en détailGrandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test
Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite
Plus en détailLicence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
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étailAlgorithmes récursifs
Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément
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étailDOCM 2013 http://docm.math.ca/ Solutions officielles. 1 2 10 + 1 2 9 + 1 2 8 = n 2 10.
A1 Trouvez l entier positif n qui satisfait l équation suivante: Solution 1 2 10 + 1 2 9 + 1 2 8 = n 2 10. En additionnant les termes du côté gauche de l équation en les mettant sur le même dénominateur
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é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 Master Recherche
Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction
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étailReprésentation des Nombres
Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...
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étailDéfinitions. Numéro à préciser. (Durée : )
Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.
Plus en détailEncryptions, compression et partitionnement des données
Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des
Plus en détailFondements de l informatique Logique, modèles, et calculs
Fondements de l informatique Logique, modèles, et calculs Cours INF423 de l Ecole Polytechnique Olivier Bournez Version du 20 septembre 2013 2 Table des matières 1 Introduction 9 1.1 Concepts mathématiques........................
Plus en détailChapitre 1 I:\ Soyez courageux!
Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel
Plus en détailÉvaluation et implémentation des langages
Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation
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é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étailCorrigé des TD 1 à 5
Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un
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étailCalcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.
1 Définitions, notations Calcul matriciel Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes. On utilise aussi la notation m n pour le
Plus en détailCorrigé des exercices sur les références
Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile
Plus en détailC++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit
Plus en détailChapitre 2 Le problème de l unicité des solutions
Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)
Plus en détailEXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG
Exploitations pédagogiques du tableur en STG Académie de Créteil 2006 1 EXPLOITATIONS PEDAGOGIQUES DU TABLEUR EN STG Commission inter-irem lycées techniques contact : dutarte@club-internet.fr La maquette
Plus en détailChapitre VI- La validation de la composition.
Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions
Plus en détailCH.6 Propriétés des langages non contextuels
CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le
Plus en détailIngénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau
labsticc.univ-brest.fr/pages_perso/babau/ Ingénierie Dirigée par les Modèles Editeurs de modèles (Eclipse Modeling Tools) Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC
Plus en détailOptimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications
Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications A. Optimisation sans contrainte.... Généralités.... Condition nécessaire et condition suffisante
Plus en détailLangage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes
Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition
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étailUEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.
UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases
Plus en détailExercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT
Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,
Plus en détailManuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2
éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........
Plus en détailExo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.
Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3
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étailCours de Systèmes d Exploitation
Licence d informatique Synchronisation et Communication inter-processus Hafid Bourzoufi Université de Valenciennes - ISTV Introduction Les processus concurrents s exécutant dans le système d exploitation
Plus en détailChapitre 2. Eléments pour comprendre un énoncé
Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailInformatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
Plus en détailInitiation à la Programmation en Logique avec SISCtus Prolog
Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées
Plus en détail* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours
Exo7 Continuité (étude globale). Diverses fonctions Exercices de Jean-Louis Rouget. Retrouver aussi cette fiche sur www.maths-france.fr * très facile ** facile *** difficulté moyenne **** difficile *****
Plus en détailDéfinition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS = 7 10 1 + 5 10 2 + 2 10 3
8 Systèmes de numération INTRODUCTION SYSTÈMES DE NUMÉRATION POSITIONNELS Dans un système positionnel, le nombre de symboles est fixe On représente par un symbole chaque chiffre inférieur à la base, incluant
Plus en détailStructures algébriques
Structures algébriques 1. Lois de composition s Soit E un ensemble. Une loi de composition interne sur E est une application de E E dans E. Soient E et F deux ensembles. Une loi de composition externe
Plus en détailReprésentation géométrique d un nombre complexe
CHAPITRE 1 NOMBRES COMPLEXES 1 Représentation géométrique d un nombre complexe 1. Ensemble des nombres complexes Soit i le nombre tel que i = 1 L ensemble des nombres complexes est l ensemble des nombres
Plus en détailLe langage SQL Rappels
Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,
Plus en détailIMAGES NUMÉRIQUES MATRICIELLES EN SCILAB
IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB Ce document, écrit par des animateurs de l IREM de Besançon, a pour objectif de présenter quelques unes des fonctions du logiciel Scilab, celles qui sont spécifiques
Plus en détailAlgorithmique et Programmation Fonctionnelle
Algorithmique et Programmation Fonctionnelle RICM3 Cours 9 : Lambda-calcul Benjamin Wack Polytech 2014-2015 1 / 35 La dernière fois Typage Polymorphisme Inférence de type 2 / 35 Plan Contexte λ-termes
Plus en détailIII- Raisonnement par récurrence
III- Raisonnement par récurrence Les raisonnements en mathématiques se font en général par une suite de déductions, du style : si alors, ou mieux encore si c est possible, par une suite d équivalences,
Plus en détailLogique. Plan du chapitre
Logique Ce chapitre est assez abstrait en première lecture, mais est (avec le chapitre suivant «Ensembles») probablement le plus important de l année car il est à la base de tous les raisonnements usuels
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étailLes indices à surplus constant
Les indices à surplus constant Une tentative de généralisation des indices à utilité constante On cherche ici en s inspirant des indices à utilité constante à définir un indice de prix de référence adapté
Plus en détailOutils logiciels pour la combinaison de vérification fonctionnelle et d évaluation de performances au sein de CADP
Outils logiciels pour la combinaison de vérification fonctionnelle et d évaluation de performances au sein de CADP Christophe Joubert Séminaire VASY 2002 30 Octobre 2002 Aix les Bains Contexte du projet
Plus en détail