Théorie des langages. compilation. Elise Bonzon bonzon/ 1 / 59

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Théorie des langages. compilation. Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 59"

Transcription

1 et compilation Elise Bonzon bonzon/ 1 / 59

2 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 2 / 59

3 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 3 / 59

4 et compilation Un compilateur, c est quoi? Un compilateur est un programme qui prend en entrée une donnée textuelle source (programme, donnée xml, fichier de configuration, etc) la reconnaît (l analyse) pour vérifier sa correction émet éventuellement un message d erreur le traduit dans un langage cible programme source Compilateur programme cible messages d erreur 4 / 59

5 et compilation Les différentes étapes de la compilation Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 5 / 59

6 et compilation Les différentes étapes de la compilation Partie analyse: sépare les constituants Programme source du prog. source et produit une représentation intermédiaire Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 5 / 59

7 et compilation Les différentes étapes de la compilation Partie analyse: sépare les constituants Programme source du prog. source et produit une représentation intermédiaire Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible Partie synthèse: génère le prog. cible à partir de la représentation intermédiaire 5 / 59

8 et compilation Analyse lexicale Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 6 / 59

9 et compilation Analyse lexicale Seul module au contact avec le texte source Son but est de reconnaître les unités lexicales ou lexèmes les identificateurs et les mots clefs du langage l affectation et les opérateurs Utilise des expressions régulières : automates finis identificateur ab := y * x + 20 affectation operateur nombre 7 / 59

10 et compilation Analyse syntaxique Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 8 / 59

11 et compilation Analyse syntaxique Regroupe les unités lexicales en structures grammaticales en suivant les règles figurant dans une grammaire Résultat représenté par un arbre syntaxique La structure hiérarchique d un programme est exprimée à l aide de règles Tout identificateur est une expression Tout nombre est une expression Si expr1 et expr2 sont des expressions alors expr1 expr2 est une expression Grammaires hors contexte : automates à pile := ab + * 20 y x 9 / 59

12 et compilation Analyse sémantique Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 10 / 59

13 et compilation Analyse sémantique Vérifie la présence d erreurs d ordre sémantique Vérification de typage Vérification des déclarations Par exemple, si x et y sont des réels : := ab + * conversion entier -> réel y x / 59

14 et compilation Partie synthèse Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 12 / 59

15 et compilation Partie synthèse Génération du code intermédiaire Utilisation de variables temporaires Choix de l ordre pour faire un calcul Optimisation du code Amélioration du code intermédiaire Réduction du nombre de variables et d instructions Génération du code Choix des emplacements mémoire pour les variables Assignation de variables aux registres 13 / 59

16 et compilation Table des symboles Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 14 / 59

17 et compilation Table des symboles Enregistre les identifiants et les attributs (emplacement mémoire, type, portée) Chaque identifiant (variable) a une entrée dans la table des symboles L analyseur lexical crée une entrée dans la table des symboles à chaque fois qu il rencontre un nouvel identificateur Par contre, les attributs seront calculés plus tard L analyseur sémantique se sert de la table des symboles pour vérifier la concordance des types 15 / 59

18 et compilation Détection des erreurs Programme source Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Programme cible 16 / 59

19 et compilation Détection des erreurs Erreur lexicale : le flot de caractères n est pas reconnu Erreur syntaxique : construction non reconnue par le langage Erreur sémantique : problème de typage, / 59

20 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 18 / 59

21 et compilation Analyseur lexical et analyseur syntaxique L analyse lexicale produit des lexèmes En général à la volée à la demande de l analyseur syntaxique L analyseur syntaxique demande le prochain lexème à l analyseur lexical, qui le reconnaît et retourne un code identifiant ce lexème On pourrait imaginer que l analyse lexicale travaille indépendamment et fournisse une suite de lexèmes mais on n a pas besoin, en général, d avoir reconnu tous les lexèmes pour faire l analyse syntaxique : la connaissance du lexème courant suffit pour la plupart des méthodes utilisées et malheureusement, pour certains langages (C notamment), la reconnaissance d un lexème dépend du contexte grammatical dans lequel il se trouve 19 / 59

22 et compilation Analyse lexicale Chaque lexème est un mot d un langage Dans la plupart des cas, langage qui peut être représenté par une expression régulière, par exemple ((A Z) + (a z))((a Z) + (a z) + (0 9)) pour reconnaître des identificateurs du genre X, Compteur, i3, R2D2,... Langage fini pour de nombreux lexèmes : +, ==, for,... L analyseur lexical est donc un (gros) automate fini déterministe qui reconnaît l union des langages des lexèmes un état terminal correspond à la reconnaissance d un mot d un des langages des lexèmes 20 / 59

23 et compilation Fragment d automate lexical q 2 f a-z q 1 a-z sauf f q 3 a-z i a-z sauf i 0-9 q q. 4 q q 6 = 0-9 q = 7 q 8 21 / 59

24 et compilation Analyse lexicale Analyseur lexical : En général pas tout à fait un automate déterministe Certains lexèmes sont préfixes d un autre +, +=, ++ ; = et == mots-clés et identificateurs (for et forme) entiers et réels (3 et 3.14) Le principe est de reconnaître le mot le plus long Un état terminal n implique donc pas toujours l arrêt de l automate : il peut continuer, et éventuellement revenir en arrière au dernier état final rencontré 22 / 59

