Analyse descendante. Avec tous mes remerciements à Mirabelle Nebut pour son excellent cours de COMPIL
|
|
- Yvette Joly
- il y a 6 ans
- Total affichages :
Transcription
1 Analyse (lexicale, syntaxique) L3 MIAGE Analyse descendante Avec tous mes remerciements à Mirabelle Nebut pour son excellent cours de COMPIL Université de Lille, France
2 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
3 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
4 Déterministe Méthodes déterministes : grammaire non ambiguë algorithme linéraire en nombre de lexèmes lus pas de retour en arrière/explorations de plusieurs dérivations potentielles unique exécution de l analyseur sur un mot certitude sur l acceptation ou le refus du mot applicable uniquement pour une sous classe restrainte de grammaires algébriques Il existe des méthodes non déterministes pour traiter des classes de grammaires plus générales hors cours.
5 Descendante et Ascendante Il y a deux méthodes classique d analyse déterministes : 1 descendante (LL) : construction de l arbre de la racine vers les feuilles parcours préfixé : racine en premier prédiction des productions à appliquer en fonction du lexème courant : construire les noeuds dont les fils ont pu être prédits dérivation gauche écriture manuelle ou génération automatique d analyseurs 2 ascendante (LR, LALR) : construction de l arbre des feuilles vers la racine parcours postfixé : racine en dernier association des lexèmes d entrée pour déterminer les productions appliquées : trouver et construire les noeuds dont les tous les fils sont déjà construits dérivation droite génération automatique d analyseur : + complexe à la main
6 Gestion des erreurs Souvent quand on trouve une erreur la partie qui pose problème est passée depuis longtemps (e.g. mauvais parenthésage) On s arrête dès la première erreur? une compilation pour résoudre chaque erreur... Deux modes de gestion : récupération d erreur : ignorer l erreur, essayer de continuer réparation d erreur : ajouter/retirer ce qui a l air de manquer, essayer de continuer risque de provoquer d autres erreurs plus loin Gérer les erreurs : pas toujours facile, utile dans un vrai compilateur, pas vraiment l objectif du cours
7 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
8 Analyse descendante LL(k) construction de l arbre de l axiome (racine) vers les symboles terminaux (feuilles) prédiction de la production à appliquer en fonction des k prochains lexèmes dérivation gauche : traiter toujours le non terminal le plus à gauche traiter les lexèmes de gauche à droite prédictions grâce à la table d analyse de la grammaire LL(1) : prédiction grâce au seul lexème courant qui doit toujours être défini marqueur de fin de mot #
9 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. b.. d..
10 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb b.. d..
11 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb : pas le choix prédiction! b.. d..
12 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb : pas le choix prédiction! b.. il faut S AB ɛb bb d..
13 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da A aab ɛ B bb ɛ D dd e Quelle dérivation gauche pour... a.. il faut S AB aabb : pas le choix prédiction! b.. il faut S AB ɛb bb d.. il faut S Da dda
14 Principe de la table d analyse Soit la grammaire G = {T, N, S, R} avec : T = {a, b, d, e}; N = {S, A, B, D} ; R contient les productions : S AB Da B bb ɛ Quelle dérivation gauche pour... A aab ɛ D dd e a.. il faut S AB aabb : pas le choix prédiction! b.. il faut S AB ɛb bb d.. il faut S Da dda La table donne pour chaque non terminal quelle production doit nécessairement être appliquée pour obtenir le lexème courant.
15 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
16 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 N ; chaque ligne est indicée par un terminal T ou # ; chaque case contient une unique production R ou erreur. On verra plus tard comment remplir cette table. déterministe
17 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 Interprétation de Table[a, X] et si le lexème courant est le terminal a T si le non-terminal en cours de traitement est X N = X est la racine du sous arbre syntaxique en construction alors on consulte Table[a, X]. Si Table[X, a] contient X γ alors on choisit cette production pour construire les fils du noeud X dans l arbre syntaxique en construction erreur alors erreur de syntaxe : X et a ne s accordent pas.
19 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
20 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 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 T #.
21 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.
22 Collaboration avec un analyseur lexical On utilises les notations : 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 lexcur ; retourne le symbole lu, de type Symbole. on remplace le marqueur # par TS.EOF.
23 Construction de l analyseur syntaxique... public class Parser { // analyseur lexical private Scanner anlex; // symbole courant reçu de l analyseur lexical private Symbole lexcur; public Parser (Scanner anlex) { this.anlex = anlex; }...
24 Lancement de l analyseur syntaxique Dans la classe Parser : public void analyser() throws ScannerException, ParserException { // positionnement tete de lecture this.lexcur = (Symbole) this.anlex.next_token(); this.s(); // je veux reconnaître l axiome // et uniquement l axiome if (this.lexcur.gettype()!= TS.EOF) throw new ParserException(); }
25 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.lexcur.gettype() == TS.a)... // S -> AB else if (this.lexcur.gettype() == TS.b)... // S -> AB else if (this.lexcur.gettype() == TS.d)... // S -> Da else if (this.lexcur.gettype() == TS.e)... // S -> Da else if (this.lexcur.gettype() == TS.EOF)... // S -> AB else throw new ParserException(); }
26 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.lexcur.gettype() == TS.a } this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF)... // S -> AB else if (this.lexcur.gettype() == TS.d this.lexcur.gettype() == TS.e)... // S -> Da else throw new ParserException();
27 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.
28 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.lexcur.gettype() == type) this.lexcur = (Symbole) this.anlex.next_token(); else throw new ParserException(); Code pour S Da : D(); this.consommer(ts.a);.
29 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.lexcur.gettype() == TS.a this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF) { // S -> AB A(); B(); } else if (this.lexcur.gettype() == TS.d this.lexcur.gettype() == TS.e) { // S -> Da D(); this.consommer(ts.a); } else throw new ParserException(); } Quand S() termine, pour un mot accepté, la tête de lecture est sur TS.EOF.
30 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.lexcur.gettype() == TS.a)... // A -> aab else if (this.lexcur.gettype() == TS.b this.lexcur.gettype() == TS.EOF)... // A -> else // erreur throw new ParserException(); }
31 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.
32 Code final de A() A a A aab b A ɛ d erreur e erreur # A ɛ private void A() throws... { if (this.lexcur.gettype() == TS.a) { // A -> aab this.consommer(ts.a); A(); this.consommer(ts.b); } else if (this.lexcur.gettype() == TS.b this.lexcur.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.
33 Code final de B() B a erreur b B bb d erreur e erreur # B ɛ private void B() throws... { if (this.lexcur.gettype() == TS.b) { // B -> bb this.consommer(ts.b); B(); } } else if (this.lexcur.gettype() == TS.EOF) { // rien, B -> } else // erreur throw new ParserException();
34 Code final de D() D a erreur b erreur d D dd e D e # erreur private void D() throws... { if (this.lexcur.gettype() == TS.d) { // D -> dd this.consommer(ts.d); D(); } } else if (this.lexcur.gettype() == TS.e) { // D -> e this.consommer(ts.e); } else // erreur throw new ParserException();
35 Exemple d exécution Reconnaître abb#?
36 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
37 Ensembles Premier 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
38 Ensembles Premier 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 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 T.
39 Ensembles Premier 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 #?
40 Ensembles Premier Ensemble Premier - définition On dit que Premier(AB) = {a, b} et Premier(Da) = {d, e}. Pour α (T N) +, Premier(α) contient l ensemble des terminaux de T susceptibles de commencer un mot de T + dérivé de α. Si α = ɛ, cet ensemble est vide. Definition Soit une grammaire algébrique. On définit : Premier : (T N) P(T ) α {a T α au, u T }
41 Ensembles Premier Les Premier sur les arbres syntaxiques S S S A B A B A B A B a b b α (T N) S S D D d D a e a Premier(α)
42 Ensembles Premier Calcul des Premier - 0 Soit α (N T ) : cas α = ɛ :? α = a, a T :? α = aβ, a T, β (N T ) :? α = X, X N :? α = Xβ, X N, β (N T ) :? fcas
43 Ensembles Premier Calcul des Premier - 1 Soit α (N T ) : cas α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N :? α = Xβ, X N, β (N T ) :? fcas
44 Ensembles Premier Calcul de Premier(X), X N Si l ensemble des productions de membre gauche S est : S AB Da alors on a : Premier(S) = Premier(AB) Premier(Da) Cas général : Si la grammaire contient les productions de membre gauche X : X γ 1... γ n alors : Premier(X) = i=1...n{premier(γ i ) X γ i R}
45 Ensembles Premier Calcul des Premier - 2 Soit α (N T ) : cas α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N : {Premier(γ i ) X γ i R} α = Xβ, X N, β (N T ) :? fcas
46 Ensembles Premier Calcul des Premier, α = Xβ, X N Deux cas selon que X peut "s effacer" ou non : X ɛ? Si X ɛ on dit que X est ɛ-productif : X ɛ-prod
47 Ensembles Premier 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)
48 Ensembles Premier Calcul des Premier, α = Xβ, X ɛ-prod - exemple Par exemple A ɛ-productif : A ɛ aab Premier(AB) = Premier(A) Premier(B) A S S B A B a A b b B Donc, si X ɛ alors Premier(X β) = Premier(X) Premier(β)
49 Ensembles Premier Calcul des Premier Soit α (N T ) : cas α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N : {Premier(γ i ) X γ i R} α = Xβ, X N\ɛ-Prod, β (N T ) : Premier(X) α = Xβ, X N ɛ-prod, β (N T ) : Premier(X) Premier(β) fcas
50 Ensembles Premier 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.
51 Ensembles Premier Exemple S AB Da A aab ɛ B bb ɛ D dd e ɛ-prod = {A, B, S} Premier(S) =? Premier(A) =? Premier(B) =? Premier(D) =? α = ɛ : α = a, a T : {a} α = aβ, a T, β (N T ) : {a} α = X, X N : {Premier(γ i ) X γ i R} α = Xβ, X N\ɛ-Prod, β (N T ) : Premier(X) α = Xβ, X N ɛ-prod, β (N T ) : Premier(X) Premier(β)
52 Ensembles Premier Exemple 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(ɛ) =
53 Ensembles Premier 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
54 Ensembles Premier 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
55 Ensembles Premier 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.
56 Ensembles Premier 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
57 Ensemble des ɛ-prod 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
58 Ensemble des ɛ-prod Définition des ɛ-prod Definition Un non terminal X 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 } N ne contient que des non-terminaux ɛ-productifs. Algorithme de calcul similaire à celui qui calcule les productifs.
59 Ensemble des ɛ-prod Exemple S AB Da A aab ɛ B bb ɛ D dd e ɛ-prod?
60 Ensembles Suivant 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
61 Ensembles Suivant 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.
62 Ensembles Suivant Ensembles Suivant, 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)
63 Ensembles Suivant Ensembles Suivant, intuition On a donc b Suivant(A) A a A aab b A ɛ d? e? #?
64 Ensembles Suivant Ensembles Suivant, intuition Pour α (T N) +, Suivant(α) contient l ensemble des terminaux de T susceptibles de suivre α dans un mot de T + dérivé de l axiome S. Si α = ɛ, cet ensemble est vide. Par convention, Suivant(S) {#}.
65 Ensembles Suivant Ensembles Suivant, définitions équivalentes Definition Soit une grammaire algébrique d axiome S. On définit : Suivant : (T N) P(T ) α {a T S βαaγ, pour β, γ (N T ) } Definition Suivant : (T N) P(T ) α {a Premier(γ) S βαγ, pour β, γ (N T ) }
66 Ensembles Suivant 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 A S AB S A B a b
67 Ensembles Suivant Calcul des Suivant - 2 Soit R X R l ensemble des productions p dans lesquelles X apparaît en partie droite : Suivant(X) = p R X Suivant p (X) Ex : R A = {S AB, A aab} Suivant(A) = Suivant(A) S AB Suivant(A) A aab
68 Ensembles Suivant Calcul des Suivant, cas de l axiome Pour l axiome, on ajoute le marqueur de fin de mot : Suivant(S) = {#} p R S Suivant p (S) Ex : pour X axb ɛ R X = {X axb} Suivant(X) = {#} Suivant(X) X axb
69 Ensembles Suivant Calcul des Suivant exemple Suivant(A) S AB? (exemple précédent) Cas déjà vu : S A B Suivant(A) Premier(B)
70 Ensembles Suivant Calcul des Suivant exemple Suivant(A) S AB? (exemple précédent) mais B est ɛ-prod! S A B Suivant(A) Suivant(S)
71 Ensembles Suivant Calcul des Suivant exemple Puisque B est ɛ-prod : Suivant(A) S AB = Premier(B) Suivant(S)
72 Ensembles Suivant Calcul des Suivant - 4 Quand une production est de la forme... Xα : pour calculer Suivant(X) ; Il faut pouvoir dire si α (N T ) est ɛ-productif ou pas. Definition α (N T ) est ɛ-productif si α ɛ. On définit la fonction : P ɛ : (N T ) {vrai, faux} α α est ɛ-productif On verra après comment calculer P ɛ.
73 Ensembles Suivant Calcul des Suivant - 5 Pour calculer Suivant p (X) avec : p = Y αxβ et P ɛ (β) = faux, α, β (N T ) Y X β Suivant p (X) = Premier(β) Ex : pour Y Xb, Suivant(X) Y Xb = {b}.
74 Ensembles Suivant Calcul des Suivant - 6 Pour calculer Suivant p (X) avec : p = Y αx Y α X Suivant p (X) = Suivant(Y )
75 Ensembles Suivant Calcul des Suivant - 7 Pour calculer Suivant p (X) avec : p = Y αxβ et P ɛ (β) = vrai, α, β (N T ) Y X β Suivant p (X) = Premier(β) Suivant(Y ) Ex : pour S AB, Suivant(A) S AB = Premier(B) Suivant(S).
76 Ensembles Suivant Remarque - 1 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 XaXaXc Suivant Y XaXaXc (X) = {a, c}
77 Ensembles Suivant Remarque - 2 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 )
78 Ensembles Suivant Calcul des Suivant, récapitulons! # Suivant(axiome) Soit R X R l ensemble des productions p dans lesquelles X apparaît en partie droite : Suivant(X) = p R X Suivant p (X) avec : Suivant p (X) = cas p = Y αx : Suivant(Y ) p = Y αxβ et P ɛ (β) = faux : Premier(β) p = Y αxβ et P ɛ (β) = vrai : Premier(β) Suivant(Y ) fincas
79 Ensembles Suivant 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) =.
80 Ensembles Suivant Exemple S AB Da A aab ɛ B bb ɛ D dd e P ɛ (B) = vrai Suivant? # Suivant(axiome) Suivant(X) = p R X Suivant p (X) avec : Suivant p (X) = cas p = Y αx : Suivant(Y ) p = Y αxβ et P ɛ (β) = faux : Premier(β) p = Y αxβ et P ɛ (β) = vrai : Premier(β) Suivant(Y ) fincas
81 Ensembles Suivant 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
82 Ensembles Suivant 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
83 Ensembles Suivant Calcul des ɛ-productifs On connaît déjà ɛ-prod, ens. des non-terminaux ɛ-productifs. Pour calculer P ɛ (α) : P ɛ (α) = cas α = ɛ : vrai α = X 1... X n, n 1 avec {X 1,..., X n } N et {X 1,..., X n } ɛ-prod : vrai autre : faux // α contient un terminal fincas
84 Ensembles Suivant Exemple Sachant que ɛ-prod = {A, B, S} : P ɛ (Da)? P ɛ (AB)? P ɛ (ɛ)? P ɛ (B)?
85 Remplissage de la table d analyse 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
86 Remplissage de la table d analyse Table d analyse : au préalable On calcule : les ɛ-productifs ; les ensembles Premier ; les ensembles Suivant.
87 Remplissage de la table d analyse 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 γ R faire pour tout a Premier(γ) faire ajouter X γ à Table[X, a] fait si P ɛ (γ) = 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
88 Remplissage de la table d analyse Exemple S AB : Premier(AB) = {a, b} ; P ɛ (AB) = vrai ; Suivant(S) = {#}. S Da : Premier(Da) = {d, e} ; P ɛ (Da) = faux. Rien à compléter par erreur. S a S AB b S AB d S Da e S Da # S AB
89 Remplissage de la table d analyse Exemple A aab : Premier(aAb) = {a} ; P ɛ (aab) = faux. A ɛ : Premier(ɛ) = ; P ɛ (ɛ) = vrai ; Suivant(A) = {b, #}. On complète par erreur. A a A aab b A ɛ d erreur e erreur # A ɛ
90 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
91 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).
92 Caractérisation d une grammaire LL(1) 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 P ɛ (α) = vrai et Premier(β) Suivant(X) ; Ex : S as Ab, A ɛ b 3 soit P ɛ (α) = vrai et P ɛ (β) = vrai (la grammaire est ambiguë) Ex : S A B, A ɛ, B ɛ
93 LL(1) et ambiguïté Une grammaire LL(1) n est pas ambiguë. Une grammaire ambiguë n est pas LL(1).
94 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!
95 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
96 Factorisation à gauche 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
97 Factorisation à gauche Factorisation à gauche : exemple - 1 Les listes d identificateur de INIT : listeident IDENT IDENT SEPVAR listeident On factorise IDENT et on obtient : listeident IDENT suitelisteident suitelisteident ɛ SEPVAR listeident
98 Factorisation à gauche Factorisation à gauche : exemple - 2 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.
99 Factorisation à gauche Factorisation à gauche - algorithme On remplace les règles de la forme : où X αβ 1... αβ n γ 1... γ m α (T N) + et β i, γ j (T 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.
100 Suppression de la récursivité à gauche 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
101 Suppression de la récursivité à gauche Suppression de la récursivité à gauche Récursivité gauche : immédiate : production A Aα, α (T N) + ; générale : il existe une dérivation A Aα, α (T N) +. Il est possible de supprimer les deux cas. On ne verra que la récursivité immédiate.
102 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 (T N) + et β j (T 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.
103 Suppression de la récursivité à gauche Suppression de la récursivité gauche : exemple Après suppression de la rec Grammaire non ambiguë gauche : des expressions arithmétiques : E TE E E + T T E +TE ɛ T T F F T FT F i (E) T FT ɛ F i (E) X Xα 1... Xα n β 1... β m X β 1 X... β m X X α 1 X... α n X ɛ
104 Suppression de la récursivité à gauche Parfois ça ne suffit pas La grammaire ({a, b}, {S, A}, S, R) avec R = {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).
105 Suppression de la récursivité à gauche Au delà des grammaires LL(1) - 1 La grammaire ({a, b}, {A, B}, A, R) avec R = {A abb ɛ, B Aaa b} n est pas LL(1). En effet P ɛ (A) = vrai et a Premier(A) Suivant(A).
106 1 Méthodes d analyse syntaxique 2 Principes de l analyse descendante 3 Analyseur récursif 4 Construction de la table d analyse Ensembles Premier Ensemble des ɛ-prod Ensembles Suivant Remplissage de la table d analyse 5 Caractérisation d une grammaire LL(1) 6 Quand une grammaire n est pas LL(1) Factorisation à gauche Suppression de la récursivité à gauche 7 Analyseurs LL(k), LL(*)
107 Grammaires LL(k), exemple La grammaire: declaration DECLINT listeident FININSTR listeident IDENT IDENT SEPVAR listeident n est pas LL(1). 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
108 Grammaire LL(k), autre exemple R = {A abb ɛ, B Aaa b} Cette grammaire est LL(2) : Premier 2 (A) = {ab} Premier 2 (B) = {ab, aa, b} Suivant 2 (A) = {aa, #}
109 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
110 Analyseurs LL(k), principe Effectuent une prédiction basée sur k symboles. k borné. Ex: javacc
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é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é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é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é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é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é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é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é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é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é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é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é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é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é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é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étailContinuité et dérivabilité d une fonction
DERNIÈRE IMPRESSIN LE 7 novembre 014 à 10:3 Continuité et dérivabilité d une fonction Table des matières 1 Continuité d une fonction 1.1 Limite finie en un point.......................... 1. Continuité
Plus en détailStructure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
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é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é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é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é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é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étailProgrammer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)
Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Plus en détailas Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
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étailInitiation à la programmation en Python
I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de
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é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é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é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é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é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é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é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é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étailIntroduction à MATLAB R
Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d
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é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é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étailDE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Plus en détailIntroduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf
Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations
Plus en dé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é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étailLe langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie
Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis
Plus en détailLes arbres binaires de recherche
Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s
Plus en détailCours 1 : Qu est-ce que la programmation?
1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre
Plus en détailAlgorithmique et programmation : les bases (VBA) Corrigé
PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi
Plus en détailAlgorithmique, Structures de données et langage C
UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure
Plus en dé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étailMATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.
Page 1 de 9 MATLAB : COMMANDES DE BASE Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Aide help, help nom_de_commande Fenêtre de travail (Command Window) Ligne
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é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étailIntroduction à la programmation Travaux pratiques: séance d introduction INFO0201-1
Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1 B. Baert & F. Ludewig Bruno.Baert@ulg.ac.be - F.Ludewig@ulg.ac.be Qu est-ce que la programmation? Programmer Ecrire un
Plus en détailintroduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives
introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques
Plus en détailSujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.
Promotion X 004 COURS D ANALYSE DES STRUCTURES MÉCANIQUES PAR LA MÉTHODE DES ELEMENTS FINIS (MEC 568) contrôle non classant (7 mars 007, heures) Documents autorisés : polycopié ; documents et notes de
Plus en détailCours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Plus en détailQuatrième partie IV. Test. Test 15 février 2008 1 / 71
Quatrième partie IV Test Test 15 février 2008 1 / 71 Outline Introduction 1 Introduction 2 Analyse statique 3 Test dynamique Test fonctionnel et structurel Test structurel Test fonctionnel 4 Conclusion
Plus en détailCours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr
. Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le
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é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étailProgrammation C. Apprendre à développer des programmes simples dans le langage C
Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités
Plus en détailRMI le langage Java XII-1 JMF
Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine
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étailPlan du cours 2014-2015. Cours théoriques. 29 septembre 2014
numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour
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étailPour l épreuve d algèbre, les calculatrices sont interdites.
Les pages qui suivent comportent, à titre d exemples, les questions d algèbre depuis juillet 003 jusqu à juillet 015, avec leurs solutions. Pour l épreuve d algèbre, les calculatrices sont interdites.
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étailLe Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr
Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables
Plus en détailFactorisation Factoriser en utilisant un facteur commun Fiche méthode
Factorisation Factoriser en utilisant un facteur commun Fiche méthode Rappel : Distributivité simple Soient les nombres, et. On a : Factoriser, c est transformer une somme ou une différence de termes en
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é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étailFormats d images. 1 Introduction
Formats d images 1 Introduction Lorsque nous utilisons un ordinateur ou un smartphone l écran constitue un élément principal de l interaction avec la machine. Les images sont donc au cœur de l utilisation
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en dé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étailChapitre 10 Arithmétique réelle
Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013
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étailIntroduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Plus en dé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étailExceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
Plus en détailAide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr
Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................
Plus en détailRaisonnement par récurrence Suites numériques
Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.
Plus en détailCours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java
Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page
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étailACTIVITÉ DE PROGRAMMATION
ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,
Plus en détailArchitecture des Systèmes d Information Architecture des Systèmes d Information
Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau
Plus en détailÉquations non linéaires
Équations non linéaires Objectif : trouver les zéros de fonctions (ou systèmes) non linéaires, c-à-d les valeurs α R telles que f(α) = 0. y f(x) α 1 α 2 α 3 x Equations non lineaires p. 1/49 Exemples et
Plus en détailLes BRMS Business Rules Management System. Groupe GENITECH
Les BRMS Business Rules Management System 1 Présentations Emmanuel Bonnet ebonnet (at) genigraph.fr Responsable Dpt Conseil Consultant, Expert BRMS Formateur IBM/Ilog JRules / JBoss Rules Génigraph SSII
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étailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détailDécouverte de Python
Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en
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étailSolutions du chapitre 4
Solutions du chapitre 4 Structures de contrôle: première partie 4.9 Identifiez et corrigez les erreurs (il peut y en avoir plus d une par segment de code) de chacune des proposition suivantes: a) if (
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étailSimulation de variables aléatoires
Chapter 1 Simulation de variables aléatoires Références: [F] Fishman, A first course in Monte Carlo, chap 3. [B] Bouleau, Probabilités de l ingénieur, chap 4. [R] Rubinstein, Simulation and Monte Carlo
Plus en détailTP, première séquence d exercices.
TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la
Plus en détailFiche PanaMaths Calculs avec les fonctions sous Xcas
Fiche PanaMaths Calculs avec les fonctions sous Xcas Cette fiche destinée aux élèves des classes de Terminale requiert un premier niveau de connaissance du logiciel Xcas. Définition d une fonction Fonctions
Plus en détailCours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Plus en détail