Grammaire L-attribuée

Grammaire L-attribuée

Une grammaire L-attribuée est un type spécial de grammaire attribuée qui permet aux attributs d'être évalués dans une traversée de droite à gauche de l'arbre syntaxique. Cela permet à l'évaluation des attributs d'être facilement incorporée dans une analyse descendante.

De nombreux langages de programmation sont L-attribués. Un type spécial de compilateur, les compilateurs étroits, sont fondés sur certaines formes de grammaires L-attribuées.

Sommaire

Généralités

Dans les productions d'une grammaire L-attribuée, les attributs d'un symbole syntaxique peuvent dépendre de ceux des symboles qui les précèdent dans la production syntaxique (que ce soit en membre gauche ou droit)

Exemple

A → A1 A2…An L'attribut de A2 dépend de ceux de A1 et A. L'attribut de An dépend de ceux de An-1… A1 et A.

Définitions

Une grammaire est dite L-attribuée si, dans toute règle A → X1 X2 ... Xn, le calcul dans l'action associée d'un attribut Xi.b ne dépend que des attributs des variables X1 X2 ... Xi-1 et des attributs hérités de A.

Un attribut est soit :

  • hérité : il participe au calcul de la valeur d’attributs des nœuds fils.
  • synthétisé : participe au calcul de la valeur d’attributs du nœud père.

Algorithme de Parcours

parcours(nœud n) {
   pour chaque fils m de n {
      calculer les attributs hérités de m ;
      parcours(m) ; }
calculer les attributs synthétisés de n ; }

Flot possible

le parcours d'un arbre syntaxique dans une grammaire L-attribuée se fait en depth-first-search.

Flot possible
Flot possible

Graphe de dépendances

Dans le graphe de dépendances d’attributs d'une grammaire L-attribuée, les nœuds sont visités en profondeur : visiter le nœud courant, ensuite les fils de gauche à droite en profondeur.

Conséquences : dans une production A → A1 A2 … An, le calcul d'un attribut d’un symbole αi à Ai associé ne doit pas nécessiter celui d'un symbole se trouvant à sa droite, que ce soit dans la production courante ou dans toutes les dérivations possibles.

Evaluation ascendante

Une évaluation ascendante construit l'arbre syntaxique de bas en haut. Une grammaire L-attribuée requiert le parcours de l'arbre de haut en bas.

À priori, il semble impossible de faire cohabiter l'évaluation ascendante avec une grammaire L-attribuée. Et pourtant…!

Evaluation descendante

On met les routines entre les symboles syntaxiques L'analyse descendante reconnaît les symboles de gauche à droite, et exécute ainsi les routines de gauche à droite.

Evaluation descendante
Evaluation descendante

A → R0 α1 R1 α2 R2…An Rn

Les attributs calculés par la routine Ri ne doivent dépendre que des attributs calculés par les routines exécutées avant Ri. Le problème qui se pose Pour l'analyse descendante est l’élimination de la récursivité à gauche.

Elimination de la récursivité à gauche

Principe

Grammaire résultante L-attribuée, sous forme de schéma de traduction, se fait par l'introduction de nouvelles variables

  • A → AY {A.a := g(A1.a, Y.y)}
  • A → X {A.a := f(X.x)}

Devient :

  • A → X {R.he := f(X.x)}
  • R {A.a := R.s}
  • R → Y {R1.he := g(R.he, Y.y)}
  • R {R.s := R1.s}
  • R → {R.s := R.he}

Exemple

  • E → E +T {E.val := E1.val + T.val}
  • E → E –T {E.val := E1.val – T.val}
  • E → T {E.val := T.val}
  • T → (E ) {T.val:= E.val}
  • T → n {T.val := n.val}

Devient :

  • E → T {R.he := T.val}
  • R {E.val := R.s}
  • R → +T {R1.he := R.he + T.val}
  • R {R.s := R1.s}
  • R → –T {R1.he := R.he – T.val}
  • R {R.s := R1.s}
  • R → {R.s := R.he}
  • T → (E ) {T.val:= E.val}
  • T → n {T.val := n.val}

Liens externes

Articles connexes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Grammaire L-attribuée de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • Grammaire L-Attribuée — Une grammaire L attribuée est un type spécial de grammaire attribuée qui permet aux attributs d être évalués dans une traversée de droite à gauche de l arbre syntaxique. Cela permet à l évaluation des attributs d être facilement incorporée dans… …   Wikipédia en Français

  • Grammaire L-attribuee — Grammaire L attribuée Une grammaire L attribuée est un type spécial de grammaire attribuée qui permet aux attributs d être évalués dans une traversée de droite à gauche de l arbre syntaxique. Cela permet à l évaluation des attributs d être… …   Wikipédia en Français

  • Grammaire LR-Attribuée — Une grammaire LR attribuée est un type spécial de grammaire attribuées. Elle permet aux attributs d être évalués par un parseur LR. Ainsi, l évaluation d attributs est incorporée de manière commode dans un parseur ascendant. zyacc est fondé sur… …   Wikipédia en Français

  • Grammaire LR-attribuee — Grammaire LR attribuée Une grammaire LR attribuée est un type spécial de grammaire attribuées. Elle permet aux attributs d être évalués par un parseur LR. Ainsi, l évaluation d attributs est incorporée de manière commode dans un parseur ascendant …   Wikipédia en Français

  • Grammaire l-attribuée — Une grammaire L attribuée est un type spécial de grammaire attribuée qui permet aux attributs d être évalués dans une traversée de droite à gauche de l arbre syntaxique. Cela permet à l évaluation des attributs d être facilement incorporée dans… …   Wikipédia en Français

  • Grammaire lr-attribuée — Une grammaire LR attribuée est un type spécial de grammaire attribuées. Elle permet aux attributs d être évalués par un parseur LR. Ainsi, l évaluation d attributs est incorporée de manière commode dans un parseur ascendant. zyacc est fondé sur… …   Wikipédia en Français

  • Grammaire S-attribuée — Une grammaire S attribuée est une grammaire ne contenant que des attributs synthetisés où chaque attribut ne dépend que des attributs fils. Sommaire 1 Généralités 2 Méthodes d évaluation des attributs 2.1 Méthode à plusieurs passes …   Wikipédia en Français

  • Grammaire LR-attribuée — Une grammaire LR attribuée est un type spécial de grammaire attribuée. Elle permet aux attributs d être évalués par un parseur LR. Ainsi, l évaluation d attributs est incorporée de manière commode dans un parseur ascendant. zyacc est fondé sur… …   Wikipédia en Français

  • Grammaire Attribuée — Une grammaire attribuée est une manière formelle de définir des attributs pour les productions d une grammaire, associant ces attributs à des valeurs. l évaluation a lieu dans les nœuds de arbre syntaxique abstrait quand le langage est traité par …   Wikipédia en Français

  • Grammaire attribuee — Grammaire attribuée Une grammaire attribuée est une manière formelle de définir des attributs pour les productions d une grammaire, associant ces attributs à des valeurs. l évaluation a lieu dans les nœuds de arbre syntaxique abstrait quand le… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”