25 et compilation Reconnaissance contextuelle Il existe des langages où une forme lexicale peut correspondre à différents lexèmes selon le contexte selon le contexte gauche : par exemple, if reconnu comme mot-clé uniquement s il est au début d une instruction selon le contexte droit : par exemple if reconnu comme mot-clé uniquement s il est suivi d une parenthèse Combinaison des deux 23 / 59

26 et compilation Problèmes de la reconnaissance contextuelle Dans des langages mal définis Pour les langages de programmation, dans des langages anciens (Fortran, partiellement C,...) Ils ne peuvent en général pas être résolus par le seul analyseur lexical : les contextes sont le plus souvent des langages non-contextuels reconnus par l analyseur syntaxique Donc forte interaction entre les deux analyseurs Entraine des problèmes de lisibilité, de fiabilité et des difficultés à la maintenance et aux extensions C est pourquoi les langages modernes de programmation évitent ces questions de reconnaissance contextuelle Mais pas les langages de script, de description,... conçus la plupart du temps par des non spécialistes des langages 24 / 59

27 et compilation Exemple de problème de la reconnaissance contextuelle en Fortran, les espaces sont non significatifs DO12I = 1.25 : identificateur DO12I, opérateur d affectation =, réel 1.25 DO12I = 1,25 : mot-clé DO, etiquette 12, variable I : boucle qui se termine à l énoncé étiqueté 12 pour i allant de 1 à 25 d après la légende, on aurait perdu une fusée du projet Mercury à cause d un. à la place d une, (à moins que ce ne soit l inverse...) Dans la plupart des langages de programmation actuels, les espaces sont significatifs, et les mots-clés sont réservés 25 / 59

28 et compilation Générateurs d analyseurs lexicaux Langage C : lex ou flex Langage Ada : Alex Langage Java : Jflex Langage OCaml : OCamllex 26 / 59

29 et compilation Construire un analyseur lexical avec lex programme source (f)lex nom.l compilateur (f)lex lex nom.l flex nom.l nom.yy.c nom.yy.c compilateur C gcc nom.yy.c -ll gcc nom.yy.c -lfl a.out 27 / 59

30 et compilation Spécifications en lex déclarations %% règles de traduction %% procédures auxiliaires 28 / 59

31 et compilation Déclarations La section des déclarations comprend des déclarations de variables, constantes littérales définitions régulières Une constante littérale est un identificateur qui est déclaré pour représenter une constante Une définition régulière permet d associer un nom à une expression régulière 29 / 59

32 et compilation Règles de traduction Les règles de traduction sont des instructions de la forme : exp 1 action 1 exp 2 action 2... exp n action n chaque exp i est une expression régulière chaque action i est une suite d instruction en C qui décrit quelle action l analyseur lexical devrait réaliser quand un lexème concorde avec le modèle exp i Les procédures auxilliaires sont les fonctions facultatives qui pourraient être utiles dans les actions. 30 / 59

33 et compilation Analyseur lexical Analyseur lexical activé par l analyseur syntaxique : Lit le texte d entrée, caractère par caractère Cherche le plus long préfixe du texte d entrée qui corresponde à l une des expressions régulières exp i Exécute alors l action action i Action : rend le contrôle à l analyseur syntaxique Sinon, l analyseur lexical continue à chercher d autres lexèmes jusqu à ce qu une action rende le contrôle à l analyseur syntaxique La recherche répétée de lexèmes jusqu à un retour explicite permet à l analyseur lexical de traiter les espaces et les commentaires de manière simple Seule information retournée à l analyseur syntaxique : l unité lexicale Pour passer une valeur d attribut donnant des informations sur le lexème, on peut l affecter à une variable globale appelée yylval. 31 / 59

34 et compilation Tableau des expressions régulières (1/2) expression reconnaît exemple c tout caractère c qui n est pas un opérateur a \c caractère littéral c \+ s la chaîne de caractère s abc* r 1 r 2 r 1 suivie de r 2 ab. tout caractère sauf fin de ligne a.b ˆ début de ligne ^abc $ fin de ligne abc$ [s] tout caractère appartenant à s [s] [^s] tout caractère n appartenant pas à s [^abc] r 0 ou plusieurs occurences de r a r + 1 ou plusieurs occurences de r a + r? 0 ou 1 occurence de r a? 32 / 59

35 et compilation Tableau des expressions régulières (2/2) expression reconnaît exemple r{m} m occurences de r a{3} r{m,n} entre m et n occurences de r a{3,8} r 1 r 2 r 1 ou r 2 a b r 1 /r 2 r 1 si elle est suivie de r 2 abc/123 (r) r (a b) \n retour à la ligne \t tabulation 33 / 59

36 et compilation Exemple déclarations %{ %} /* définitions des constantes littérales */ PPQ, PPE, EGA, DIF, PGQ, PGE, SI, ALORS, SINON, ID, NB, OPREL /* définitions régulières */ delim [ \n\t] bl {delim} + lettre [A-Za-z] chiffre [0-9] id {lettre} + ({lettre} {chiffre}) nombre {chiffre} + (\.{chiffre} + )? (E[+\-]? {chiffre} + )? %% 34 / 59

