Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)

Slides:



Advertisements
Présentations similaires
Structures de données avancées : MLH (Multidimensional linear hashing)
Advertisements

Structures de données avancées : MBT ( Multidimensional B-trees )
Structures de données avancées : MTH ( Multidimensional trie hashing )
La boucle for : init7.c et init71.c
Le langage Z Pr ZEGOUR DJAMEL EDDINE
Vue générale Pr ZEGOUR DJAMEL EDDINE
Machines de Turing Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)
Sémantique des déclarations pour le langage Z minimal
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Introduction : Compilation et Traduction
Principes de programmation (suite)
IFT313 Introduction aux langages formels
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Cours de programmation
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Introduction : Compilation et Traduction
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Analyse lexicale Généralités Expressions rationnelles Automates finis
IFT313 Introduction aux langages formels
Introduction à la programmation (Java)
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées.
CSI3525: Concepts des Languages de Programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
8PRO107 Éléments de programmation
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Séance d’introduction
Analyse syntaxique Pr ZEGOUR DJAMEL EDDINE
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
Table des symboles Pr ZEGOUR DJAMEL EDDINE
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
La librairie assert.h.
Animateur : Med HAIJOUBI
Structures de données avancées : Arbres AVL & Arbres Rouge et Noir
Structures de données avancées : Hachage dynamique
Paradigmes des Langages de Programmation
Structures complexes Pr ZEGOUR DJAMEL EDDINE
Expressions logiques Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
LES PILES ET FILES.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Sous-programmes.
Procédures et fonctions Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Listes linéaires chaînées Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Algorithmique et programmation en
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Un survol du language C.
Sémantique des expressions arithmétiques pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Les tests.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Tutorat en bio-informatique
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Z minimal Pr ZEGOUR DJAMEL EDDINE
Structures de données avancées : Fichiers uni-dimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
L’analyse lexicale Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Structures simples et tableaux Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Interprétation/Génération de code pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Expressions sur les chaînes de caractères Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Une brève présentation de C# Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) C O M P I L Z.
Transcription de la présentation:

Traitement sémantique et grammaire dattributs Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI)

Traitement Sémantique et grammaire dattributs Traitement sémantique Grammaires dattributs (ATG) Transformations des ATG en un analyseur Exemples dapplications

Traitement sémantique Lanalyseur syntaxique vérifie uniquement la syntaxe dun programme Taches du traitement sémantique Gestion de la table des symboles -Maintient les informations sur les noms déclarés -Maintient les informations sur les types -Maintient la portée des noms Vérifie les conditions de contexte -Gère la portée des noms -Vérifie les types Invocation des routines de génération de code Les actions sémantiques sont intégrées dans lanalyseur syntaxique et sont décrites avec les grammaires dattribut

Actions sémantiques Plus loin : Analyse de lentrée Expr = Term { "+" Term }. Lanalyseur syntaxique vérifie si lentrée est syntaxiquement correcte. Maintenant : Traduction de lentrée (Traitement sémantique ) Expr = Term(. int n = 1;.) { "+" Term(. n++;.) }(. Console.WriteLine(n);.). Ex.: Compter les termes dans une expression Actions sémantiques Instructions Java entre (. et.) Sont exécuté par lanalyseur aux positions où elles apparaissent dans la grammaire "traduction" :

Traitement Sémantique et grammaire dattribut Traitement sémantique Grammaires dattributs (ATG) Transformations des ATG en un analyseur Exemples dapplications

Attributs Les symboles non terminaux peuvent retourner des valeurs ( paramètres de sortie) Term Term retourne sa valeur numérique comme un attribut de sortie Les attributs sont utiles dans le processus de traduction Ex.: Calculer la valeur dune expression Expr (. int sum, val;.) =Term { "+" Term (. sum += val;.) }(. Console.WriteLine(sum);.). "traduction"

Attributs dentrée Les symboles non terminaux peuvent aussi avoir des attributs dentrée (paramètres dentrée )) Expr Afficher le résultat de laddition hexadécimale si lattribut dentrée printHex est vrai sinon le décimal Exemple Expr (. int sum, val;.) =Term { "+" Term (. sum += val;.) }.(.if (printHex) Console.WriteLine("{0:X}", sum) else Console.WriteLine("{0:D}", sum);.)

