| 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.3 Conversión de Atributos Heredados a Sintetizados

> Si un atributo b en un nodo de un árbol sintáctico depende de un atributo c, entonces se debe evaluar la regla semántica para b en ese nodo después de la regla semántica que define a c. Las interdependencias entre los atributos en los nodos de un árbol sintáctico pueden representarse mediante un grafo dirigido llamado grafo de dependencias.

> Antes de construir el grafo de dependencias para un árbol sintáctico, se escribe cada regla semántica en la forma b:=f(c1, c2, ..., ck), introduciendo un falso atributo sintetizado b para cada regla semántica que conste de una llamada a procedimiento. El grafo tiene un nodo por cada atributo de un nodo del árbol y una arista desde el nodo c al b si el atributo b depende del atributo c. Algorítmicamente, el grafo de dependencias para un determinado árbol de análisis sintáctico se construye de la siguiente manera:

> Para cada nodo n en el árbol de análisis sintáctico.

> Para cada atributo a del símbolo gramatical en el nodo n
> construir un nodo en el grafo de dependencias para a;
> Para cada nodo n en el árbol de análisis sintáctico
> Para cada regla semántica b:=f(c1, c2, ..., ck) asociada con la producción utilizada en n.

> Para i:= 1 hasta k colocar un arco desde el nodo ci hasta el nodo b

> Por ejemplo, supóngase que A.a := f(X.x, Y.y) es una regla semántica para la producción A → X Y. Esta regla define un atributo sintetizado A.a que depende de los atributos X.x e Y.y.

> Si se utiliza esta producción en el árbol de análisis sintáctico, entonces habrá tres nodos, A.a, X.x e Y.y, en el grafo de dependencias con un arco desde X.x hasta A.a puesto que A.a depende de X.x y otro arco desde Y.y hasta A.a puesto que A.a también depende de Y.y.

> Si la regla de producción A → XY tuviera asociada la regla semántica X.i := g(A.a, Y.y), entonces habría un arco desde A.a hasta X.i y otro arco desde Y.y hasta X.i, puesto que X.i depende tanto de A.a como de Y.y.

> Los arcos que se añaden a un grafo de dependencias son siempre los mismos para cada regla semántica, o sea, siempre que se utilice la regla de producción del

> Regla de producción Acción semántica asociada
> E 3 → E1 + E2 E3.val := E1.val + E2.val

> Figura 6.3. E .val se sintetiza a partir de E .val y E .val

> Los tres nodos del grafo de dependencias (marcados con un círculo de color) 3 1 2 representan los atributos sintetizados E .val, E .val y E .val en los nodos 1 3 correspondientes del árbol sintáctico. El arco desde E .val hacia E .val muestra que 3 1 3 2 3 .val E depende de E .val y el arco hacia E .val desde E .val muestra que E .val también 2 depende de E .val. Las líneas de puntos representan al árbol de análisis sintáctico y no son parte del grafo de dependencias.

> 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