37 et compilation Exemple règles de traduction {bl} {/* pas d action et pas de retour */} si {return(si);} alors {return(alors);} sinon {return(sinon);} {id} {yylval = RangerId(); return(id);} {nombre} {yylval = RangerNb(); return(nb);} < {yylval = PPQ; return(oprel);} <= {yylval = PPE; return(oprel);} = {yylval = EGA; return(oprel);} <> {yylval = DIF; return(oprel);} > {yylval = PGQ; return(oprel);} >= {yylval = PGE; return(oprel);} %% 35 / 59

38 et compilation Exemple procédures auxiliaires RangerId() { /* Procédure pour ranger dans la table des symboles le lexème dont le premier caractère est pointé par yytext et dont la longueur est yyleng et retourner un pointeur sur son entrée */ } RangerNb() { \begin{block} /* procédure similaire pour ranger un lexème qui est un nombre */ } 36 / 59

39 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 37 / 59

40 et compilation Qu est ce que l analyse syntaxique? L analyse syntaxique a pour but : de vérifier que le texte d entrée est conforme à la grammaire d indiquer les erreurs de syntaxe de construire une représentation intermédiaire pour les autres modules du compilateur arbre de syntaxe abstraite, utilisé par la suite de la compilation Ne s occupe pas des aspects contextuels de la syntaxe par exemple détecter l erreur dans int i;...; i = abcd ; c est le rôle de l analyse sémantique, qui travaille sur la représentation intermédiaire Représentation unique du texte source l analyse doit être déterministe, si possible linéaire (éviter notamment les retours en arrière) 38 / 59

41 et compilation Types d analyseurs syntaxiques Analyseur syntaxique descendant, ou analyseur prédictif Construit l arbre de dérivation à partir de sa racine et en effectuant des dérivations en considérant la tête des règles de production et en faisant des dérivations les plus à gauche Famille des analyseurs LL (left scanning, leftmost derivation) JavaCC, ANTLR, LLGen,... Analyseur syntaxique ascendant ou par décalage-réduction Construit l arbre de dérivation à partir de ses feuilles et en effectuant des dérivations en considérant la partie droite des règles de production et en faisant des dérivations les plus à gauche Famille des analyseurs LR (left scanning, rightmost derivation) YACC/Bison 39 / 59

42 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c 40 / 59

43 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc 40 / 59

44 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S 40 / 59

45 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt 40 / 59

46 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt act bt 40 / 59

47 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt 40 / 59

48 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs 40 / 59

49 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt 40 / 59

50 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt 40 / 59

51 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc 40 / 59

52 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc 40 / 59

53 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc 40 / 59

54 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc act bbadbc 40 / 59

55 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc 40 / 59

56 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc 40 / 59

57 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt 40 / 59

58 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt asbbs 40 / 59

59 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt asbbs asbt 40 / 59

60 et compilation Exemple Soit G = V, Σ, P, S avec Σ = {a, b, c, d} V \ Σ = {S, T } 6 règles de production : S asbt ct d T at bs c Soit w = accbbadbc Analyse LL : S asbt actbt accbt accbbs accbbasbt accbbadbt accbbadbc Analyse LR : accbbadbc actbbadbc asbbadbc asbbasbc asbbasbt asbbs asbt S 40 / 59

61 et compilation Constructeur d analyseur LR yacc/bison yacc : Yet Another Compiler Compiler (Unix) bison en version libre (Linux) 1ère version dans les années 70 par Stephen Curtis Johnson Prend une grammaire hors contexte en entrée, produit l analyseur correspondant Le programme produit est en langage C 41 / 59

62 et compilation Construire un analyseur syntaxique avec yacc spécification yacc/bison nom.y compilateur yacc/bison yacc nom.y bison nom.y nom.tab.c nom.tab.c compilateur C gcc nom.tab.c -ly a.out 42 / 59

63 et compilation Spécifications en yacc déclarations %% règles de production et routines sémantiques %% routines C et bloc principal 43 / 59

64 et compilation Déclarations La section des déclarations contient 2 parties optionnelles 1ère partie : déclarations en C délimitées par %{ et %} déclarations des variables temporaires utilisées par les règles de traduction procédures de la deuxième et troisième section 2nde partie : déclarations d unités lexicales de la grammaire Symboles terminaux : unités lexicales, déclarées par %token %token NOMBRE caractères, entre quotes : a, + Symboles non terminaux : chaînes de caractères non déclarées comme unités lexicales 44 / 59

65 et compilation Règles de production Une règle de production de la grammaire du type : non-terminal alt 1 alt 2... alt n s écrirait en yacc : non-terminal : alt 1 {action sémantique 1} alt 2 {action sémantique 2}... alt n {action sémantique n} ; La partie gauche de la première règle de production est l axiome de la grammaire 45 / 59

66 et compilation Actions sémantiques Une action sémantique est une suite d instructions en C Elles sont exécutées à chaque fois qu il y a réduction par la production associée Syntaxe d une action sémantique : Symbole $$ référence la valeur de l attribut associé au non terminal de la partie gauche de la règle Symbole $i représente la valeur associée au ième symbole (terminal ou non) en partie droite de la règle. Exemple : expr : expr + term {$$ = $1 + $3} ; 46 / 59

67 et compilation Routines annexes En langage C Un analyseur lexical nommé yylex() doit être fourni D autres procédures comme les routines de récupération d erreur peuvent être ajoutées si nécessaire L analyseur lexical yylex() produit des couples formés d une unité lexicale et de la valeur de l attribut associé Si une unité lexicale est retournée, elle doit être déclarée dans la première section de la spécification yacc La valeur de l attribut associée à une unité lexicale est communiquée à l analyseur syntaxique par l intermédiaire de la variable yylval prédéfinie dans yacc 47 / 59

