| INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO |

Introducción | Contenido | Bibliografía

Introducción
Contenido
UNIDAD I
UNIDAD II
UNIDAD III
UNIDAD IV
UNIDAD V
UNIDAD VI 6.1 Atributos Heredados 6.2 Atributos Sintetizados 6.3 Conversión de Atributos Heredados a Sintetizados 6.4 Desarrollo de una aplicación con LEX y YACC (Calculadora, Derivador, Graficador, etc.)
UNIDAD VII
UNIDAD VIII
UNIDAD IX
PROBLEMARIO
Bibliografía

6.1 Atributos Heredados

> Un atributo heredado es aquél cuyo valor en un nodo de un árbol de análisis sintáctico está definido a partir de los atributos de su padre y/o de sus hermanos. Los atributos heredados sirven para expresar la dependencia de una construcción de un lenguaje de programación en el contexto en el que aparece. Por ejemplo, se puede utilizar un atributo heredado para comprobar si un identificador aparece en el lado izquierdo o en el derecho de una asignación para decidir si se necesita la dirección o el valor del identificador. Aunque siempre es posible reescribir una definición dirigida por sintaxis para que sólo se utilicen atributos sintetizados, a veces es más naturalutilizar definiciones dirigidas por la sintaxis con atributos heredados.

> En el siguiente ejemplo, un atributo heredado distribuye la información sobre los tipos a los distintos identificadores de una declaración. El cuadro 6.1 muestra una gramática que permite una declaración, generada por el axioma D, formada por la palabra clave int o real seguida de una lista de identificadores separados por comas.

> Reglas de producción Acciones semánticas asociadas

> D → T L L.her:= T.tipo
> T → int T.tipo := “integer”
> T → real T.tipo := “real”
> L 2 → L1 , id L1.her := L2.her
> añadetipo(id.ptr_tds, L2.her)
> L → id añadetipo(id.ptr_tds, L.her)

> Cuadro 6.1 Definición dirigida por sintaxis con el atributo heredado L.her

> El no terminal T tiene un atributo sintetizado tipo, cuyo valor viene determinado por la regla por la que se genera. La regla semántica L.her := T.tipo, asociada con la regla de producción D → T L, asigna al atributo heredado L.her el tipo de la declaración. Entonces las reglas pasan hacia abajo este valor por el árbol sintáctico utilizando el atributo heredado L.her. Las reglas asociadas con las producciones de L llaman al procedimiento añadetipo, que suponemos que añade el tipo de cada identificador a su entrada en la tabla de símbolos (apuntada por el atributo ptr_tds). Este último detalle carece de importancia para el asunto que estamos tratando en este momento y se verá con mayor detenimiento en capítulos posteriores.

> En la figura 6.1 se muestra un árbol de análisis sintáctico con anotaciones para la cadena “real id1, id2, id3”. El valor de L.her en los tres nodos de L proporciona el tipo a los identificadores id1, id2 e id3. Estos valores se obtienen calculando el valor del atributo T.tipo en el hijo izquierdo de la raíz y evaluando después L.her de forma descendente en los tres nodos de L en el subárbol derecho de la figura. En cada nodo de L también se llama al procedimiento añadetipo para indicar en la tabla de símbolos el hecho de que el identificador en el hijo de cada nodo L tiene tipo real.

> Figura 6.1. Árbol sintáctico con el atributo heredado L.her en cada nodo L.

> Atrás Siguiente

##### Introducción / Contenido / Unidad I / Unidad II / Unidad III / Unidad IV / Unidad V / Unidad VI / Unidad VII / Unidad VIII / Unidad IX / Problemario / Bibliografía

##### Inicio

##### Créditos

José Sánchez Juárez, Andrés Ortigoza Campos, Fabiola Ocampo Botello