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

Présentations similaires


Présentation au sujet: "IFT313 Introduction aux langages formels"— Transcription de la présentation:

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

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

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

4 Actions sémantiques et grammaires attribuées
Une action sémantique est un code associé à une règle de la grammaire et exécuté lorsqu’il y a une prédiction de la règle durant l’analyse. Un attribut est une donnée associée à un symbole d’une règle de grammaire. Par exemple, si le symbole est un terminal, ça pourrait être la valeur du token (valeur double d’un token réel). Si le symbole est un non terminal, l’attribut 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 d’un enfant ou parent). Plus tard, quand on verra l’analyse LR, on parlera de réduction au lieu de prédiction de règle. Ce sera la même chose. Les actions sémantiques seront exécutées lorsqu’il y a une réduction de la règle de grammaire. IFT313 © Froduald Kabanza

5 Attributs déterminés par l’analyseur lexical
Par exemple, pour un lexème des nombres, on peut calculer certains attributs au moment de l’analyse lexicale. Attributs d’un 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) IFT313 © Froduald Kabanza

6 Attributs déterminés par l’analyseur lexical
Texte: int a = (int) ; Lexèmes: <IntKW> <identifier> <EQ> <LPAREN> <IntKW> <RPAREN> <Nombre> Lexèmes attribués: <IntKW> <identifier, name=‘a’> <EQ> <LPAREN> <IntKW> <RPAREN> <Nombre, type=Real, value=304.29> <EOF> IFT313 © Froduald Kabanza

7 Attributs calculés par des règles de la grammaire
E  E op E E  num op  + | - | * | / Mot d’entrée: 2.1 * 2 E Type=réel, value=4.2 op * Type=real, value=2.1 E E Type=integer, value=2 num num Type=reall, value=2.1 Type=integer, value=2 IFT313 © Froduald Kabanza

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


Télécharger ppt "IFT313 Introduction aux langages formels"

Présentations similaires


Annonces Google