68 et compilation Exemple Grammaire des expressions arithmétiques : E E + T T T T F F F (E) chiffre L unité lexicale chiffre désigne un chiffre unique compris entre 0 et 9 48 / 59

69 et compilation Exemple déclarations et règles de production %{ #include <ctype.h> %} %token CHIFFRES %% ligne : expr \n {printf(%d\n, $1);} ; expr : expr + term {$$ = $1 + $3;} term ; term : term * facteur {$$ = $1 * $3;} facteur ; facteur : ( expr ) {$$ = $2;} CHIFFRE ; %% 49 / 59

70 et compilation Exemple Routines annexes yylex() { int c; c = getchar(); if (isdigit(c)) { yyval = c - 0 ; return CHIFFRE; } return c } 50 / 59

71 et compilation Utilisation conjointe de lex et yacc lex a été conçu pour produire des analyseurs lexicaux qui peuvent être utilisés avec des analyseurs syntaxiques faits avec yacc Pour utiliser lex, il faut remplacer la routine yylex() par la clause : #include "lex.yy.c" Spécifier chaque action lex de façon à ce qu elle retourne un terminal connu de yacc 51 / 59

72 et compilation Utilisation conjointe de lex et yacc Spécification lex : fichier nom.l Spécification yacc : fichier synt.y Compilation : lex nom.l yacc synt.y gcc -ly -ll y.tab.c On obtient un exécutable a.out qui permet de traduire le langage désiré 52 / 59

73 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 53 / 59

74 et compilation Analyse sémantique - pourquoi? Correction syntaxique insuffisante Exemple : 3 + true > 2 syntaxiquement correct Nécessité d une analyse sémantique 54 / 59

75 et compilation Analyse sémantique - c est quoi? Dans le compilateur d un langage de programmation : Calcul d un arbre abstrait Décoré par des informations qui préparent la génération de code (ex : adresses mémoire) Vérifications sémantiques : de type, des déclarations, etc. Applications de traitement de données textuelles : calculs divers. 55 / 59

76 et compilation Analyse sémantique - comment? L analyse sémantique calcule des données (ex : types, arbres) Comment exprimer ces calculs? Le plus naturel est de le faire en fonction de sa grammaire : on parle de traduction dirigée par la syntaxe On enrichit les grammaires algébriques par 2 concepts : données calculs et on obtient une grammaire attribuée 56 / 59

77 et compilation Grammaire attribuée, informellement C est une grammaire algébrique, plus : des attributs (les données) associés aux terminaux et non-terminaux des règles (ou actions sémantiques) associées aux productions (les calculs des données) Exemple : E E + T {E 0.val = E 1.val + T.val} 57 / 59

78 et compilation et compilation Structure d un compilateur Analyse lexicale Analyse syntaxique Analyse sémantique Conclusion 58 / 59

79 et compilation Conclusion Partie analyse: sépare les constituants Programme source du prog. source et produit une représentation intermédiaire Analyseur lexical Analyseur syntaxique Table des symboles Analyseur sémantique Générateur de code intermédiaire Erreurs Optimisateur de code Générateur de code Partie synthèse: génère le prog. cible à Programme cible partir de la représentation intermédiaire 59 / 59

Introduction 1. Le générateur de scanners (F)LEX. Introduction 2. Interaction LEX-YACC. INFO010 Théorie des langages Partie pratique

Introduction 1. Le générateur de scanners (F)LEX. Introduction 2. Interaction LEX-YACC. INFO010 Théorie des langages Partie pratique Introduction 1 Le générateur de scanners (F)LEX INFO010 Théorie des langages Partie pratique LEX est un outil qui permet de générer automatiquement un scanner à partir d une spécification. Il est souvent

Plus en détail

CHAPITRE 4 : BASES DE LEX

CHAPITRE 4 : BASES DE LEX CHAPITRE 4 : BASES DE LEX Analyse lexicale (rappel) L analyse lexicale consiste à déterminer le, «statut» de chaque mot, c est-à-dire l unité lexicale (ou token) qui lui correspond. Les unités lexicales

Plus en détail

gcc -Wall ansi o tp fichiers -lfl

gcc -Wall ansi o tp fichiers -lfl FLEX et BISON tp.l tp_l.c : - abréviations - expressions régulières et actions associées. tp.h : - définition de types - définition d étiquettes tp_y.h : codes symboliques pour les tokens FLEX Générateur

Plus en détail

CHAPITRE 5 : ANALYSE LEXICALE

CHAPITRE 5 : ANALYSE LEXICALE CHAPITRE 5 : ANALYSE LEXICALE L analyse lexicale est un autre domaine fondamental d application des automates finis. Dans la plupart des langages de programmation, les unités lexicales (identificateurs,

Plus en détail

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée

BAZIN Danil et PRIEZ Jean-Baptiste. LEX & YACC : Calculatrice Évoluée BAZIN Danil et PRIEZ Jean-Baptiste LEX & YACC : Calculatrice Évoluée Table des matières 1 Introduction 3 2 Description 4 3 La grammaire utilisée 6 4 Lexèmes et FLEX 8 5 Analyse syntaxique et YACC 8 5.1

Plus en détail

L outil Cup. Licence info et GMI documentation COMPIL 2007-2008. Pour toutes remarques, questions, suggestions : mirabelle.nebut@lifl.

L outil Cup. Licence info et GMI documentation COMPIL 2007-2008. Pour toutes remarques, questions, suggestions : mirabelle.nebut@lifl. UFR IEEA Licence info et GMI documentation COMPIL 2007-2008 FIL Pour toutes remarques, questions, suggestions : mirabelle.nebut@lifl.fr 1 raccourci pour Java-Based Constructor of Useful Parsers est un

Plus en détail

Introduction à Lex et Yacc

Introduction à Lex et Yacc Introduction à Lex et Yacc H. Cassé, M. Couzinier, M. Strecker Année 2004/2005 1. L analyseur lexical Lex 2. L analyseur syntaxique Yacc 3. La coordination de Lex et Yacc 1 Processus de compilation programme

Plus en détail

Théorie des Langages Épisode 3 L analyseur lexical

Théorie des Langages Épisode 3 L analyseur lexical Introduction Lex 1/ 19 Théorie des Langages Épisode 3 L analyseur lexical Thomas Pietrzak Université Paul Verlaine Metz Introduction Lex 2/ 19 L analyseur lexical constitue la première phase d un compilateur.

Plus en détail

Compilation. II. Analyse lexicale

Compilation. II. Analyse lexicale Université de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013 1/31 Compilation II. Analyse lexicale Jacques Farré Jacques.Farre@unice.fr http://deptinfo.unice.fr/~jf/compil-l3/ Université de Nice

Plus en détail

TP Compilation Analyse lexicale

TP Compilation Analyse lexicale TP Compilation Analyse lexicale Eric Ramat ramat@lisic.univ-littoral.fr 9 mai 2014 Durée : 6 heures 1 Introduction Le but de cet TP est de vous donner les bases nécessaires afin de pouvoir écrire votre

Plus en détail

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation

Sommaire. Introduction à la compilation. Notion de compilation. Notion de compilation. Notion de compilation. Notion de compilation Introduction à la compilation A. DARGHAM Faculté des Sciences Oujda Sommaire Environnement d un compilateur Schéma global d un compilateur Caractéristiques d un bon compilateur Définition Un compilateur

Plus en détail

Lex & Yacc (Flex( & Bison) ING1/APP ING1. Jonathan Fabrizio LRDE EPITA http://lrde.epita.fr/~jonathan/

Lex & Yacc (Flex( & Bison) ING1/APP ING1. Jonathan Fabrizio LRDE EPITA http://lrde.epita.fr/~jonathan/ Lex & Yacc (Flex( & Bison) ING1/APP ING1 Jonathan Fabrizio LRDE EPITA http://lrde.epita.fr/~jonathan/ 1 Lex & Yacc Lex : Génère un analyseur lexical Traite les langages de type 3 (réguliers) Yacc Yet another

Plus en détail

Compilateurs : Analyse lexicale. Vous êtes ici 2. Analyse lexicale 4. Matthieu Amiguet. En entrée d un compilateur, on a généralement un fichier

Compilateurs : Analyse lexicale. Vous êtes ici 2. Analyse lexicale 4. Matthieu Amiguet. En entrée d un compilateur, on a généralement un fichier Compilateurs : Matthieu Amiguet 2009 2010 Vous êtes ici 2 Partie Avant Analyse syntaxique Analyse sémantique Arbre syntaxique abstrait (AST) Partie Arrière Optimisation de l AST Génération de code Optimisation

Plus en détail

Analyse lexicale 2014-2015

Analyse lexicale 2014-2015 Analyse (lexicale, syntaxique) L3 MIAGE Analyse lexicale Université de Lille, France 2014-2015 1 Rappels Rôle de l analyse lexicale Outils 2 Mise en oeuvre Lexème Vers l analyseur syntaxique Codage d un

Plus en détail

Cours de compilation

Cours de compilation Cours de compilation 1 Introduction Un compilateur est un logiciel de traduction d un langage source vers un langage cible. D ordinaire le langage source est un langage de programmation évolué, comme C++

Plus en détail

Cours de Compilation

Cours de Compilation Université Mohammed V - Agdal Faculté des sciences Département d'informatique Cours de Compilation SMI - S5 Prof. M.D. RAHMANI mrahmani@fsr.ac.ma Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 III- L'analyse

Plus en détail

Avant-propos. 1. Introduction

Avant-propos. 1. Introduction Avant-propos Les sections ou sous-sections marquées d un astérisque (*) ne font pas partie de la matière du cours IFT1969. Elles sont destinées à définir complètement le langage C (ANSI-C99) et à en préciser

Plus en détail

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

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

Plus en détail

Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2

Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2 Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101 Danny Dubé Hiver 2014 Version : 11 avril Questions Travail pratique #2 Traduction orientée-syntaxe

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages AntLR - Générateur d analyseurs Claude Moulin Université de Technologie de Compiègne Printemps 2015 Sommaire 1 Introduction 2 AntLR ANTLR : ANother Tool for Language Recognition URL

Plus en détail

Langages de programmation et compilation

Langages de programmation et compilation École Normale Supérieure Langages de programmation et compilation Jean-Christophe Filliâtre Cours 6 / 9 novembre 2015 Jean-Christophe Filliâtre Langages de programmation et compilation 2015 2016 / cours

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

CH.1 INTRODUCTION. Traduction ch1 1

CH.1 INTRODUCTION. Traduction ch1 1 CH.1 INTRODUCTION 1.1 Les compilateurs 1.2 L'analyse de la source 1.3 Les phases d'un compilateur 1.4 Les cousins du compilateur 1.5 Le regroupement des phases 1.6 Les outils logiciels de compilation Traduction

Plus en détail

Examen de Compilation

Examen de Compilation Examen de Compilation Licence Informatique 3 3 Mai 2013 Le sujet est composé de 4 exercices indépendants. Aucun document n est autorisé. Durée de l épreuve : 0x78 minutes. La note finale tiendra trés largement

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8)

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8) Architecture des Ordinateurs Partie III : Liens avec le système d exploitation 2. Génération de code David Simplot simplot@fil.univ-lille1.fr Objectifs Voir la génération de code ainsi que les mécanismes

Plus en détail

Initiation à la programmation. L'essentiel de la programmation en shell, perl, php et C++

Initiation à la programmation. L'essentiel de la programmation en shell, perl, php et C++ Initiation à la programmation L'essentiel de la programmation en shell, perl, php et C++ Communiquer avec sa machine Les langages de programmation sont d'abord destinés aux humains et non aux machines.

Plus en détail

Cours de Compilation

Cours de Compilation Université Mohammed V - Agdal Faculté des sciences Département d'informatique Cours de Compilation SMI - S5 Prof. M.D. RAHMANI mrahmani@fsr.ac.ma 1 Plan du cours I. Généralités sur les compilateurs. II.

Plus en détail

JFlex : Un générateur de

JFlex : Un générateur de JFlex : Un générateur de scanner pour JAVA Pierre Chauvet Institut de Mathématiques Appliquées Plan du cours 1. Installation de JFlex - Téléchargement - Ajustements pour l utilisation 2. Génération de

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Introduction au langage C

Introduction au langage C Organisation du cours Introduction au langage C Premier cours Notions générales Aurélien Max aurelien.max@limsi.fr 12 séances de cours de 1h: mercredi 16-17h, salle A203 12 séances de TD de 1h: mercredi

Plus en détail

Techniques et outils pour la compilation

Techniques et outils pour la compilation Licence Universitaire Professionnelle Génie Logiciel & Théorie des Langages Techniques et outils pour la compilation Henri Garreta Faculté des Sciences de Luminy - Université de la Méditerranée Janvier

Plus en détail

SE202 : déroulement du cours et bases de compilation. Samuel Tardieu Année scolaire 2015/2016

SE202 : déroulement du cours et bases de compilation. Samuel Tardieu Année scolaire 2015/2016 SE202 : déroulement du cours et bases de compilation Samuel Tardieu Année scolaire 2015/2016 1/44 Samuel Tardieu Année scolaire 2015/2016 Organisation du cours 2/44 Samuel Tardieu Année scolaire 2015/2016

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

Norme de documentation des programmes

Norme de documentation des programmes 1. Introduction Norme de documentation des programmes Auteur : Marc Frappier Collaborateurs Benoit Fraikin Gabriel Girard Jean Goulet Gérard Houdeville Luc Lavoie Version : 1.02 30 août 2004 Département

Plus en détail

Grammaires hors-contexte

Grammaires hors-contexte Analyse syntaxique Grammaires hors-contexte Une grammaire hors-contexte est un 4-uplet N, Σ, P, S où : N est un ensemble de symboles non terminaux, appelé l alphabet non terminal. Σ est un ensemble de

Plus en détail

Analyse lexicale Analyse syntaxique Évaluation

Analyse lexicale Analyse syntaxique Évaluation Analyse lexicale Analyse syntaxique Évaluation Génération de code - Cours 1 {Remi.Forax, Matthieu.Constant, Michel.Chilowicz}@univ-mlv.fr Tatoo nain d'argentine ( Cliff1066, CC-By) Génération de code Objectifs

Plus en détail

Algorithmique Partie 1

Algorithmique Partie 1 Algorithmique Partie 1 IUT Informatique de Lens, 1ère Année Université d Artois Frédéric Koriche koriche@cril.fr 2011 - Semestre 1 Modalités Sommaire 1 Modalités 2 Programmation 3 Données 4 Opérateurs

Plus en détail

Techniques de compilation

Techniques de compilation Département d Informatique Université de Nice Sophia Antipolis Master 1 Informatique Techniques de compilation XI. Générateurs de générateurs de code Jacques Farré email : Jacques.Farre@unice.fr 1 Introduction

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1

Compilation séparée. Compilation séparée. ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Compilation séparée ENSIIE: Programmation avancée, Compilation séparée, Modularité, Spécifications algébriques 1 Compilation séparée Modularité GCC : 4 millions de lignes de code Noyau

Plus en détail

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe.

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe. Plan du cours Syntaxe abstraite Martin Odersky 21 et 22 novembre 2005 version 1.0 1 2 3 Syntaxe abstraite Martin Odersky 1 de 31 Syntaxe abstraite Martin Odersky 2 de 31 Un analyseur syntaxique fait généralement

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Compilation (INF 564)

Compilation (INF 564) Grammaires algébriques Analyse LL(1) Analyse LR(0) Quelques mots de l analyse LR(1) L outil Menhir 1 Compilation (INF 564) Analyse syntaxique François Pottier 16 décembre 2015 Grammaires algébriques Analyse

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Qu'est-ce qu'un compilateur? Bibliographie. Compilateur = vérificateur et traducteur. Compilateur. Texte. Compilateur. Texte traduit.

Qu'est-ce qu'un compilateur? Bibliographie. Compilateur = vérificateur et traducteur. Compilateur. Texte. Compilateur. Texte traduit. Analyse syntaxique & PP3 Modalités Année 2011 12 Université Bordeaux 1 Licence 3ème année 10 cours 4 TD 2 x 12 TD sur machine Session 1 1 DS 1h30 + 1 projet. Note session 1 : (DS+projet)/2 Session 2 Examen

Plus en détail

Chap. 2. Langages et automates

Chap. 2. Langages et automates Chapitre 2. Langages et automates 1. Quelques définitions et description d un langage. 2. Les expressions régulières. 3. Les automates fini déterministes et non-déterministes. 4. Construction automatique

Plus en détail

RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets)

RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets) RÈGLES POUR L'ÉCRITURE DES PSEUDO-CODES (Programmation par objets) Consignes générales : 1) Chaque algorithme est bien identifié. 2) Les mots clés doivent être utilisés selon la même syntaxe que ci-dessous.

