La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées.

Présentations similaires


Présentation au sujet: "IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées."— Transcription de la présentation:

1 IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées

2 IFT313© Froduald Kabanza2 Objectifs Se familiariser avec la notion de grammaire attribuée.

3 IFT313© Froduald Kabanza3 Références [2] Appel, A. and Palsberg. J. Modern Compiler Implementation in Java. Second Edition. Cambridge, 2004. – Section 3.2

4 IFT313© Froduald Kabanza et Éric Beaudry4 Actions sémantiques et grammaires attribuées –Une action sémantique est un code associé à une production et exécuté lorsquil y a une réduction avec la production durant lanalyse. –Un attribut est une donnée associée à un symbole dune production. –Par exemple, si le symbole est un terminal, ça pourrait être la valeur du token (valeur double dun token réel). –Si le symbole est un non terminal, lattribut pourrait être une donnée calculée en utilisant les actions sémantiques. –Une grammaire avec des attributs est appelée une grammaire attribuée. –Un attribut peut être synthétique (calculé) ou hérité (valeur copiée dun enfant ou parent).

5 IFT313© Froduald Kabanza5 Attributs déterminés par lanalyseur lexical Par exemple, pour un lexème de type nombre, on peut calculer certains attributs au moment de lanalyse lexicale. Attributs dun nombre: –Type : {Réel, Entier, Long, LongDouble, …) –Valeur Nombre = [0-9]+// entier ordinaire 32 bits Nombre = [0-9]+L // entier long (64 bits) Nombre = [0-9]*.[0-9]+ // réel double (64 bits) Nombre = [0-9]*.[0-9]+f // réel float (32 bits)

6 IFT313© Froduald Kabanza6 Attributs déterminés par lanalyseur lexical Texte:int a = (int) 304.29; Lexèmes: Lexèmes attribués:

7 IFT313© Froduald Kabanza7 Attributs calculés par des règles de la grammaire Grammaire: E E op E E num op + | - | * | / Chaine: 2.1 * 2 E EE num Type=réel, value=2.1 op Type=réel, value=2.1 Type=réel, value=4.2 num Type=entier, value=2

8 IFT313© Froduald Kabanza8 Attributs dans JavaCC JavaCC ne fait pas que valider la syntaxe. Il peut permettre deffectuer des calculs à la volé (ex.: calc). Il peut aussi charger un arbre syntaxique de façon –manuelle (exemple Calc2 ci-après); –automatique avec loutil JJTree. Des attributs sont utilisés. Limites avec JavaCC: –un seul attribut par symbole. –une seule passe dévaluation. Pour aller au-delà, il faut utiliser dautres outils ou des méthodes adhoc pour évaluer les attributs.

9 IFT313© Froduald Kabanza9 Conclusion Les attributs dans une grammaire sont utiles pour faire lanalyse sémantique. Dans ce cours, nous nous limiterons à des cas simples, soit dinterpréter directement une expression ou en construisant un arbre syntaxique abstrait. Ces utilisations se font en une seule passe.


Télécharger ppt "IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées."

Présentations similaires


Annonces Google