| 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.2 Atributos Sintetizados

> Los atributos sintetizados son muy utilizados en la práctica. Una definición dirigida por sintaxis que usa atributos sintetizados exclusivamente se denomina definición con atributos sintetizados. Con una definición con atributos sintetizados se puede decorar un árbol sintáctico mediante la evaluación de las reglas semánticas de forma ascendente, calculando los atributos desde los nodos hoja a la raíz.

> Por ejemplo, la definición con atributos sintetizados del cuadro 4.1 especifica una calculadora que lee una línea de entrada que contiene una expresión aritmética que incluye dígitos (se asume que el token num está asociado al patrón [0-9]+), paréntesis, los operadores + y *, seguida de un carácter de retorno de carro(‘\n’), e imprime el valor de la expresión. Por ejemplo, dada la cadena “3*5+4“ seguida de un retorno de carro, el sistema visualiza el valor 19. La figura 6.2 contiene el árbol sintáctico decorado para la entrada propuesta. El resultado, que se imprime en la raíz del árbol, es el valor de E.val.

> Figura 6.2. Árbol de análisis sintáctico con anotaciones para reconocer “3*5+4\n”.

> Aunque una definición dirigida por sintaxis no dice nada acerca de cómo ir calculando los valores de los atributos, está claro que debe existir una secuencia viable de cálculos que permita realizar dichos cálculos.

> Se considera el nodo situado en el extremo inferior izquierdo que corresponde al uso de la producción F → num. La regla semántica correspondiente, F.val := num.val_lex, establece que el atributo F.val en el nodo tenga el valor 3 puesto que el valor de num.val_lex en el hijo de este nodo es 3. De forma similar, en el padre de este F, el atributo T.val tiene el valor 3.
> A continuación se considéra el nodo raíz de la producción T ÷ T * F. El valor del atributo T.val en este nodo está definido por T.val := T1.val * F.val. Cuando se aplica la regla semántica en este nodo, T .val tiene el valor 3 y F.val el valor 5. Por tanto, T.val adquiere el valor 15 en este nodo.

> Por último, la regla asociada con la producción para el no terminal inicial, L → E \n, visualiza el valor de la expresión representada por E, esto es E.val.

> 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