Plus en détail

Analyse descendante LL(k)

Analyse descendante LL(k) Bureau 203 - M3 extension mirabelle.nebut at lifl.fr 2012-2013 Principes Factorisation à gauche Suppression de la récursivité à gauche 2/119 Objectif du cours Comprendre le fonctionnement des générateurs

Plus en détail

L utilitaire "make" et son inséparable Makefile

L utilitaire make et son inséparable Makefile L utilitaire "make" et son inséparable Makefile Compilation et exécution Programme source Analyse lexicale (scaning) Optimisation du code Programme abstrait (optimisé) Génération du code Séquence d unités

Plus en détail

Expressions rationnelles, automates, analyse lexicale

Expressions rationnelles, automates, analyse lexicale Chapitre 2 Expressions rationnelles, automates, analyse lexicale L analyse lexicale est la première phase d un compilateur ou d un interprète : elle consiste à identifier et à catégoriser les différents

Plus en détail

Exercices dirigés séance n 1- corrigé

Exercices dirigés séance n 1- corrigé Exercices dirigés séance n 1- corrigé Exercice 1 : compilation, analyse d un programme On définit le langage simplifié suivant au moyen de règles BNF : ::=

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Exercices Perl. Master de Bioinformatique Université de Rouen

Exercices Perl. Master de Bioinformatique Université de Rouen Exercices Perl Master de Bioinformatique Université de Rouen 1 Exercice Écrire un programme Perl qui affiche les lignes de plus de 80 caractères lues sur l entrée standard. 2 Exercice Écrire un programme

