liste associative à droite et stds
Discussion fermée
Affichage des résultats 1 à 14 sur 14

liste associative à droite et stds



  1. #1
    essemme

    liste associative à droite et stds


    ------

    bonjour,

    je vais vous parler de grammaire hors contexte, ou plus précisément de schéma de traduction dirigé par la syntaxe.
    Ma question est comment sont organisés le attributs synthétisés et hérités dans une production associative à droite?

    est-ce comme ceci:
    A -> a { A.h = a.uniLex} A1 { A.s = A.h || A1.s }
    A -> epsilone { A.s = chaine vide }

    ou auterment?

    quelqu'un a une idée?

    -----

  2. #2
    essemme

    Re : liste associative à droite et stds

    a-t-on le droit d'écrire ceci:
    A -> a A1 { A.s = a.uniLex || A1.s }
    A -> epsilone { A.s = chaine vide }

    qu'en pensez-vous?
    Dernière modification par essemme ; 09/05/2020 à 04h24.

  3. #3
    essemme

    Re : liste associative à droite et stds

    je pense qu'il faut faire ceci:
    A -> a { A1.h = a.uniLex } A1 { A.s = A1.h || A1.s }
    A -> epsilone { A.s = chaine vide }
    Dernière modification par essemme ; 10/05/2020 à 15h12.

  4. #4
    essemme

    Re : liste associative à droite et stds

    dans les posts #1 et #3, le problème est que l’attribut synthétisé A.s se calcul toujours avec un attribut hérité A.h. Le problème est dans l'arbre syntaxique décoré, à la racine, on a pas d'attribut hérité (puisqu'on est à la racine). on ne peut donc pas calculer A.s de la racine.

  5. A voir en vidéo sur Futura
  6. #5
    essemme

    Re : liste associative à droite et stds

    je rappelle la grammaire hors contexte:
    Code:
    A -> a A
    A -> epsilon
    je propose comme stds:
    Code:
    A -> a { A1.h=a.valex } A1 {A.s=A.h||A1.s}
    A -> epsilon {A.s=A.h}

  7. #6
    essemme

    Re : liste associative à droite et stds

    pour le problème d'attribut hérités à l'axiome, on recrée l'axiome avec un autre non terminal:

    Code:
    P -> A       | P.s = A.s
                 | A.h=vide
    A -> a A1    | A1.h = a.unilex
                 | A.s=A.h || A1.s
    A -> epsilon | A.s=A.h
    le schéma de traduction dirigé par la syntaxe:
    Code:
    P -> { A.h=vide } A { P.s = A.s}
    A -> a { A1.h = a.unilex } A1 { A.s = A.h || A1.s }
    A -> epsilon {A.s=A.h}
    Dernière modification par essemme ; 14/12/2021 à 18h46.

  8. #7
    essemme

    Re : liste associative à droite et stds

    Le calcul f(A.h,a.vallex) doit se faire avant A1 :
    Code:
    A -> a { A1.h = f( A.h , a.vallex ) } A1 { A.s = A1.s }
    A -> epsilon { A.s = A.h }
    en ajoutant l'axiome P :
    Code:
    P -> { A.h = nil } A { P.s = A.s }
    A -> a { A1.h = f( A.h , a.vallex ) } A1 { A.s = A1.s }
    A -> epsilon { A.s = A.h }

  9. #8
    essemme

    Re : liste associative à droite et stds

    voici la définition dirigée par la syntaxe:
    Code:
    P -> A       | P.s = A.s
                 | A.h = nil
    A -> a A1    | A1.h = f( A.h , a.unilex)
                 | A.s = A1.s
    A -> epsilon | A.s = A.h

  10. #9
    essemme

    Re : liste associative à droite et stds

    par exemple, la liste d'affectations:
    A=affectation
    RA=reste affectation
    VG: destination d'une affectation
    VD source d'une affectation
    la grammaire est:
    Code:
    A -> VG RA
    RA -> egal VG RA
       -> VD
    la stds est la suivante
    Code:
    A -> VG {liste RA.h=(VG.s)} RA {A.s = RA.s}
    RA -> egal VG { liste RA1.h= (VG.s) + liste RA.h } RA1 {RA.s=RA1.s}
       -> VD { RA.s=affectation(RA.h,VD.s) }
    Dernière modification par essemme ; 17/04/2022 à 20h52.

  11. #10
    essemme

    Re : liste associative à droite et stds

    non, je me suis gourré. la grammaire est:
    Code:
    A -> VG egal RA
    RA -> VG egal RA
          -> VD
    le stds (schéma de traduction dirigé par la syntaxe)
    Code:
    A -> VG { liste RA.h = (VG.s) } egal RA {A.s=RA.s}
    RA -> VG { liste RA1.h = (VG.s) + liste RA.h } egal RA1 {RA.s=RA1.s}
       -> VD { RA.s = affectation(RA.h,VD.s}

  12. #11
    essemme

    Re : liste associative à droite et stds

    si on utilise une grammaire LL, VG et VD sont factorisables à gauche par un identificateur.
    j'utilise alors un mot-cle "valdroite" (vous n'êtes pas obligé si vous avez une meilleur solution):
    Code:
    A -> VG egal RA
    RA -> VG egal RA
       -> valdroite VD
    le stds est:
    Code:
    A -> VG {liste RA.h=(VG.s)} RA {A.s = RA.s}
    RA -> egal VG { liste RA1.h= liste RA.h +  (VG.s) } RA1 {RA.s=RA1.s}
       -> valdroite VD { RA.s=affectation(RA.h,VD.s) }

  13. #12
    essemme

    Re : liste associative à droite et stds

    désolé, je me suis trompé de post pour le stds.
    valdroite est ici un terminal:
    Code:
    A -> VG { liste RA.h = (VG.s) } egal RA {A.s=RA.s}
    RA -> VG { liste RA1.h = liste RA.h +  (VG.s)} egal RA1 {RA.s=RA1.s}
       -> valdroite VD { RA.s = affectation(RA.h,VD.s)}

  14. #13
    essemme

    Re : liste associative à droite et stds

    finlement c'est le stds du post #9 qui est bon. un valdroite dans toutes les affectations, ça fait un peu lourd.
    Code:
    A -> VG { listeRA.h =VG.s } RA { A.s = RA.s}
    RA -> deuxptsegal VG {listeRA1.h = VG.s + listeRA.h } RA1 { RA.s = RA1.s }
    RA -> VD {RA.s = affectation(listeRA.h , VD.s ) }

  15. #14
    JPL
    Responsable des forums

    Re : liste associative à droite et stds

    Le forum n’est pas un blog. "Discussion" fermée.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

Discussions similaires

  1. Table d'une loi associative
    Par invite82fffb5c dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 19/05/2016, 13h34
  2. Exercice loi de composition interne associative
    Par invite69d45bb4 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 26/09/2014, 22h42
  3. Sur ça, la composition des applications est associative
    Par invite57c166fd dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 26/12/2010, 21h13
  4. loi non associative et unicité du symétrique ?
    Par inviteaeeb6d8b dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 25/09/2007, 11h08