You are on page 1of 14

Traduccin Dirigida por la Sintaxis

Organizacin de Lenguajes y Compiladores 1 USAC Guatemala, 2013

Traduccin dirigida por la sintaxis


Se asocia informacin a una construccin del lenguaje de programacin proporcionando atributos a los smbolos de la gramtica que representan la construccin. Los valores de los atributos se calculan mediante reglas semnticas asociadas a las producciones gramaticales.

Traduccin dirigida por la sintaxis


Tcnicas para la traduccin dirigida por la sintaxis:
Definicin dirigida por la sintaxis.

Esquemas de traduccin.

rbol de anlisis sintctico


rbol que representa las derivaciones de una gramtica.

Representacin grafica que muestra el orden de derivacin de la gramtica

Atributos
Dos tipos de atributos
Heredados:
El valor de un nodo se pasa a un nivel inferior o igual en el rbol. Su valor depende del valor de los hermanos y del padre.

Sintetizados (locales):
El valor a asignar a un nodo depende del valor de los nodos hijos

Grafo de dependencia
Representa la interdependencia entre los atributos heredados y sintetizados en los nodos de un rbol de anlisis sintctico.

Definicin dirigida por la sintaxis


Es una especificacin de alto nivel para traducciones.

Ocultan muchos detalles de la implantacin y no es necesario que se especifique explcitamente el orden en el que tiene lugar la traduccin.

Definicin dirigida por la sintaxis


Cada produccin gramatical A tiene asicado un conjunto de reglas semnticas de la forma b::= f(c1,c2,c3,...ck), donde f es una funcin, y, o bien:
b es un atributo sintetizado.

b es un atributo heredado.

Esquemas de traduccin
Un esquema de traduccin es una gramtica de contexto libre en la que se encuentran intercalados, en el lado derecho de la regla de produccin, fragmentos de programas a los que hemos llamado acciones semnticas.

Esquemas de traduccin
Un esquema de traduccin es como una definicin dirigida por sintaxis, con la excepcin de que el orden de evaluacin de las reglas semnticas se muestra explcitamente.

Ejemplo
Definicin dirigida por la sintaxis S L {print(L.val);}
L L + T {L.val = L1.val + T.val;}

L T {L.val = T.val;}
T T1 * F { T.val = T1.val * F.val;}

T F { T.val = F.val;}
F Num {F.val = Num;} Cadena = 5+3*1

Ejemplo
rbol de anlisis sintctico y grafo de dependencia
S

Num

Num

Num

Ejemplo
Esquema de traduccin SD
D T {L.her = T.tipo;}L

T INT {T.tipo = INT;}


T REAL {T.tipo = REAL;}

L {L1.her = L.her} L1 , Id {print(L.her + Id)}


L Id {print(L.her + Id)} Cadena = INT t1, t2, t3

Ejemplo
rbol de anlisis sintctico y grafo de dependencia
D

INT

Id

Id

Id

You might also like