Plus en détail

Option Informatique Arbres binaires équilibrés

Option Informatique Arbres binaires équilibrés Option Informatique Arbres binaires équilibrés Sujet novembre 2 Partie II : Algorithmique et programmation en CaML Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans

Plus en détail

Introduction. Téléchargement CUP http://www2.cs.tum.edu/projects/cup/java cup 11b.jar Jflex + Documentation http://jflex.de/jflex 1.5.1.

Introduction. Téléchargement CUP http://www2.cs.tum.edu/projects/cup/java cup 11b.jar Jflex + Documentation http://jflex.de/jflex 1.5.1. Cup et JFlex Introduction Téléchargement CUP http://www2.cs.tum.edu/projects/cup/java cup 11b.jar Jflex + Documentation http://jflex.de/jflex 1.5.1.zip Documentation en ligne Cup http://www2.cs.tum.edu/projects/cup/manual.html

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

IFT313 Introduction aux langages formels

IFT313 Introduction aux langages formels Département d informatique IFT313 Introduction aux langages formels Plan de cours Été 2014 Enseignant : Froduald Kabanza Courriel : kabanza@usherbrooke.ca Local : D4-1022-2 Téléphone : (819) 821-8000 poste

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

Programmer avec Xcas : version 0.8.6 et 0.9

