S – atribuido y L – SDT atribuidos en traducción dirigida por sintaxis

Antes de llegar a los SDT con atributos S y L, aquí hay una breve introducción a los atributos sintetizados o heredados.

Tipos de atributos:
los atributos pueden ser de dos tipos: sintetizados o heredados.

  1. Atributos sintetizados:
    un atributo sintetizado es un atributo del no terminal en el lado izquierdo de una producción. Los atributos sintetizados representan información que se pasa al árbol de análisis. El atributo puede tomar valor solo de sus hijos (Variables en el RHS de la producción).

    Por ej. digamos que A -> BC es una producción de una gramática, y el atributo de A depende de los atributos de B o de los atributos de C, entonces será un atributo sintetizado.

  2. Atributos heredados:
    un atributo de un no terminal en el lado derecho de una producción se denomina atributo heredado. El atributo puede tomar valor de su padre o de sus hermanos (variables en el LHS o RHS de la producción).

    Por ejemplo, digamos que A -> BC es una producción de una gramática y el atributo de B depende de los atributos de A o de los atributos de C, entonces será un atributo heredado.

Ahora, hablemos sobre SDT con atributos S y L.

  1. SDT con atributos S:
    • Si una SDT usa solo atributos sintetizados, se denomina SDT con atributos S.
    • Los SDT con atributos S se evalúan en un análisis de abajo hacia arriba, ya que los valores de los Nodes principales dependen de los valores de los Nodes secundarios.
    • Las acciones semánticas se colocan en el lugar más a la derecha de RHS.
  2. SDT con atributos L:
    • Si una SDT utiliza atributos sintetizados y atributos heredados con la restricción de que el atributo heredado puede heredar valores solo de los hermanos izquierdos, se denomina SDT con atributos L.
    • Los atributos en las SDT con atributos L se evalúan mediante un análisis de profundidad primero y de izquierda a derecha.
    • Las acciones semánticas se colocan en cualquier lugar de RHS.
    • Por ejemplo,

    A -> XYZ {Y.S = A.S, Y.S = X.S, Y.S = Z.S} 

    no es una gramática con atributos L, ya que YS = AS y YS = XS están permitidos, pero YS = ZS viola la definición SDT con atributos L, ya que el atributo hereda el valor de su hermano derecho.

    Nota: si una definición tiene atributos S, también tiene atributos L, pero NO al revés.

    Ejemplo: considere el siguiente SDT.

    P1: S -> MN  {S.val= M.val + N.val}
    P2: M -> PQ  {M.val = P.val * Q.val  and P.val =Q.val} 

    Seleccione la opción correcta.
    A. Tanto P1 como P2 se atribuyen a S.
    B. P1 se atribuye a S y P2 se atribuye a L.
    C. P1 tiene atribución L pero P2 no tiene atribución L.
    Re. Ninguna de las anteriores

    Explicación:
    la respuesta correcta es la opción C , ya que, en P1, S es un atributo sintetizado y en la definición de atributo L se permite la síntesis. Entonces P1 sigue la definición con atributos L. Pero P2 no sigue la definición atribuida a L, ya que P depende de Q, que es RHS para él.

Publicación traducida automáticamente

Artículo escrito por jay99bansal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *