Langages Rationnels. Licence Informatique Parcours Miage-2010/2011

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

Download "Langages Rationnels. Licence Informatique Parcours Miage-2010/2011"

Transcription

1 Licence Informatique Parcours Miage-2010/2011 Langages Rationnels 1 Langages : généralités Un alphabet est un ensemble non vide dont les éléments sont appelés lettres. Exemples : A = {a,b,d} B = {0, 1} G = {alpha, delta, sigma, ksi} Un mot est une suite finie de lettres. Exemples : m 1 = aba est un mot sur l alphabet A. m 2 = mot sur B. m 3 = sigma.delta.delta mot sur G Le mot vide est la suite vide de lettre. On le note ε. (Attention, ne pas confondre ε avec une lettre : c est un mot). Opération de concaténation : Soient deux mots m 1 = α 1 α n et m 2 = β 1,,β p, avec les α i et les β j lettres d un alphabet donnée X. Alors, le résultat de la concaténation de m 1 et m 2, noté m 1.m 2 est le mot : m 1.m 2 = α 1 α n β 1,,β p Cette opération est associative, n est pas commutative, et admet le mot vide pour élément neutre. La longueur du mot m, notée m est le nombre de lettres du mot m. Exemples : m 1 = aba = 3 = m 3 m 2 = = 5 ε = 0 Un langage sur un alphabet X est un ensemble d emots sur X. Exemples : Sur l alphabet B L 1 = {00,010,11,1010} L 2 = {m / m est un multiple de 3 en base 2} L 3 = {m / m se termine par 0} 1

2 2 Les langages rationnels Les langages rationnels sont les langages définissables par une expression rationnelle. On définit les expressions rationnelles par induction : Soit X un alphabet. est une expression rationnelle. ε est une expression rationnelle. si a lettre de X alors a est une expression rationnelle. si e 1 et e 2 sont des expressions rationnelles, alors e 1.e 2, e 1 + e 2 sont des expressions rationnelles. si e expression rationnelle, alors (e) et e sont des expressions rationnelles. concaténation de langages : L 1.L 2 = {m 1.m 2 / m 1 L 1,m 2 L 2 } puissance d un langage : Soit L un langage sur un alphabet X L 0 = {ε} L 1 = L L i = L i 1.L pour i > 0 L = i 0 Li L + = i>0 Li = L.L Les expressions rationnelles définissent les langages rationnels, de la façon suivante : définit le langage vide. ε définit le langage {ε}. si a lettre de X alors a définit le langage {a}. si e 1 et e 2 sont des expressions rationnelles qui définissent respectivement L 1 et L 2, alors e 1.e 2 définit L 1.L 2, et e 1 + e 2 définit L 1 L 2. si e expression rationnelle qui définit L, alors (e) définit L et e définit L. 2

3 Langages reconnaissables 3 Automates finis Un automate fini de mots est un quintuplet (A, Q, I, F, δ) avec A alphabet Q ensemble d états I ensemble non vide d états initiaux. I Q. F ensemble d états finaux. F Q δ fonction de transition. δ : Q A 2 Q On note δ (q,m) l ensemble des états atteints en lisant m à partir de q. Si m = ε, δ (q,ε) = {q} Sinon, m = a.m et alors δ (q,m) = e δ(q,a) δ (e,m ) Un mot est reconnu par l automate M = (A,Q,I,F,δ) si et seulement si q 0 I δ (q 0,m) F Le langage L(M) reconnu par un automate M est l ensemble des mots reconnus par M. 4 Langages reconnaissables Un langage est reconnaissable s il existe un automate qui le reconnaît. Un automate M = (A,Q,I,F,δ) est déterministe si I est un singleton {q 0 } q Q, a A, δ(q,a) a au plus 1 élément. Un automate M = (A,Q,I,F,δ) est complet si q Q, a A, δ(q,a) a au moins 1 élément. Théorème : Soit M un automate non déterministe. Il existe un automate M déterministe qui reconnaît L(M). Propriétés de clôture : On note Rec(X ) la famille des langages reconnaissables sur un alphabet X. Par définition, un langage L sur l alphabet X est dans cette famille s il existe un automate M qui le reconnaît. Rec(X ) est fermée par produit de concaténation Rec(X ) est fermée par étoile Rec(X ) est fermée par complémentaire Rec(X ) est fermée par union Rec(X ) est fermée par intersection. Théorème de Kleene On note Rat(X ) la famille des langages rationnels sur l alphabet X. Rat(X ) = Rec(X ) 3

4 Grammaires algébriques Une grammaire algébrique (ou hors-contexte) G est définie par un quadruplet (Σ,V,S,P) où : Σ est un ensemble fini de symboles terminaux, V est un ensemble fini de variables (symboles non terminaux), S est un élément distingué de V, appelé axiome, P V (Σ V ) est un ensemble fini de règles de production. On suppose que Σ V =. (Σ V ) est l ensembles des mots écrits sur l alphabet Σ V. Une règle de production (A,aAb) P sera notée A aab. Un mot u se dérive en un pas en un mot v par G s il existe une règle X w de P, une décompostion u 1 Xu 2 de u, une décomposition u 1 wu 2 de v. On note u G v si u se dérive en un pas en v par G. Proposition Pour toute grammaire algébrique G = (Σ,V,S,P), et pour tout u, v, α, β (Σ V ), si u G v alors αuβ G αvβ. La dérivation d un mot u est non déterministe puuisqu on a deux sources de choix : choix d un non terminal X dans u, choix d une règle de production de membre gauche X. Un mot u se dérive en k pas en un mot v (noté u k G v) par G si k = 0 et u = v, k > 0 et il existe un mot u tel que u G u et u k 1 G v. Un mot u se dérive en un mot v par G (noté u G v) si il existe un entier naturel k tel que u k G v. La relation G est la clôture réflexive et transitive de la relation G. Proposition Pour toute grammaire algébrique G = (Σ,V,S,P), et pour tout u, v, α, β (Σ V ), pour tout entier k, si u k G v alors αuβ k G αvβ. si u G v alors αuβ G αvβ. Proposition Pour toute grammaire algébrique G = (Σ,V,S,P), et pour tout u 1, u 2, v 1, v2 (Σ V ) et k 1, k 2 N si u 1 k 1 G v 1 et u 2 k 2 G v 2 alors u 1 u 2 k G v 1v 2 avec k = k 1 + k 2. Le langage engendré par la grammaire G = (Σ,V,S,P), noté L(G) est l ensemble des mots w composés uniquement de terminaux que l on peut dériver à partir de l axiome de G. L(G) = {w / S G w, w Σ } Le langage étendu engendré par la grammaire G = (Σ,V,S,P), noté L(G) est l ensemble de tous les mots w que l on peut dériver à partir de l axiome de G. L(G) = {w / S G w, w (Σ V ) } 4

5 Un langage L est algébrique si et seulement si il existe une grammaire algébrique G engandrant L (L = L(G)). Deux grammaires G 1 et G 2 sont équivalentes si et seulement si elles engendrent le même langage (L(G 1 ) = L(G 2 )). Lemme fondamental Soit G = (Σ,V,S,P) une grammaire algébrique. Soient u 1,u 2, v (Σ V ) et k N. Si u 1 u 2 k G v alors il existe v 1, v 2 (Σ V ) et k 1, k 2 N tels que v = v 1 v 2, u 1 k 1 G v 1, u 2 k 2 G v 2 et k = k 1 + k 2. Exemple Le langage L = {a n b n /n N} n est pas un langage rationnel, mais c est un langage algébrique engendré par la grammaire G = ({a,b}, {S},S,P) avec P = {S asb,s ǫ}. Pour montrer que L(G) L, on montre que si w L(G), alors il existe k N tel que S k G w. Montrons par récurrence sur k que, si S k G w, alors w = ak 1 b k 1. Si k = 1, alors w = ǫ. Supposons la propriété vraie pour k. Pour k + 1, on a S G asb k G w. On applique le lemme fondamental avec u 1 = a et u 2 = Sb : il existe v 1, v 2, k 1, k 2 tels que u 1 k 1 G w 1 et u 2 k 2 G w 2, k 1 + k 2 = k et w = w 1 w 2. Comme u 1 = a, w 1 = a et k 1 = 0 donc u 2 = Sb k 2 G w 2 avec k 2 = k. On applique à nouveau le lemme fondamental avec u 1 = S et u 2 = b : il existe v 1, v 2, k 1, k 2 tels que u 1 k 1 G w 2, G w 1 et u 2 k 2 k 1 + k 2 = k et w 2 = w 1 w 2. Comme u 2 = b, on a w 2 = b et k 2 = 0, et donc S k G w 1. Par hypothèse de récurrence, on a w 1 = ak 1 b k 1 donc asb k G ak b k soit S k+1 G ak b k. Pour montrer que L L(G), on montre par récurrence sur n, que pour tout n, a n b n L(G). Pour n = 0, S G ǫ donc ǫ(= a 0 b 0 ) L(G). Si la propriété est vraie pour n, on a donc a n b n L(G) soit S G an b n. Donc asb G aan b n b (par la 2ème proposition). Comme S asb P, S G an+1 b n+1. 5

6 Propriétés de clôture Les langages algébriques sont clos par union : si L et L sont algébriques, alors L L est algébrique. concaténation : si L et L sont algébriques, alors L.L est algébrique. étoile : si L est algébrique, alors L = i n Li est algébrique, Attention : les langages algébriques ne sont pas clos par intersection : il existe deux langages algébriques L et L tels que L L n est pas algébrique. complémentaire : il existe un langage algébrique L tel L n est pas algébrique. Grammaires régulières Une grammaire G = (Σ,V,S,P) est régulière (ou linéaire) si toute règle X de production de P est soit de la forme X ǫ, soit de la forme X ay avec a un terminal (a Σ) et Y un non-terminal (Y V ). Un langage est régulier si il peut être engendré par une grammaire régulière. Un langage est régulier si et seulement si il est rationnel. Il existe des grammaires non régulières qui engendrent des langages réguliers 1. Classification des grammaires Une grammaire formelle est donnée par (Σ, V, S, P) avec P (Σ V ) (Σ V ). La hiérarchie de Chomsky classe les grammaires suivant ce qu il est possible de spécifier dans les règles de production α β de P. Grammaire arbitraire Grammaire contextuelle Grammaire algébrique Grammaire régulière α,β (Σ V ) α,β (Σ V ) et α < β α V, β (Σ V ) α V, β ΣV {ǫ} Les grammaires algébriques restent insuffisantes pour spécifier tous les aspects des langages de programmation (comme le problème du nombre de paramètres a n b m c n d m ). Arbres de dérivation Soit G = (Σ,V,S,P) une grammaire algébrique. Un arbre de dérivation relatif à G est un arbre dont les nœuds sont étiquetés par des symboles de Σ V {ǫ} et dont les fils de tout nœud interne sont ordonnés. De plus, il vérifie que : la racine est étiquetée par l axiome de la grammaire, les nœuds internes sont étiquetés par des non-terminaux, les feuilles sont étiquetées par des terminaux ou ǫ, un nœud interne et ses fils correspondent à une règle de production. Construction d un arbre de dérivation à partir d une dérivation : On part d un arbre n ayant qu un seul nœud, la racine étiquetée par l axiome. pour une dérivation en un pas α G β, il existe un non-terminal A dans α et une production A δ dans P tels que la dérivation remplace A par δ dans α (en produisant β). Si A est le ième symbole de α, alors on étend l arbre en ajoutant à sa ième feuille les fils correspondant à la règle A δ. Exemple : G = ({i,+,,(,)}, {E},E,P) avec P = {E E + E E E E (E) i}. Dériver i + i et i + i i. 1 G = ({a}, {S}, S, P = {S asa ǫ}) par exemple 6

7 Dérivations gauches Ambiguité Proposition Soit G = (Σ,V,S,P) une grammaire algébrique. Un mot w de Σ appartient à L(G) si et seulement si il existe un arbre de dérivation dont les feuilles lues de gauche à droite forment le mot w. Nous avons vu que lorqu on construit une dérivation d un mot w, nous pouvons choisir à chaque pas le non-terminal X dans u et la règle de production de membre gauche X (X...). Il existe donc en général plusieurs dérivations pour un même mot u. Lorsque l on construit un arbre de dérivation, seul le choix des règles de production aura un impact sur l arbre final. L ordre selon lequel on choisit les non-terminaux n aura aucun impact sur l arbre final. Plusieurs dérivations correspondent donc au même arbre de dérivation. Sur l exemple G = ({i,+,,(,)}, {E},E,P) avec P = {E E + E E E E (E) i}, pour le mot w = i + i, on a les 2 dérivations E G E + E G i + E G i + i E G E + E G E + i G i + i Mais il n y a qu un arbre de dérivation correspondant à ces deux dérivations. Un arbre de dérivation regroupe ainsi plusieurs dérivations équivalentes d un même mot. Dérivations gauches Une dérivation gauche est une dérivation dans laquelle on choisit à chaque pas de dériver le non-terminal le plus à gauche. Soient u,v (Σ V ), on note u g G v si il existe l Σ, r (Σ V ) et une règle de production α β tels que u = lαr et v = lβr. On notera g G la clôture réflexive et transitive de g G. Le correspondance entre dérivations gauches et arbres de dérivation est bijective. Cela vient du fait qu une dérivation gauche correspond à un parcours dans l ordre préfixe de l arbre de dérivation. On utilise la dérivation gauche pour calculer l arbre de dérivation d un mot. Ambiguité Un mot m L(G) est ambigu s il est le feuillage d au moins deux arbres de dérivations différents. Une grammaire G est ambiguë s il existe un mot m de L(G) tel que m soit ambigu. Un langage algébrique L est ambigu si toute grammaire G engendrant L est ambiguë. Exemple : la grammaire G 1 = ({,i}, {E},E, {E E E i}) est-elle ambiguë? Oui, le mot i i i a deux arbres de dérivation. Or le langage L(G 1 ) n est pas ambigu. Pour lever l ambiguité de la grammaire, on peut ajouter des parenthèses : G 1 = ({,i(,)}, {E},E, {E (E E) i}). G 1 n est pas ambigüe, mais L(G 1 ) L(G 1). Une meilleure solution consiste à introduire une priorité : G 2 = ({,i}, {E},E, {E E i i}). G 2 n est pas ambigüe et L(G 2 ) = L(G 1 ). De même G 3 = ({,i}, {E},E, {E i E i}) est aussi non-ambiguë et vérifie L(G 3 ) = L(G 1 ). De manière générale, pour rendre non ambigüe une grammaire, on utilise des propriétés sémantiques du langage, comme les priorités sur les opérateurs. Exemple : expressions arithmétiques G = ({i,+,,(,)}, {E}, E, {E E + E E E (E) i}) La grammaire est ambiguë. Le langage n est pas ambigu : la multiplication est prioritaire sur l addition +. On repousse les dérivations de l opérateur au fond de l arbre en introduisant 7

8 des règles termes T et facteurs F supplémentaires. G = ({i,+,,(,)}, {E,T,F }, E,P ) E E + T T somme de termes P = T T F F produit de facteurs F (E) i Il existe cependant des langages algébriques qui sont inhéremment ambigus. L = {a n b m c p n = m m = p} est ambigu (il y a deux arbres de dérivation pour a n b n c n ) mais est un langage algébrique car engendré par les règles {S X Y,X AB,Y CD,A Ac ǫ,b abb ǫ,c ac ǫ,d bdc ǫ}. Les langages de programmation ne doivent pas être ambigus. De plus, montrer que : une grammaire est ambiguë est en général facile : exhiber un mot ayant deux arbres de dérivation différents. une grammaire est non-ambiguë est en général difficile. un langage est non-ambigu est en général facile : trouver un grammaire non-ambiguë qui l engendre. un langage est ambigu est en général très difficile : montrer que toutes les grammaires l engendrant sont ambiguës. Transformation des grammaires A partir d une grammaire algébrique G, on construit une grammaire G telle que G ne comporte pas de variables inutiles (grammaire réduite). G ne comporte pas de règles de production inutiles (grammaire propre) L(G ) = L(G) \ {ǫ} De plus, cette transformation peut être automatisée (sous la forme d un programme). Variables inutiles Une variable est inutile si c est une variable puits ou une variable inacessible. X est une variable non-puits si {u Σ X G u}. X est une variable accessible (depuis l axiome S) si il existe w 1,w 2 (Σ V ) tels que S G w 1Xw 2. Si X n est pas une variable non-puits, alors elle est dite puits. Si X n est pas une variable accessible, alors elle est dite inacessible. 8

9 Variable puits. On construit l ensemble NP des variables non-puits d une grammaire G itérativement de la façon suivante : NP 0 =, pour tout i N, NP i+1 = NP i {X V X w P et w (Σ NP i ) }. On définit NP = i N NP i. On peut remarquer que pour tout i, NP i NP i+1 V, et que si NP i = NP i+1 alors pour tout entier k, NP i = NP i+k. On en déduit que l on fait au plus Card(V ) itérations. On élimine toutes les règles de production contenant une variable puits (en membre droit ou gauche). Variables accessibles. On construit l ensemble AC des variables accessibles d une grammaire G itérativement de la façon suivante : AC 0 = {S}, où S est l axiome de G. pour tout i N, AC i+1 = AC i {X V Y w 1 Xw 2 P avec Y AC i }. On définit AC = i N AC i. On remarque que pour tout i, AC i AC i+1 V et que, si AC i = AC i+1, alors pour tout entier k, AC i = AC i+k. On en déduit que l on fait au plus Card(V ) itérations. On élimine toutes les règles de production contenant une variable inaccessible en membre gauche. A noter que : éliminer les variables inaccessibles ne peut pas créer de variables puits. éliminer les variables puits peut créer des variables inaccessibles Règles inutiles Les règles de production inutiles sont constituées des règles qui permettent à partir d un non-terminal X de : dériver le mot vide ǫ : X G ǫ, dériver un non-terminal Y : X + G Y. Elimination des règles X G ǫ. On pose V ǫ = {X V X G ǫ}, l ensemble des nonterminaux pouvant se dériver en ǫ. L ensemble V ǫ se calcule itérativement de la façon suivante : Vǫ 0 = {X V X ǫ P } pour tout i N, Vǫ i+1 = Vǫ i {X V X w P et w (V i ǫ )+ }. On définit V ǫ = i N V ǫ i. On remarque que pour tout i, V i ǫ V ǫ i+1 V et que, si Vǫ i = V ǫ i+1 alors pour tout entier k, Vǫ i = V ǫ i+k. On en déduit que l on fait au plus Card(V ) itérations. On considère H, la grammaire donnée par les règles de production {X ǫ X V ǫ }. On construit alors à partir des règles de production P un nouvel ensemble de règles de production P défini par P = {X v il existe X u P, u H v et v ǫ} Elimination des règles X + G Y (chain rules). On commence par éliminer les règles X + G X. Pour tout X V, on pose R(X) = {Y V X G Y }. On peut calculer R(X) itérativement de la façon suivante : R(X) 0 = {X} pour tout i N, R(X) i+1 = R(X) i {Y V Z Y P tq Z R(X) i }. On définit R(X) = i N R(X)i. On remarque que pour tout i, R(X) i R(X) i+1 V et que, si R(X) i = R(X) i+1 alors pour tout entier k, R(X) i = R(X) i+k. On en déduit que l on fait au plus Card(V ) itérations pour une variable X. Puisqu il y a Card(V ) variables, on fait en tout au plus (Card(V )) 2 itérations. 9

10 Grammaires réduites et propres Il existe un algorithme, qui donné une grammaire G, calcule une grammaire G réduite et propre telle que L(G ) = L(G) \ {ǫ}. On procède par élimination dans l ordre des variables puits de G G 1 : L(G) = L(G 1 ) des variables inaccessibles de G 1 G 2 : L(G 1 ) = L(G 2 ) des règles pour X G 2 ǫ de G 2 G 3 : L(G 3 ) = L(G 2 ) \ {ǫ} des règles pour X + G 3 Y de G 3 G : L(G 3 ) = L(G ). Proposition Pour toute grammaire G réduite et propre d axiome S, pour tout mot w Σ, pour tout k N, si S k G w alors k w Forme normale de Greibach Une grammaire est récursive à gauche si elle contient des dérivations de la forme A + Aβ. On distingue la récursivité à gauche immédiate : la grammaire contient un non-terminal A et une règle de production A Aα (α (Σ V ) + ). générale : la grammaire contient un non-terminal A et il existe une dérivation A + G Aα (α (Σ V ) + ). Elimination de la récursivité à gauche immédiate On remplace les règles de la grammaire de la forme où α i (Σ V ) + et β j (Σ V ) les β j ne commencent pas par A par les règles A Aα 1... Aα n β 1... β m A β 1 A... β m A β 1... β m A α 1 A... α n A α 1... α n où A est un nouveau non-terminal. Elimination de la récursivité à gauche générale On ordonne les non-terminaux : A 1,A 2,...,A n On applique l algorithme suivant : Pour i allant de 1 à n faire Pour j allant de 1 à i 1 faire on remplace la règle A i A j α où A j β 1... β k par la règle A i β 1 α... β k α. FinPour On élimine la récursivité à gauche immédiate pour toutes les règles de A i. FinPour Cette méthode peut également s exprimer sous forme matricielle et donc se programmer de manière systématique. Si la grammaire est propre, la mise sous forme normale de Greibach (qui permet d ôter le récursivité gauche) fonctionne toujours. 10

11 Automates à pile Un automate à pile A est donné par un tuple (Σ, Z,z,Q,q i,f, ) où : Σ est un alphabet d entrée fini (les terminaux), Z est un alphabet de pile fini, z Z est le symbole initial de pile, Q est un ensemble fini d états, q i Q est l état initial et F Q est l ensemble des états finaux, est une relation de transition (Q (Σ {ǫ}) Z Q Z ) Transitions Un élément (q,y,z 1,q,z 2 z 3 z 4 ) de avec q,q Q, y Σ {ǫ}, z 1,z 2,z 3,z 4 Z est appelé transition et est souvent noté : q,y,z 1 q,z 2 z 3 z 4. Si y Σ, on parle de Σ-transition et si y = ǫ d ǫ-transition. Intuitivement, si on est dans l état q, que le sommet de pile est z 1 et qu on peut lire y en tête du mot, alors on lit y et on dépile z 1, on passe dans l état q, et on empile z 2, z 3, puis z 4. Configuration La configuration d un automate à pile A est donnée par : un mot w Σ un état courant q, un contenu de la pile z a z 2 z b z a Une configuration c d un automate à pile (Σ, Z,z,Q,q i,f, ) est un élément de Σ Q Z. Le mot de Z est le contenu de la pile lu du bas de pile vers le haut de pile (z a z b z 2 z a ). Configuration et Σ-transition L automate A réalise une Σ-transition d une configuration c = (w, q, m) vers une configuration c = (w,q,m ) (noté c A c ) si : il existe une transition q,a,z q,n, w = aw, m = m z, m = m n. aw, q, z m A w, q, n m 11

12 Configuration et ǫ-transition L automate A réalise une ǫ-transition d une configuration c = (w, q, m) vers une configuration c = (w,q,m ) (noté c A c ) si : il existe une transition q,ǫ,z q,n, w = w, m = m z, m = m n. w, q, z m A w, q, n m Acceptation par état final Pour un automate à pile A, on note A la clôture réflexive et transitive de A. Un mot w Σ est accepté par état final par un automate à pile A = (Σ, Z,z,Q,q i,f, ) si pour la configuration (w,q i,z ), il existe un état q f F et un mot m Z tel que (w,q i,z ) A (ǫ,q f,m) Le langage accepté par état final par un automate à pile est l ensemble des mots acceptés par cet automate. L F (A) = {w Σ (w,q i,z ) A (ǫ,q f,m)} Acceptation par pile vide Un mot w Σ est accepté par pile vide par un automate à pile A = (Σ, Z,z,Q,q i,f, ) si pour la configuration (w,q i,z ), il existe un état q tel que (w,q i,z ) A (ǫ,q,ǫ) Le langage accepté par pile vide par un automate à pile est l ensemble des mots acceptés par cet automate. L S (A) = {w Σ (w,q i,z ) A (ǫ,q,ǫ)} Equivalences des acceptations Soit L un langage accepté par état final par un automate A, alors il existe un automate à pile A tel que le langage L S (A ) accepté par A par pile vide vérifie L = L S (A ). Soit L un langage accepté par pile vide par un automate A, alors il existe un automate à pile A tel que le langage L F (A ) accepté par A par état final vérifie L = L F (A ). 12

13 Automates à pile et langages algébriques Théorème Si L est un langage algébrique alors il existe un automate à pile A (acceptant par pile vide) tel que L = L S (A). Principe de la preuve : Si L est un langage algébrique alors il existe une grammaire G = (Σ,V,S,P) qui engendre L. On peut de plus supposer que toutes les règles de production de P sont de la forme 2 X a (a Σ) ou X β (β V ). Pour la grammaire G = (Σ,V,S,P), on construit l automate à pile A L acceptant par pile vide A L = (Σ, Z,z,Q,q i,f, ) tel que les terminaux de la grammaire constituent l alphabet d entrée, Z = V : l alphabet de pile est constitué des non-terminaux, z est l axiome S, Q = {q i } et F =, = {(q i,a,x) (q i,ǫ) X a P } {(q i,ǫ,x) (q i,β R ) X β P et β V } où β R est le miroir de β (β lu de droite à gauche). On peut montrer que L F (A L ) = L(G) = L. En fait il existe deux manières de construire un automate à pile pour une grammaire donnée. Cette première méthode empile les membres droits de règles et utilise le mot d entrée pour dépiler. C est une méthode descendante. Une seconde méthode empile le mot d entrée et utilise les règles de la grammaire pour dépiler. C est une méthode ascendante. Il suffit de modifier l automate à pile ci-dessus : z = ǫ : la pile est vide au début, = {(q i,a,ǫ) (q i,a) X a P } {(q i,ǫ,β) (q i,x) X β P et β V } on doit terminer avec l axiome S en sommet de pile, on ajoute donc à la transition (q i,ǫ,s) (q i,ǫ). Théorème Pour tout automate à pile A (acceptant par pile vide), le langage L S (A) est un langage algébrique. Automates à pile déterministes Un automate à pile A = (Σ, Z,z,Q,q i,f, ) acceptant par état final est déterministe si l ensemble des règles de transitions vérifie : pour toute paire de règles (q,x,z) (q 1,m) et (q,x,z) (q 1,m ) de, si x = x alors q 1 = q 1 et m = m, si x Σ alors x Σ (i.e. x ǫ). Un langage algébrique L est déterministe s il existe un automate à pile A (acceptant par état final) déterministe tel que L F (A) = L. Tous les langages algébriques ne sont pas déterministes : {w (a+b) w est un palindrome} n est pas déterministe. Les automates à pile ne sont pas déterminisables. 2 Si les règles ne sont pas de cette forme alors on peut transformer la grammaire de la façon suivante : pour chaque terminal a dans β, on crée un nouveau non-terminal X a, on remplace toutes les occurrences de a par X a dans β et on ajoute la production X a a. 13