Programmer avec Xcas : version 0.8.6 et 0.9 Programmer avec Xcas : version 0.8.6 et 0.9 I. L environnement de travail de Xcas Xcas permet d écrire des programmes, comme n importe quel langage de programmation. C est un langage fonctionnel. L argument

Plus en détail

L2: cours I4c Langages et automates

L2: cours I4c Langages et automates L2: cours I4c Langages et automates Olivier Togni, LE2I (038039)3887 olivier.togni@u-bourgogne.fr Modifié le 31 mai 2007 Sommaire Utiles pour compilation, interprétation,... 1. Langages rationnels 2. Langages

Plus en détail

Epidémiologie, l urne de Pólya, partie II

Epidémiologie, l urne de Pólya, partie II Epidémiologie, l urne de Pólya, partie II Se mettre par groupe de deux. Traiter la fiche dans l ordre. Un compte de rendu de TP devra être rendu avec les réponses écrites aux questions, les recherches

Plus en détail

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel Introduction Notre contexte : pas possible d exprimer toutes les combinaisons de DT. Le test fonctionnel est basé sur la spécification/interface

Plus en détail

II. EXCEL/QUERY ET SQL

II. EXCEL/QUERY ET SQL I. AU TRAVAIL, SQL! 1. Qu est-ce que SQL?... 19 2. SQL est un indépendant... 19 3. Comment est structuré le SQL?... 20 4. Base, table et champ... 21 5. Quelle est la syntaxe générale des instructions SQL?...

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Cours de compilation

