• Aucun résultat trouvé

IFT313 Introduction aux langages formels

N/A
N/A
Protected

Academic year: 2022

Partager "IFT313 Introduction aux langages formels"

Copied!
8
0
0

Texte intégral

(1)

IFT313

Introduction aux langages formels

Froduald Kabanza

Département d’informatique Université de Sherbrooke

Grammaires attribuées

(2)

IFT313 © Froduald Kabanza 2

Objectifs

• Se familiariser avec la notion de

grammaire attribuée.

(3)

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

(4)

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).

(5)

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)

(6)

IFT313 © Froduald Kabanza 6

Attributs déterminés par l’analyseur lexical

Texte: int a = (int) 304.29;

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>

(7)

IFT313 © Froduald Kabanza 7

Attributs calculés par des règles de la grammaire

Grammaire:

E  E op E

E  num

op  + | - | * | / Mot d’entrée:

2.1 * 2

E

E E

num

Type=reall, value=2.1

op

Type=real, value=2.1

Type=réel, value=4.2

num

Type=integer, value=2 Type=integer, value=2

*

(8)

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.

Références

Documents relatifs

• Deux états dans d’un AFD M sont équivalents (indistinguable) si et seulement si pour chaque mot u, lorsque une exécution de M sur l’entrée u commence dans l’un ou

- Pour analyser la syntaxe d’une grammaire hors-contexte, nous ajoutons une pile à un automate fini pour obtenir un modèle de programmes plus puissant connu sous le nom de

 Pour ce faire la partie gauche de la production (un non-terminal) est enlevée de la pile et remplacée par la partie droite de la production. (q, ε, A)  (q, a) pour chaque

- On vient de voir qu’en calculant First(S) ou First(XYS) on doit tenir compte des non-terminaux qui pourraient dériver la chaîne vide et de ceux qui pourraient les suivre dans

 Parce que les deux règles ont la même fonction d’analyse (c-à-d., la fonction correspondant au non terminal dans la partie gauche de chaque production).. Si elle partagent le

• Pour aller au-delà, il faut utiliser d’autres outils ou des méthodes adhoc pour évaluer les attributs (avec l’aide

• Pouvoir programmer un analyseur syntaxique récursif pour une grammaire donnée. • Connaître les fondements d’un générateur d’analyseur syntaxique LL tel

AFD pour préfixes viables, avec état initial I0 et fonction de transition goto Initialement la pile contient I0.. L’état I2 contient élément Shift (T ® T.*F) et un élément