14 Analyse syntaxique L analyse syntaxique est avant tout le problème d appartenance des grammaires algébriques Définition Le problème d appartenance est, donnés une grammaire algébrique G et un mot m de Σ, de décider si m L(G). Une méthode naïve consiste à génèrer toutes les dérivations possibles partant de l axiome (ou de manière équivalente, itérativement le langage engendré étendu); Si on arrive à engendrer le mot m alors on retourne OUI sinon on retourne NON Exemple pour les expressions régulières : G = ({a,b,(,),+, }, {R},R,P) avec P = {R R + R RR (R) R a b} on génère les langages étendus partiels L i L 0 = {R}, L 1 = L 0 {a,b,r + R,RR,R,(R), } a + R,b + R,R + a,r + b,ar,ra,br,rb, L 2 = L 1 a,b,(a),(b),r + R + R,R + RR, RR + R,R + R,(R + R),..... A chaque étape i, on teste si m L i. Problème : pour certaines grammaires, quand doit-on s arrêter en répondant NON? G = ({a}, {A,B,R},A, {A AB R, B ǫ, R ar ǫ}) Proposition Il existe un algorithme qui, pour toute grammaire G = (Σ,V,S,P) et pour tout mot m de Σ, teste si m L(G). Si m = ǫ alors on calcule V ǫ = {A V A G ǫ} ; on retourne S V ǫ ; Sinon on transforme G en une grammaire réduite et propre G. on utilise l algorithme naïf vu précédemment pour générer L m pour la grammaire G on retourne m L m Complexité : A chaque étape, on a n possibilités de règles de la grammaire et on a au moins m étapes. dans le pire des cas : O(n m ) Analyseurs syntaxiques Les algorithmes d analyse syntaxique sont en général scindés en deux familles : les analyseurs descendants : partant de l axiome, ils tentent de construire un arbre de dérivation (ou un dérivation droite/gauche) pour le mot à analyser. La construction de l arbre se fait de haut en bas. Les règles de production sont utilisées de la gauche vers la droite. JavaCC génère une analyse récursive descendante. les analyseurs ascendants : partant du mot à analyser, ils tentent de construire un arbre de dérivation (ou un dérivation droite/gauche) dont la racine est l axiome. La construction de l arbre se fait de bas en haut. Les règles de production sont utilisées de la droite vers la gauche. Yacc et CUP générent une analyse ascendante. Analyse syntaxique (suite) Les analyseurs syntaxiques universels fonctionnent pour toute grammaire algébrique : 14

15 algorithme de Cocke-Younger-Kasami pour des grammaires en forme normale de Chomsky ( Greibach); algorithme de Earley pour des grammaires algébriques quelconques. Leur complexité est en o(n 3 ), où n est la longueur du mot à analyser. cette complexité est trop élevée (programmes de grande taille), on souhaite o(n). Les langages de programmation peuvent être décrits par des grammaires en général peu complexes (en particulier, non-ambiguës). On peut réaliser une analyse syntaxique avec rebroussement : une méthode descendante qui construit une dérivation gauche on utilise autant que possible le mot d entrée (dans une lecture de gauche a droite) pour déterminer la règle à utiliser. si on ne peut pas déterminer la règle à utiliser, on fait un choix... si le choix s avère mauvais, on rebrousse son chemin pour faire un autre choix. Exemple d acceptation sans rebroussement avec G = ({a,b,c,d}, {S,T },S, {S asbt ct d, T at bs c}) a c c b b a d b c S a c c b b a d b c S g G asbt a c c b b a d b c g... G actbt g G accbt g G accbbs g G accbbasbt g G accbbadbc Le mot est accepté. Exemple avec rebroussement avec G = ({a,b,c}, {S,A},S, {S aab, A cd c}) a c b S a c b S g G aab a c b S g G aab g G acdb On a choisi la règle A cd. Il y a un conflit entre b et d. On fait un rebroussement et on essaye avec un autre choix, A c. a c b S g G aab a c b S g G aab g G acb Cette méthode est peu efficace en cas de rebroussement (proche de la méthode naïve). Analyseur prédictif descendant LL(k) Prédictif : on utilise une partie du mot d entrée pour prédire la règle à utiliser et de façon irrémédiable. Analyse prédictive descendante : Analyse LL(k) 15

16 Left-to-right scanning : on lit l entrée de gauche à droite. Leftmost derivation : on construit une dérivation gauche partant de l axiome. on utilise les k lettres courantes de l entrée pour faire la prédiction. On va principalement s intéresser à l analyse LL(1) : on ne regarde qu une lettre de l entrée. Il y a deux types d analyse descendante : l analyse récursive et l analyse non-récursive. Analyseur récursif LL(1) On a une grammaire algébrique G = (Σ,V,S,P). A toute variable V i V, on fait correspondre une procédure V i () en charge de reconnaître les mots w tels que V i G w. les différentes procédures vont s appeler les unes les autres selon les règles de production de la grammaire. Le programme d analyse est simplement un appel à la procédure de l axiome S. on place à la fin du mot à analyser un marqueur de fin $. le pointeur désignant une position dans le mot ne peut qu avancer (pas de rebroussement) mot d entrée un flôt de lettres. Plus important : selon le terminal désigné dans le mot d entrée, pour un non-terminal donné (partie gauche de règle), il n y a qu une règle de production utilisable. Pour la procédure V i () : 1. selon le terminal pointé par (chaque terminal est donc un cas), on considère la règle de production V i α 1...α n à utiliser 2. en séquence, pour j allant de 1 à n, si α j Σ, alors on appelle consommer(α j ). si α j V, on appelle la procédure α j () 3. si la règle à considérer est V i ǫ, alors on ne fait rien. procedure consommer(a) : - si pointe sur le terminal a alors on avance sinon on lève exception d erreur de syntaxe procedure analyse() : - on place le sur la première lettre du mot à analyser ; - S() ; - si ne pointe pas sur $ alors on lève une exception d erreur de syntaxe; 16

17 On ne peut pas construire un analyseur (récursif) LL(1) pour une grammaire G si : G est ambiguë G est récursive gauche A Aa ǫ : le pointeur reste sur la première lettre du mot à analyser et on ne peut choisir avec cette information assurément entre A Aa et A ǫ. G n est pas factorisée à gauche A aa ab : si le pointeur désigne a, on ne peut choisir avec cette information assurément entre A aa et A ab. Récursivité à gauche immédiate : la grammaire contient un non-terminal A et une règle de production A Aα (α (Σ V ) + ). générale : la grammaire contient un non-terminal A et il existe une dérivation A + G Aα (α (Σ V ) + ). Elimination de la récursivité à gauche immédiate On remplace les règles de la grammaire de la forme A Aα 1... Aα n β 1... β m où α i (Σ V ) + et β j (Σ V ) les β j ne commencent pas par A par les règles A β 1 A... β m A A α 1 A... α n A ǫ où A est un nouveau non-terminal. E E + T T Exemple : T T F F F (E) i E TE E +TE ǫ Après élimination de la récursivité gauche immédiate : T FT T FT ǫ F (E) i Elimination de la récursivité à gauche générale On ordonne les non-terminaux : A 1,A 2,...,A n On applique l algorithme suivant : Pour i allant de 1 à n faire Pour j allant de 1 à i 1 faire on remplace la règle A i A j α où A j β 1... β k par la règle A i β 1 α... β k α. FinPour On élimine la récursivité à gauche immédiate pour toutes les règles de A i. FinPour 17

18 S Aa b Premier exemple : On ordonne : S,A A Ac Sd c 1ère itération : S Aa b, on ne change rien... 2ème itération : On remplace A Sd par A Aad bd. S Aa b A Ac Aad bd c Elimination de la récursivité gauche immédiate pour A : S Aa b A ca bda A ca ada ǫ S Sa TSc d Deuxième exemple : T TbT ǫ On ordonne : S,T 1ère itération : S Sa TSc d, élimination de la récursivité immédiate pour S S TScS ds S as ǫ T TbT ǫ 2ème itération : T TbT ǫ, élimination de la récursivité immédiate pour T S TScS ds T T S as ǫ T btt ǫ Malheureusement, S G TScS G T ScS G ScS!! l algorithme ne fonctionne pas toujours, notamment à cause des règles de la forme X ǫ, ou plus généralement si X G ǫ. Cependant, si la grammaire est propre, alors cette méthode pour ôter le récursivité gauche fonctionne toujours. Factorisation à gauche d une grammaire On remplace les règles de la forme X αβ 1... αβ n γ 1... γ m où α (Σ V ) + et β i,γ j (Σ V ), le préfixe commun α est choisi le plus grand possible, α n est pas préfixe des γ j. par les règles X αx γ 1... γ m X β 1... β n où X est un nouveau non-terminal. On réitère tant que nécessaire. 18

19 Analyseur non récursif LL(1) Dans l analyseur récursif descendant vu précédemment, c est la pile des appels de procédure qui est en fait utilisée pour empiler les règles (puisqu on fait correspondre à un non terminal une procédure) et dépiler les terminaux (les procédures se terminent quand on a lu les terminaux qui leur sont associés). Pour construire un analyseur non récursif (qui sera donc un automate à pile), on construit une table d analyse qui détermine le comportement de l automate en fonction du sommet de pile et du terminal lu. p a a b b b b $ mot à analyser Table d analyse Analyseur Prédictif A b b B OUI/NON Table d analyse La table d analyse contient une entrée pour chaque couple (a,x) (a Σ, X V ). L entrée (a,x) contient au plus une règle de production X γ qui est la règle utilisée pour dériver le non-terminal X si le pointeur p du mot à analyser pointe sur le terminal a. Une entrée vide dans la table correspond en fait à une erreur, c est-à-dire un mot non-engendré par la grammaire. Fontionnement de l analyseur non récursif Initialement, le pointeur p désigne la première lettre du mot à analyser et la pile contient l axiome de la grammaire. Tant que vrai faire si la pile est vide alors si p $ alors retourner OUI si p a et a $ alors retourner NON si le sommet de pile est un terminal a alors si p a alors dépiler a et avancer p si p b (b a) alors retourner NON si le sommet de pile est un non-terminal X alors si p a et l entrée de la table d analyse pour (a,x) est vide alors retourner NON si p a et l entrée de la table d analyse pour (a,x) contient X ǫ alors dépiler X si p a et l entrée de la table d analyse pour (a,x) contient X α 1... α n (α i (Σ V )) alors dépiler X ; empiler α n ;...; empiler α 1 FinTantque Pile 19