Cours de compilation École nationale supérieure d informatique pour l industrie et l entreprise Cours de compilation Semestre 3 13 décembre 2015 Guillaume Burel Table des matières 1. Introduction 4 2. Sémantique 8 2.1. Sémantique

Plus en détail

Langages et Compilation. Analyse descendante prédictive

Langages et Compilation. Analyse descendante prédictive Langages et Compilation Analyse descendante prédictive 1 Introduction Grammaires LL(1) Une famille de grammaires analysables de façon ecace. Caractéristiques de l'analyse LL(1) analyse descendante Construction

Plus en détail

Cycle de vie d un programme

Cycle de vie d un programme Cycle de vie d un programme Ensimag 1A - Préparation au Projet C Année scolaire 2009 2010 Les objectifs de cette séance sont : de comprendre les différentes étapes de la chaîne de compilation d un programme

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

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

Grammaires formelles, Automates

Grammaires formelles, Automates 1/39 Grammaires formelles, Automates Pierre Zweigenbaum LIMSI, CNRS pz@limsi.fr http://www.limsi.fr/~pz/ 2/39 1 Syntaxe : grammaire, analyse 2 Grammaires formelles Langage et grammaire Grammaires régulières

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

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

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

Théorie des langages. Automates à pile. Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.

Théorie des langages. Automates à pile. Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes. Automates à pile Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 62 Automates à pile Introduction Rappels sur les piles Automates à pile : définition Automates

Plus en détail

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative 2 janvier 2009 1 Les structures de contrôle En Scheme, le programmation se fait par composition de fonctions, et même

Plus en détail

CHAPITRE VI : SYSTEME DE GESTION DE FICHIERS

CHAPITRE VI : SYSTEME DE GESTION DE FICHIERS 56 CHAPITRE VI : SYSTEME DE GESTION DE FICHIERS 6.1 INTRODUCTION : Afin de fournir un accès efficace et pratique au disque, le SE impose un système de gestion de fichiers (SGF) pour permettre de stocker,

Plus en détail

1 de 1. Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert

1 de 1. Algorithmique. Récursivité. Florent Hivert. Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 1 de 1 Algorithmique Récursivité Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 1 Récursivité et Récurrence Deux notions très proche : mathématiques : récurrence

Plus en détail

Algorithme Algorigramme page 1/10 Algorithmique Algorigramme

Algorithme Algorigramme page 1/10 Algorithmique Algorigramme Algorithme Algorigramme page 1/10 Algorithmique Algorigramme Centre d'interêt : Analyser les constituants d'un système réel d'un point de vue structurel et comportemental Objectifs A la fin de la séquence,

Plus en détail

Ch. 1 : Bases de programmation en Visual Basic

Ch. 1 : Bases de programmation en Visual Basic Ch. 1 : Bases de programmation en Visual Basic 1 1 Variables 1.1 Définition Les variables permettent de stocker en mémoire des données. Elles sont représentées par des lettres ou des groupements de lettres

Plus en détail

Compilation. Mirabelle Nebut 2012-2013. Bureau 332 - M3 mirabelle.nebut at lifl.fr

Compilation. Mirabelle Nebut 2012-2013. Bureau 332 - M3 mirabelle.nebut at lifl.fr Bureau 332 - M3 mirabelle.nebut at lifl.fr 2012-2013 Organisation du cours Organisation : C / TD / TP sur 12 semaines Évaluation : contrôles courts en amphi au cours du semestre ; TP rendus ; contrôle

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Ch1 : Eléments de base du langage C

Ch1 : Eléments de base du langage C Ch1 : Eléments de base du langage C Fathi Mguis Atelier de programmation 1 LFSI1/LARI1 A.U : 2014-2015 Plan 1 Généralités 2 Avantages 3 Structure d un programme en C 4 Les diverse phases d un programme

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type Université de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013 1/32 Compilation Vb. Analyse sémantique statique Analyse de nom et analyse de type Jacques Farré Jacques.Farre@unice.fr Université

Plus en détail

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com RPC Remote Procedure Call Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com Objectifs Le rôle de RPC comme middleware Positionner RPC dans le modèle OSI Développement d application

Plus en détail

Introduction au langage python

Introduction au langage python Introduction au langage python Gauthier Picard SMA/G2I/ENS Mines Saint-Etienne gauthierpicard@emsefr Introduction au langage python Gauthier Picard 1 / 36 Sommaire 1 Les bases de Python 2 Fonctions et

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

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra

Plus en détail

Systèmes d exploitation Gestion des fichiers. Catalin Dima

Systèmes d exploitation Gestion des fichiers. Catalin Dima Systèmes d exploitation Gestion des fichiers Catalin Dima 1 Problématique Certains processus doivent stocker/avoir accès à une très grande quantité de mémoire Parfois plusieurs ordres de grandeur par rapport

Plus en détail

Projet Pratique de INF241 Parcours de Tableaux

Projet Pratique de INF241 Parcours de Tableaux Projet Pratique de INF241 Parcours de Tableaux L objectif de ce projet est de travailler sur les tableaux en langage d assemblage ARM. Vous devez réaliser votre projet en partie lors des séances encadrées

Plus en détail