Grammaires dattributs (ATG) Notation pour décrire le traitement de traduction Trois parties : 1.Productions en EBNF Expr = Term { "+" Term }. 2.Attributs (paramètres des symboles non terminaux) Term Expr Attributs dentrée : passer le résultat de la traduction Attributs de sortie : fournit un contexte à partir de lappelant 3.Actions sémantiques (.... Instructions C# Java ou autre....)

Exemple ATG pour les traitement des déclarations VarDecl =Type IdentList ";". IdentLIst =ident { "," ident }. (. Struct type;.) (. Tab.insert(token.str, type);.) Ceci est traduit vers les procédures danalyse suivantes : static void VarDecl () { Struct type; Type(out type); IdentList(type); Check(Token.SEMICOLON); } static void IdentList (Struct type) { Check(Token.IDENT); Tab.Insert(token.str, type); while (la == Token.COMMA) { Scan(); Check(Token.IDENT); Tab.Insert(token.str, type); } Les ATG sont plus concises et plus Lisibles que les procédures danalyse

Exemple: Traitement des expressions de constantes Entrée:3 * (2 + 4) Résultat désiré:18 Expr =Term { "+" Term | "-" Term }. Term =Factor { "*" Factor | "/" Factor } Factor =number |"(" Expr ")" (. int val1;.) (. val += val1;.) (. val -= val1;.) (. int val1;.) (. val *= val1;.) (. val /= val1;.) (. int val1;.) (. val = token.val;.) Factor *(2 +4 ) Term Expr Factor Term Expr

Traitement Sémantique et grammaire dattribut Traitement sémantique Grammaires dattributs (ATG) Transformations des ATG en un analyseur Exemples dapplications

Transformation dune ATG en procédures Expr (. int val1;.) =Term { "+" Term (. val += val1;.) | "-" Term (. val -= val1;.) }. Production static void Expr (int val) { int val1; Term(val); for (;;) { if (la == Token.PLUS) { Scan(); Term(val1); val += val1; } else if (la == Token.MINUS) { Scan(); Term(val1); val -= val1; } else break; } Procédures danalyse Actions sémantique: code Java Les terminaux nont pas dattributs dentrée. Pour lATG considérée, les terminaux nont pas non plus dattribut de sortie, mais leurs valeurs sont déterminées par token.str or token.val.

Traitement Sémantique et grammaire dattribut Traitement sémantique Grammaires dattributs (ATG) Transformations des ATG en un analyseur Exemples dapplications

Exemple: Statistiques des ventes Les ATGs peuvent aussi être utilisées dans dautres domaines Exemple: étant donné un fichier avec des nombres des ventes File= { Article }. Article= Code { Amount } "END" Code= number. Amount= number. Si l'entrée est syntaxiquement structuré alors les ATGs sont une bonne notation pour décrire son traitement Exemple dentrée END END END... Sortie désirée

ATG pour les statistiques des ventes File(. int code, amount;.) ={ Article (. Write(code + " " + amount);.) }. Article =Value { (. int x;.) Value (. amount += x;.) } "END". Value = number(. x = token.val;.). static void File () { int code, amount; while (la == number) { Article(code, number); Write(code + " " + amount); } static void Article ( int code, int amount) { Value( code); while (la == number) { int x; Value( x); amount += x; } Check(end); } static void Value ( int x) { Check(number); x = token.val; } Code de lanalyseur Symboles terminaux : number, end, eof

Exemple: Langage de Description des Images décrite par: POLY (10,40) (50,90) (40,45) (50,0) END (10,40) (50,0) (40,45) (50,90) Syntaxe: Polygon = "POLY" Point {Point} "END". Point = "(" number "," number ")". Nous voulons un programme qui lit lentrée et dessine le polygone Polygon(. Pt p, q;.) ="POLY" Point (. Turtle.start(p);.) { "," Point (. Turtle.move(q);.) } "END"(. Turtle.move(p);.). Point (. Pt p; int x, y;.) ="(" number(. x = t.val;.) "," number(. y = t.val;.) ")"(. p = new Pt(x, y);.). Nous utilisons "Turtle Graphics" pour le dessin Turtle.start(p); positionne la tortue (stylo) au point p Turtle.move(q); déplace la tortue vers le point q tout en dessinant une ligne

Exemple: Transformation des expressions Infixées vers Postfixées Les expressions arithmétiques en notation infixe peuvent être transformées en notation post fixe * * + (3 + 4) * * Expr = Term { "+" Term(. Write("+");.) | "-" Term(. Write("-");.) } Term = Factor { "*" Factor(. Write("*");.) | "/" Factor(. Write("/");.) }. Factor = number(. Write(token.val);.) |"(" Expr ")". 3 Factor +4 *2 Term Expr Term Write 3Write 4Write 2 Write * Write +