20 Exemple G = ({a,b}, {S,B},A,S,P) avec P = {S AB, A aab ǫ, B bb ǫ} Table d analyse : a b $ S S AB S AB S AB A A aab A ǫ A ǫ B B bb B ǫ Construction de la table d analyse Soit G une grammaire algébrique G = (Σ,V,S,P). Il faut déterminer pour chaque couple (a,s) Σ V la règle de production S γ que l automate doit utiliser. Suivant la grammaire, pour un terminal a et un non-terminal S, on peut avoir différents cas de figure : S as b Utiliser la règle S as. S A B A aa ǫ B bb ǫ Utiliser la règle S A. S DA B A aa ǫ B bb ǫ D dd ǫ Utiliser la règle S DA. Le prédicat Eps(w),w (Σ V ) + (ou Epsilon(w)) On définit pour tout mot w de (Σ V ) + le prédicat Eps(w) qui est vrai ssi w G ǫ. Eps(ǫ) est vrai soit α 1...α n avec α i (Σ V ), s il existe un j tel que α j Σ, alors Eps(α 1...α n ) est faux. si Eps(α 1...α n ) est vrai alors α 1,...,α n V ǫ En calculant V ǫ pour la grammaire G, on peut déterminer pour un mot w (Σ V ) + la valeur de Eps(w) (V ǫ = {X V X G ǫ} i.e. terminaux se dérivant en ǫ). L ensemble Premier(w),w (Σ V ) + Pour tout mot w de (Σ V ) +, on définit Premier(w) comme {a Σ w G aw }. Calcul de Premier(w) : Premier(w) est le plus petit ensemble de terminaux qui vérifie : si a Σ alors Premier(a) = {a}. si X V et X β P alors Premier(β) Premier(X). pour α 1...α n (avec α i (Σ V )), on a Premier(α 1 ) Premier(α 1...α n ). Pour i allant de 1 à n 1 faire Si Eps(α 1...α i ) est vrai alors Premier(α i+1 ) Premier(α 1...α n ) 20

21 Exemple de calcul des premiers S DA B A aa ǫ B bb ǫ D dd ǫ Premier(D) = {d}, Premier(B) = {b} Premier(A) = {a} Premier(D) Premier(S) Premier(B) Premier(S) Premier(A) Premier(S) car D G ǫ Donc, Premier(S) = {a, b, d}. A ce stade, la table d analyse contiendra une règle X α pour chaque entrée (a, X), a Σ telle que a appartient à Premier(α). En effet, l ensemble des premiers d un non terminal X désigne intuitivement l ensemble des terminaux que l on peut rencontrer comme préfixe dans une dérivation de X. On note ainsi dans la table la première règle de production utilisée dans la dérivation X G aβ pour l entrée (a,x). a b d $ S S DA S B S DA A A aa B B bb D D dd Cependant si cette dérivation comporte plusieurs étapes, elle utilise nécessairement des règles de production de la forme Y ǫ. Or le calcul des premiers ne permet pas de placer les règles de production de cette forme dans la table. Il faut ici calculer les suivants de Y car, comme Y ǫ, les premiers terminaux que l on peut rencontrer en dérivant Y sont donnés par les premiers des variables apparaissant après Y dans l ensemble des règles de production. Plus généralement ceci s applique pour toute variable X qui peut se dériver en ǫ (X G ǫ). L ensemble Suivant(X), X V Pour tout non-terminal X de V, on définit Suivant(X) comme {a Σ S G uxav} {$ S G ux}. Calcul de Suivant(X) : Suivant(X) est le plus petit ensemble de terminaux ou $ qui vérifie : Pour l axiome S, $ Suivant(S). si Y αxβ P alors Premier(β) Suivant(X). si Y αx P ou Y αxβ P avec Eps(β) = vrai alors Suivant(Y ) Suivant(X). Exemple de calcul des suivants S DA B A aa ǫ B bb ǫ D dd ǫ Suivant(D) = Premier(A) Suivant(S) = {a, $} Suivant(B) = Suivant(S) = {$} Suivant(A) = Suivant(S) = {$} Suivant(S) = {$} Ceci permet de compléter la table d analyse précédente, en ajoutant un règle X α, avec 21

22 Eps(α) =vrai, pour toute entrée (e,x) telle que e appartient à Suivant(X). a b d $ S S DA S B S DA S DA S B A A aa A ǫ B B bb B ǫ D D ǫ D dd D ǫ Construction de la table d analyse Pour chaque règle de production X α (α (Σ V ) + ), pour chaque terminal a de Premier(α), Mettre X α à l entrée (a,x) de la table. Pour chaque règle de production X α avec Eps(α) =vrai, Mettre X α à l entrée (e,x) de la table pour tout élément e dans Suivant(X) (e Σ ou e = $). Grammaire LL(1) Si la table d analyse contient au plus une règle de production par entrée, alors la grammaire est LL(1) ; dans le cas contraire, la grammaire n est pas LL(1). Une grammaire n est pas LL(1) s il existe deux règles de production X α et X β telles que Premier(α) Premier(β) ǫ, ou Premier(β) Suivant(X) ǫ avec Eps(α) =vrai. Eps(α) =vrai et Eps(β) =vrai Attention!! Les conditions de non-ambiguïté, de non-récursivité gauche et de factorisation à gauche ne sont que des conditions nécessaires pour qu une grammaire soit LL(1). Elles ne sont pas suffisantes. La grammaire ({a,b}, {S,A},S,P) avec P = {S asb A, A aa ǫ} n est pas ambigüe, n est pas récursive gauche est factorisée à gauche mais elle n est pas LL(1). Analyse syntaxique ascendante L analyse ascendante correspond à la seconde manière de construire systématiquement un automate à pile partant d une grammaire donnée (voir Cours-TD 4 page 3). Dans cet automate, les transitions empilent les symboles terminaux de la grammaire, et dépilent les non terminaux en ce sens qu un membre droit de règle situé en sommet de pile est remplacé par le membre gauche correspondant. Plus prosaiquement : on part du mot à analyser, on remplace itérativement des fragments du mot courant qui correspondent à des membres droits de règle de production par le membre gauche de cette règle, l analyse réussit si le mot courant final est l axiome de la grammaire Analyseur ascendant prédictif LR(k) Left-to-right scanning : on lit l entrée de gauche à droite. 22

23 Rightmost derivation in reverse : on construit une dérivation droite en partant du mot à analyser. on utilise k lettres du mot d entrée pour faire la prédiction. Famille d algorithmes (LR(0), SLR(1), LR(1), LALR(1)) basés sur les opérations de décalage/réduction. décalage : on lit des terminaux dans le mot d entrée réduction : on remplace une partie droite par une partie gauche de règle de production. On souhaite analyser le mot w = a 1... a n pour une grammaire G. A chaque instant, on dispose : d un suffixe w du mot d entrée d une pile contenant des terminaux et des non-terminaux Initialement, le suffixe est le mot à analyser w et la pile est vide. A chaque étape de l algorithme, si le suffixe est a m... a n et le contenu de la pile est α 1...α l (où α l est le sommet de pile), on a α 1...α l G a 1...a m 1. L analyse réussit si le mot w a été entièrement lu et si la pile contient l axiome. S S Augmentation de la grammaire Prenons pour exemple la grammaire suivante : S Ac A AaAb d Décalage : le premier terminal du mot d entrée est effacé et est placé au sommet de la pile. dadbc d adbc Réduction : les n premiers symboles sur la pile forme un membre droit de règle de production, on les dépile et on empile le membre gauche correspondant. d adbc A adbc En continuant le processus : on ne peut pas réduire, donc on décale Aa dbc$ dadbc Aadbc on ne peut pas réduire, donc on décale Aad bc$ dadbc Aadbc Ni Aad, ni ad, ni d ne sont préfixe strict d un membre droit de règle, donc un décalage ne peut être utile; donc on réduit AaA bc$ dadbc Aadbc AaAbc on ne peut pas réduire, donc on décale AaAb c$ dadbc Aadbc AaAbc Ni AaAb, ni aab, ni Ab, ni b ne sont préfixe strict d un membre droit de règle, donc un décalage ne peut être utile ; donc on réduit A c$ dadbc Aadbc AaAbc Ac on ne peut pas réduire, donc on décale Ac $ dadbc Aadbc AaAbc Ac on ne peut plus décaler ; on réduit S $ dadbc Aadbc AaAbc Ac S on réduit à nouveau S $ dadbc Aadbc AaAbc Ac S S Le mot dadbc est bien engendré par la grammaire. Comment par un algorithme décider à chaque étape si on doit réduire (et par quelle règle) ou décaler? On construit un automate déterministe appelé automate LR(0) qui dira quoi faire en fonction du contenu de la pile et la première lettre de l entrée. Automates LR(0) 23

24 Règles pointées Pour toute règle de la grammaire X βγ (avec β,γ (Σ V ), X β γ est une règle pointée. Une règle pointée X β γ est dite complète si γ = ǫ. Saturation Un ensemble de règles pointées E est dit saturé si X β Y γ appartient à E et Y V alors pour toute règle Y α de la grammaire, Y α appartient à E. Pour un ensemble de règles pointées E, on note Saturation(E) le plus petit ensemble saturé E contenant E. Etats de l automate : Les états Q de l automate LR(0) seront des ensembles saturés de règles pointées. Ils sont souvent appelés collections LR(0) (ou LR(0)-items). L état initial de l automate est Saturation({S S}). Transitions de l automate : Pour un ensemble saturé de règles pointées E et x Σ V, on définit l état δ(e,x) comme Saturation({X βx γ X β xγ E}) Lors de la construction de l automate, on ne considèrera bien-sûr que les états accessibles, en partant de l état initial Saturation({S S}). La construction de l automate est totalement indépendante du mot d entrée (pas de symbole de prévision), d où son nom : LR(0). On utilise l automate pour lire le mot dans la pile. Si la pile contient α 1...α m, alors l état q = δ(0,α 1...α m ) (où 0 est l état initial) nous dit ce qu il faut faire : si l état q contient une règle pointée complète X β, alors on réduit en utilisant la règle X β. si le mot courant débute par le terminal a de Σ et s il existe une transition δ(q,a) = q, alors on décale. Si pour tout état q de l automate, q ne contient au plus qu une seule règle pointée complète (pas de conflit réduction/réduction) et si q contient une règle pointée complète alors pour aucun a de Σ il n existe de transition q = δ(q,a) (pas de conflit décalage/réduction), alors l automate est dit LR(0)-consistant et la grammaire est alors LR(0). Plutot que d évaluer systèmatiquement δ(0,α 1...α m ) où α 1...α m est le contenu de la pile (lu du bas vers le haut), on garde trace des états directement dans la pile. La pile est donc une suite 0α 1 q 1 α 2... q m 1 α m q m où les q i sont des états de l automate, q i = δ(q i 1,α i ) = δ(0,α 1...α i ) pour tout 1 i m. Initialement, la pile contient l état initial 0. Lors d une étape du calcul, si on décale un terminal a, on empile a puis l état q = δ(q m,a). si on réduit par une règle X α r...α m, on dépile q m, α m, q m 1,..., q r et α r. on empile X puis l état δ(q r 1,X). Tables LR(0) L automate LR(0) est en fait codé dans deux tables, une table Action et une table Successeur : Action : Q (Σ {$}) un ensemble d actions. Les actions : décaler q : dq avec q Q. réduire p : r p avec p une production accepter erreur Successeur : Q V Q est la restriction de la fonction de transition aux non-terminaux. 24

25 On remplit ces tables à partir de l automate LR(0). Table Action : pour tout a Σ, q Q, si δ(q,a) = q alors mettre dq dans la case (q,a) pour tout a (Σ {$}), q Q, si q contient une règle pointée complète X β avec X S, alors mettre r X β dans la case (q,a) mettre accepter dans la case (q,$) où q est l état contenant S S. mettre erreur dans toutes les cases encore vide. Si l automate est LR(0)-consistant alors les cases de la table Action contiennent exactement une action. Table Successeur : pour tout q Q et X V, si δ(q,x) = q alors mettre q dans la case (q,x). Fonctionnement d un analyseur LR Entrée à analyser : a m a m+1...a n Pile q k α k q k 1. q 0 Analyseur LR Sortie Action Successeur Ce schéma est le même pour tous les analyseurs LR (LR(0),SLR(1),LALR(1), LR(1),LR(k)) ; seules changent les tables Action et Successeur. La pile contient 0α 1 q 1 α 2... q m 1 α m q m et le mot à analyser est α m+1... α n. Si la case (q m,α m+1 ) de la table Action contient accepter alors l analyse réussit, erreur alors l analyse échoue, dq, on empile α m+1, puis q, r X α r...α m, on dépile α m,...,α r et les états correspondants q m,...,q r ; on empile X, puis le contenu de la case (q r 1,X) de la table Successeur. Exemple 0 dadbc$ Action contient d 3 en (0, d) 0d3 adbc$ Action contient r A d en (3, a) et Successeur 2 en (0, A) 0A2 adbc$ Action contient d 5 en (2, a) 0A2a5 dbc$ Action contient d 3 en (5, d) 0A2a5d3 bc$ Action contient r A d en (3, b) et Successeur 7 en (5, A) 0A2a5A7 bc$ Action contient d 6 en (7, b) 0A2a5A7b6 c$ Action contient r A AaAb en (6, c) et Successeur 2 en (0, A) 25

26 0A2 c$ Action contient d 4 en (2, c) 0A2c4 $ Action contient r S Ac en (4,$) et Successeur 1 en (0, S) 0S1 $ Action contient accepter en (1, $) Conflits dans un automate Un automate n est pas LR(0)- consistant s il y a des conflits décalage/réduction ou/et réduction/réduction pour un état Analyse SLR(1) On peut résoudre les conflits décalage/réduction en regardant si le terminal en tête du mot restant à analyser est dans l ensemble des Suivants du non-terminal en membre gauche de la règle utilisable pour la réduction.si c est le cas, on effectue la réduction, sinon on effectue un décalage. Ceci est formalisé par la méthode SLR(1) dont voici la manière de construire la table Action à partir de l automate LR(0) : Si l automate LR(0) a une ensemble d états Q et un ensemble de transitions δ, Table Action : pour tout a Σ, q Q, si δ(q,a) = q alors mettre dq dans la case (q,a) pour toute règle pointée complète X β de q avec X S, mettre r X β dans la case (q, a) pour tout a Suivant(X). mettre accepter dans la case (q,$) où q est l état contenant S S. mettre erreur dans toutes les cases encore vide. Table Successeur : identique à la table Successeur LR(0). Si la table Action contient exactement une action par case, alors la grammaire est SLR(1). Une seule action par case dans la table Action la grammaire est SLR(1). toute grammaire LR(0) est SLR(1) toute grammaire SLR(1) est non-ambigüe bcp de grammaires non ambigües ne sont pas SLR(1) Analyse LR(1) On enrichit les règles pointées avec des terminaux qui permettent de prédire quand effectuer une réduction plutôt qu un décalage. Automates LR(1) Les états d un automate LR(1) sont des ensembles de règles pointées étendues. Une règle pointée étendue est une règle pointée associée à un symbole terminal a (a Σ {$}) et se note X α β,a. Si dans un même état, on a X α β,a et X α β,b, on notera de manière plus concise X α β,a b. Remarque : si un état contient une règle pointée complète X γ, a b c, alors {a, b, c} Suivant(X), mais il est possible que ce ne soit qu un sous-ensemble strict. Saturation d un ensemble de règles pointées étendues : un ensemble de règles pointées étendues E est dit saturé si X β Y γ,a appartient à E et Y V alors pour toute règle Y α de la grammaire, Y α,b avec b Premier(γa) appartient à E. Pour un ensemble de règles pointées étendues E, on note Saturation(E) le plus petit ensemble saturé E contenant E. Remplissage des tables à partir de l automate LR(1) Table Successeur : pour tout q Q et X V, si δ(q,x) = q alors mettre q dans la case (q,x) (identique aux méthodes LR(0) et SLR(1)). 26

27 Table Action : pour tout a Σ, q Q, si δ(q,a) = q alors mettre dq dans la case (q,a) pour tout a (Σ {$}), q Q, si q contient une règle pointée complète X β,a avec X S, alors mettre r X β dans la case (q,a) mettre accepter dans la case (q,$) où q est l état contenant S S,$. mettre erreur dans toutes les cases encore vide. De manière générale, les automates LR(1) peuvent comporter des milliers d états (produit cartésien) pour des langages de programmation classiques. Automates LALR(1) Dans l automate LR(1) décrit précédemment, il existe des états qui ne diffèrent d autres états que par les symboles de prévision associés aux règles pointées. Lorsque deux états de l automate LR(1) ne diffèrent que sur les caractères de prévision, on dit qu ils ont le même cœur LR(0). L idée de la méthode LALR(1) est de fusionner les états LR(1) ayant le même cœur LR(0) en créant un état dont les règles sont l union des règles des deux états fusionnés. On construit l automate LALR(1) à partir de l automate LR(1) en fusionnant les états ayant le même cœur LR(0). Les transitions de l automate sont simplement mises à jour en fonction des fusions effectuées. Remarquez que dans l automate LR(1), les cœurs LR(0) des états sont précisément les états de l automates LR(0). Donc l automate LALR(1) a exactement le même nombre d états que l automate LR(0). Le remplissage des tables Action et Suivant LALR(1) se fait comme le remplissage des tables LR(1) mais à partir de l automate LALR(1). Si la table Action ne comporte qu une action par case, alors la grammaire est LALR(1). Voici quelques remarques à noter : toute grammaire LALR(1) est LR(1). la fusion des états peut créer des conflits qui n existaient pas dans l automate LR(1) Il existe des grammaires LR(1) qui ne sont pas LALR(1). les grammaires LR(1) et donc, LALR(1) ne sont pas ambigües. 27

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

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages Analyse syntaxique descendante Claude Moulin Université de Technologie de Compiègne Printemps 2010 Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1) Exemple : Grammaire

Plus en détail

CH.6 Propriétés des langages non contextuels

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

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies INF 232: Langages et Automates Travaux Dirigés Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies Année Académique 2013-2014 Année Académique 2013-2014 UNIVERSITÉ JOSEPH

Plus en détail

Exercices - Polynômes : corrigé. Opérations sur les polynômes

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

Chapitre 2. Matrices

Chapitre 2. Matrices Département de mathématiques et informatique L1S1, module A ou B Chapitre 2 Matrices Emmanuel Royer emmanuelroyer@mathuniv-bpclermontfr Ce texte mis gratuitement à votre disposition a été rédigé grâce

Plus en détail

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

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

Résolution de systèmes linéaires par des méthodes directes

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

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.

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

DOCM 2013 http://docm.math.ca/ Solutions officielles. 1 2 10 + 1 2 9 + 1 2 8 = n 2 10.

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

Polynômes à plusieurs variables. Résultant

Polynômes à plusieurs variables. Résultant Polynômes à plusieurs variables. Résultant Christophe Ritzenthaler 1 Relations coefficients-racines. Polynômes symétriques Issu de [MS] et de [Goz]. Soit A un anneau intègre. Définition 1.1. Soit a A \

Plus en détail

Le théorème de Thalès et sa réciproque

Le théorème de Thalès et sa réciproque Le théorème de Thalès et sa réciproque I) Agrandissement et Réduction d une figure 1) Définition : Lorsque toutes les longueurs d une figure F sont multipliées par un même nombre k on obtient une autre

Plus en détail

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES Théorème - Définition Soit un cercle (O,R) et un point. Une droite passant par coupe le cercle en deux points A et

Plus en détail

Pour l épreuve d algèbre, les calculatrices sont interdites.

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

Fondements de l informatique Logique, modèles, et calculs

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

Cours d Analyse. Fonctions de plusieurs variables

Cours d Analyse. Fonctions de plusieurs variables Cours d Analyse Fonctions de plusieurs variables Licence 1ère année 2007/2008 Nicolas Prioux Université de Marne-la-Vallée Table des matières 1 Notions de géométrie dans l espace et fonctions à deux variables........

Plus en détail

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015 Énoncé Soit V un espace vectoriel réel. L espace vectoriel des endomorphismes de V est désigné par L(V ). Lorsque f L(V ) et k N, on désigne par f 0 = Id V, f k = f k f la composée de f avec lui même k

Plus en détail

De 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

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

Initiation à l algorithmique

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à 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

1 Définition et premières propriétés des congruences

1 Définition et premières propriétés des congruences Université Paris 13, Institut Galilée Département de Mathématiques Licence 2ème année Informatique 2013-2014 Cours de Mathématiques pour l Informatique Des nombres aux structures Sylviane R. Schwer Leçon

Plus en détail

par Denis-Charles Cisinski & Georges Maltsiniotis

par Denis-Charles Cisinski & Georges Maltsiniotis LA CATÉGORIE Θ DE JOYAL EST UNE CATÉGORIE TEST par Denis-Charles Cisinski & Georges Maltsiniotis Résumé. Le but principal de cet article est de prouver que la catégorie cellulaire Θ de Joyal est une catégorie

Plus en détail

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

Représentation géométrique d un nombre complexe

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

Résolution d équations non linéaires

Résolution d équations non linéaires Analyse Numérique Résolution d équations non linéaires Said EL HAJJI et Touria GHEMIRES Université Mohammed V - Agdal. Faculté des Sciences Département de Mathématiques. Laboratoire de Mathématiques, Informatique

Plus en détail

Chapitre 5 : Flot maximal dans un graphe

Chapitre 5 : Flot maximal dans un graphe Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d

Plus en détail

Rappels sur les suites - Algorithme

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

Continuité et dérivabilité d une fonction

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

Structures algébriques

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

Chapitre 2 Le problème de l unicité des solutions

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

Introduction à la théorie des graphes. Solutions des exercices

Introduction à la théorie des graphes. Solutions des exercices CAHIERS DE LA CRM Introduction à la théorie des graphes Solutions des exercices Didier Müller CAHIER N O 6 COMMISSION ROMANDE DE MATHÉMATIQUE 1 Graphes non orientés Exercice 1 On obtient le graphe biparti

Plus en détail

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer Pour commencer Exercice 1 - Ensembles de définition - Première année - 1. Le logarithme est défini si x + y > 0. On trouve donc le demi-plan supérieur délimité par la droite d équation x + y = 0.. 1 xy

Plus en détail

Intelligence Artificielle Planification

Intelligence Artificielle Planification Intelligence Artificielle Planification Bruno Bouzy http://web.mi.parisdescartes.fr/~bouzy bruno.bouzy@parisdescartes.fr Licence 3 Informatique UFR Mathématiques et Informatique Université Paris Descartes

Plus en détail

Géométrie dans l espace Produit scalaire et équations

Géométrie dans l espace Produit scalaire et équations Chapitre 11. 2ème partie Géométrie dans l espace Produit scalaire et équations Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES 2ème partie Produit scalaire Produit scalaire

Plus en détail

Vecteurs. I Translation. 1. Définition :

Vecteurs. I Translation. 1. Définition : Vecteurs I Translation Soit A et B deux points du plan. On appelle translation qui transforme A en B la transformation du plan qui a tout point M associe le point M tel que [AM ] et [BM] aient le même

Plus en détail

Dualité dans les espaces de Lebesgue et mesures de Radon finies

Dualité dans les espaces de Lebesgue et mesures de Radon finies Chapitre 6 Dualité dans les espaces de Lebesgue et mesures de Radon finies Nous allons maintenant revenir sur les espaces L p du Chapitre 4, à la lumière de certains résultats du Chapitre 5. Sauf mention

Plus en détail

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

2.4 Représentation graphique, tableau de Karnaugh

2.4 Représentation graphique, tableau de Karnaugh 2 Fonctions binaires 45 2.4 Représentation graphique, tableau de Karnaugh On peut définir complètement une fonction binaire en dressant son tableau de Karnaugh, table de vérité à 2 n cases pour n variables

Plus en détail

1.1 Rappels sur le produit cartésien... 1. 1.2 Relations... 3. 1.3 Graphes dirigés... 8. 1.4 Arbres... 12. 1.5 Exercices... 19. 2.1 Motivation...

1.1 Rappels sur le produit cartésien... 1. 1.2 Relations... 3. 1.3 Graphes dirigés... 8. 1.4 Arbres... 12. 1.5 Exercices... 19. 2.1 Motivation... Table des matières 1 Relations et graphes 1 1.1 Rappels sur le produit cartésien.................... 1 1.2 Relations.................................. 3 1.3 Graphes dirigés..............................

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

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

Algèbre binaire et Circuits logiques (2007-2008)

Algèbre binaire et Circuits logiques (2007-2008) Université Mohammed V Faculté des Sciences Département de Mathématiques et Informatique Filière : SMI Algèbre binaire et Circuits logiques (27-28) Prof. Abdelhakim El Imrani Plan. Algèbre de Boole 2. Circuits

Plus en détail

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin. Exo7 Matrice d une application linéaire Corrections d Arnaud odin. Exercice Soit R muni de la base canonique = ( i, j). Soit f : R R la projection sur l axe des abscisses R i parallèlement à R( i + j).

Plus en détail

Initiation à la programmation en Python

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

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x =

AC AB. A B C x 1. x + 1. d où. Avec un calcul vu au lycée, on démontre que cette solution admet deux solutions dont une seule nous intéresse : x = LE NOMBRE D OR Présentation et calcul du nombre d or Euclide avait trouvé un moyen de partager en deu un segment selon en «etrême et moyenne raison» Soit un segment [AB]. Le partage d Euclide consiste

Plus en détail

I. Ensemble de définition d'une fonction

I. Ensemble de définition d'une fonction Chapitre 2 Généralités sur les fonctions Fonctions de références et fonctions associées Ce que dit le programme : Étude de fonctions Fonctions de référence x x et x x Connaître les variations de ces deux

Plus en détail

Limites finies en un point

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

Algorithmes récursifs

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

Corrigé du baccalauréat S Asie 21 juin 2010

Corrigé du baccalauréat S Asie 21 juin 2010 Corrigé du baccalauréat S Asie juin 00 EXERCICE Commun à tous les candidats 4 points. Question : Le triangle GBI est : Réponse a : isocèle. Réponse b : équilatéral. Réponse c : rectangle. On a GB = + =

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

1ère partie Nadine Cullot. Bases de données déductives. Bases de données déductives Introduction et Motivation

1ère partie Nadine Cullot. Bases de données déductives. Bases de données déductives Introduction et Motivation Master STIC «Image Informatique et Ingénierie» Module Informatique Modèles de représentation - 10h CM Nadine Cullot Kokou Yétongnon nadine.cullot@u-bourgogne.fr kokou.yetongnon@u-bourgogne.fr 1ère partie

Plus en détail

Exercices de géométrie

Exercices de géométrie Exercices de géométrie Stage olympique de Bois-le-Roi, avril 2006 Igor Kortchemski Exercices vus en cours Exercice 1. (IMO 2000) Soient Ω 1 et Ω 2 deux cercles qui se coupent en M et en N. Soit la tangente

Plus en détail

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

Extrait du poly de Stage de Grésillon 1, août 2010

Extrait du poly de Stage de Grésillon 1, août 2010 MINI-COURS SUR LES POLYNÔMES À UNE VARIABLE Extrait du poly de Stage de Grésillon 1, août 2010 Table des matières I Opérations sur les polynômes 3 II Division euclidienne et racines 5 1 Division euclidienne

Plus en détail

1S Modèles de rédaction Enoncés

1S Modèles de rédaction Enoncés Par l équipe des professeurs de 1S du lycée Parc de Vilgénis 1S Modèles de rédaction Enoncés Produit scalaire & Corrigés Exercice 1 : définition du produit scalaire Soit ABC un triangle tel que AB, AC

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

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

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 1 de 46 Algorithmique Trouver et Trier Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 46 Algorithmes et structures de données La plupart des bons algorithmes

Plus en détail

Réalisabilité et extraction de programmes

Réalisabilité et extraction de programmes Mercredi 9 mars 2005 Extraction de programme: qu'est-ce que c'est? Extraire à partir d'une preuve un entier x N tel que A(x). π x N A(x) (un témoin) (En fait, on n'extrait pas un entier, mais un programme

Plus en détail

Définitions. Numéro à préciser. (Durée : )

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

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

Calculabilité Cours 3 : Problèmes non-calculables. http://www.irisa.fr/lande/pichardie/l3/log/

Calculabilité Cours 3 : Problèmes non-calculables. http://www.irisa.fr/lande/pichardie/l3/log/ Calculabilité Cours 3 : Problèmes non-calculables http://www.irisa.fr/lande/pichardie/l3/log/ Problèmes et classes de décidabilité Problèmes et classes de décidabilité Nous nous intéressons aux problèmes

Plus en détail

Compilation. Algorithmes d'analyse syntaxique

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

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

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

Évaluation et implémentation des langages

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Représentation d un entier en base b

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

Bases de données Cours 5 : Base de données déductives

Bases de données Cours 5 : Base de données déductives Cours 5 : ESIL Université de la méditerranée Odile.Papini@esil.univmed.fr http://odile.papini.perso.esil.univmed.fr/sources/bd.html Plan du cours 1 Introduction 2 approche sémantique approche axiomatique

Plus en détail

INFORMATIONS DIVERSES

INFORMATIONS DIVERSES Nom de l'adhérent : N d'adhérent :.. INFORMATIONS DIVERSES Rubrique Nom de la personne à contacter AD Date de début exercice N BA Date de fin exercice N BB Date d'arrêté provisoire BC DECLARATION RECTIFICATIVE

Plus en détail

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

Modèles de Calcul. Yassine Lakhnech. 2007/08 Université Joseph Fourier Lab.: VERIMAG. Yassine.Lakhnech@imag.fr. Modèles de Calcul Start p.

Modèles de Calcul. Yassine Lakhnech. 2007/08 Université Joseph Fourier Lab.: VERIMAG. Yassine.Lakhnech@imag.fr. Modèles de Calcul Start p. Modèles de Calcul Yassine Lakhnech Yassine.Lakhnech@imag.fr 2007/08 Université Joseph Fourier Lab.: VERIMAG Modèles de Calcul Start p.1/81 Équipe pédagogique Cours : Saddek Bensalem et Yassine Lakhnech

Plus en détail

Algorithmique et Programmation Fonctionnelle

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

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 %

Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 % 23 CALCUL DE L INTÉRÊT Tau d intérêt Paul et Rémi ont reçu pour Noël, respectivement, 20 et 80. Ils placent cet argent dans une banque, au même tau. Au bout d une année, ce placement leur rapportera une

Plus en détail

3. Conditionnement P (B)

3. Conditionnement P (B) Conditionnement 16 3. Conditionnement Dans cette section, nous allons rappeler un certain nombre de définitions et de propriétés liées au problème du conditionnement, c est à dire à la prise en compte

Plus en détail

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA 75. Un plombier connaît la disposition de trois tuyaux sous des dalles ( voir figure ci dessous ) et il lui suffit de découvrir une partie de chacun d eux pour pouvoir y poser les robinets. Il cherche

Plus en détail

Algorithme. Table des matières

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

LE PRODUIT SCALAIRE ( En première S )

LE PRODUIT SCALAIRE ( En première S ) LE PRODUIT SCALAIRE ( En première S ) Dernière mise à jour : Jeudi 4 Janvier 007 Vincent OBATON, Enseignant au lycée Stendhal de Grenoble ( Année 006-007 ) 1 Table des matières 1 Grille d autoévaluation

Plus en détail

Équations non linéaires

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

Probabilités sur un univers fini

Probabilités sur un univers fini [http://mp.cpgedupuydelome.fr] édité le 7 août 204 Enoncés Probabilités sur un univers fini Evènements et langage ensembliste A quelle condition sur (a, b, c, d) ]0, [ 4 existe-t-il une probabilité P sur

Plus en détail

Cours d analyse numérique SMI-S4

Cours d analyse numérique SMI-S4 ours d analyse numérique SMI-S4 Introduction L objet de l analyse numérique est de concevoir et d étudier des méthodes de résolution de certains problèmes mathématiques, en général issus de problèmes réels,

Plus en détail

Amphi 3: Espaces complets - Applications linéaires continues

Amphi 3: Espaces complets - Applications linéaires continues Amphi 3: Espaces complets - Applications linéaires continues Département de Mathématiques École polytechnique Remise en forme mathématique 2013 Suite de Cauchy Soit (X, d) un espace métrique. Une suite

Plus en détail

Note de cours. Introduction à Excel 2007

Note de cours. Introduction à Excel 2007 Note de cours Introduction à Excel 2007 par Armande Pinette Cégep du Vieux Montréal Excel 2007 Page: 2 de 47 Table des matières Comment aller chercher un document sur CVMVirtuel?... 8 Souris... 8 Clavier

Plus en détail

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre : Terminale STSS 2 012 2 013 Pourcentages Synthèse 1) Définition : Calculer t % d'un nombre, c'est multiplier ce nombre par t 100. 2) Exemples de calcul : a) Calcul d un pourcentage : Un article coûtant

Plus en détail

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

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e P r o b l é m a t i q u e OCL : O b j e c t C o n s t r a i n t L a n g u a g e Le langage de contraintes d UML Les différents diagrammes d UML permettent d exprimer certaines contraintes graphiquement

Plus en détail

Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites

Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites I Droites perpendiculaires Lorsque deux droites se coupent, on dit qu elles sont sécantes Les droites (d 1 ) et (d 2 ) sont sécantes en A Le point A est le point d intersection des 2 droites Lorsque deux

Plus en détail

Utilisation des tableaux sémantiques dans les logiques de description

Utilisation des tableaux sémantiques dans les logiques de description Utilisation des tableaux sémantiques dans les logiques de description IFT6281 Web Sémantique Jacques Bergeron Département d informatique et de recherche opérationnelle Université de Montréal bergerja@iro.umontreal.ca

Plus en détail

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

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

Correction du Baccalauréat S Amérique du Nord mai 2007

Correction du Baccalauréat S Amérique du Nord mai 2007 Correction du Baccalauréat S Amérique du Nord mai 7 EXERCICE points. Le plan (P) a une pour équation cartésienne : x+y z+ =. Les coordonnées de H vérifient cette équation donc H appartient à (P) et A n

Plus en détail

Introduction à MATLAB R

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

Chapitre 2. Eléments pour comprendre un énoncé

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

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

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

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES. CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE EQUATIONS DIFFERENTIELLES Le but de ce chapitre est la résolution des deux types de systèmes différentiels linéaires

Plus en détail

3 Approximation de solutions d équations

3 Approximation de solutions d équations 3 Approximation de solutions d équations Une équation scalaire a la forme générale f(x) =0où f est une fonction de IR dans IR. Un système de n équations à n inconnues peut aussi se mettre sous une telle

Plus en détail

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R.

1 radian. De même, la longueur d un arc de cercle de rayon R et dont l angle au centre a pour mesure α radians est α R. R AB =R. Angles orientés Trigonométrie I. Préliminaires. Le radian Définition B R AB =R C O radian R A Soit C un cercle de centre O. Dire que l angle géométrique AOB a pour mesure radian signifie que la longueur

Plus en détail

Activités numériques [13 Points]

Activités numériques [13 Points] N du candidat L emploi de la calculatrice est autorisé. Le soin, la qualité de la présentation entrent pour 2 points dans l appréciation des copies. Les résultats seront soulignés. La correction est disponible

Plus en détail

Corrigé du baccalauréat S Pondichéry 12 avril 2007

Corrigé du baccalauréat S Pondichéry 12 avril 2007 Corrigé du baccalauréat S Pondichéry 1 avril 7 EXERCICE 1 Commun à tous les candidats 4 points 1 a Les vecteurs AB et AC ont pour coordonnées AB ; ; ) et AC 1 ; 4 ; 1) Ils ne sont manifestement pas colinéaires

Plus en détail

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements

3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements 3 ème 2 DÉVELOPPEMENT FACTORISATIONS ET IDENTITÉS REMARQUABLES 1/5 1 - Développements Développer une expression consiste à transformer un produit en une somme Qu est-ce qu une somme? Qu est-ce qu un produit?

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

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