Вы находитесь на странице: 1из 25

UNIVERSIDAD NACIONAL DEL SANTA

INGENIERIA DE SISTEMAS E
INFORMATICA
TRADUCCION DIRIGIDA POR LA
SINTAXIS
.

V CICLO

INTEGRANTES:

BENIGNO SARMIENTO KAREN


ESPINOZA AIRAC GIANIRA
LOPEZ BENITES ELIZABETH
SUYON VASQUEZ DARWIN

2014
UNIVERSIDAD NACIONAL DEL SANTA V CICLO

TRADUCCION DIRIGIDA POR LA SINTAXIS

1 INTRODUCCION

Un compilador utiliza gramticas independientes de contexto como gua para la


traduccin de lenguajes, si logra de alguna manera asociar informacin a las distintas
construcciones del lenguaje de programacin proporcionando atributos a los smbolos
de la gramtica, puede entonces calcular sus valores mediante reglas semnticas.

Aunque hay dos maneras de hacer la asociacin entre reglas semnticas y


producciones, que son mediante definiciones dirigidas por sintaxis y esquemas de
traduccin, nos interesa particularmente sta ltima, pues con stas se trabaja ms
pues se puede definir el orden en que se ejecutan las acciones y las evaluaciones de los
atributos. La idea es brindar al lector una pequea resea de lo que el compilador hace
desde que toma una cadena de entrada hasta que la lleva a evaluar las reglas
semnticas, que es una parte importante del proceso de compilacin en un lenguaje de
programacin.

2 DEFINICIN DIRIGIDA POR SINTAXIS


Para traducir una construccin de un lenguaje de programacin, un compilador puede
necesitar tener en cuenta muchas caractersticas, adems del cdigo generado para la
construccin. Una definicin dirigida por sintaxis es un formalismo para especificar las
traducciones para las construcciones en funcin de atributos asociados con sus
componentes sintcticos.

Utiliza una gramtica independiente de contexto para especificar la estructura


sintctica de la entrada, la idea es asociar con cada smbolo de la gramtica un
conjunto de atributos (que luego veremos que pueden ser sintetizados o heredados) y
adems a cada produccin un conjunto de reglas semnticas para calcular los valores
de los atributos asociados con los smbolos que aparecen en esa produccin. La
definicin dirigida por sintaxis consiste en s entonces de la gramtica y el conjunto de
reglas semnticas.

En una definicin dirigida por sintaxis, para cada produccin gramatical A se


asocia un conjunto de reglas semnticas de la forma b:=f(c1,c2,,ck) donde f es una
funcin y b es un atributo sintetizado de A o un atributo heredado de uno de los
smbolos gramaticales de la parte derecha de la produccin y c1,c2,,ck son atributos
que pertenecen a los smbolos gramaticales de la produccin. Se dice que b depende de
c1,c2,,ck.

TRADUCCION DIRIGIDA POR LA SINTAXIS 2


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

3 ATRIBUTOS
Un atributo puede representar cualquier cosa, un nombre, una cadena, un nmero, un
tipo, una posicin de memoria, su valor en un nodo se define mediante una regla
semntica asociada a la produccin usada en dicho nodo.
En una definicin dirigida por sintaxis se asume que los terminales slo tienen
atributos sintetizados, ya que la definicin no proporciona ninguna regla semntica
para los terminales. El analizador lxico es el que proporciona generalmente los
valores para los atributos de los terminales.

Hay dos clases de atributos posibles:

Atributos Sintetizados
Atributos Heredados

3.1 ATRIBUTOS SINTETIZADOS

Se puede decir que un atributo es sintetizado si su valor en un nodo del rbol


de anlisis sintctico se determina a partir de los valores de atributos de los
hijos de ese nodo (como decir de abajo hacia arriba). Se pueden calcular
mediante un solo recorrido ascendente del rbol de anlisis sintctico, lo que
es muy deseable.

Se calculan a partir de los valores de atributos de sus nodos hijos en el rbol


de anlisis sintctico.

3.2 ATRIBUTOS HEREDADOS


Un atributo heredado es uno cuyo valor en un nodo de un rbol de anlisis
sintctico est definido a partir de los atributos en el padre y los hermanos de
dicho nodo. stos sirven para expresar la dependencia de una construccin
de un lenguaje de programacin en el contexto en el que aparece.

TRADUCCION DIRIGIDA POR LA SINTAXIS 3


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

4 GRAFOS DE DEPENDENCIAS
Si un atributo b en un nodo de un rbol de anlisis sintctico depende de un atributo c,
entonces se debe evaluar la regla semntica para b en ese nodo despus de la regla
semntica que define a c. las interdependencias entre los atributos heredados y
sintetizados en los nodos de un rbol de anlisis sintctico se pueden representar de
manera muy natural mediante un grafo dirigido llamado grafo de dependencias.

Como se construye el grafo de dependencias?

El grafo tiene un nodo por cada atributo y una arista que va desde el nodo de hacia el
nodo , si el atributo depende del atributo .

TRADUCCION DIRIGIDA POR LA SINTAXIS 4


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

5 EVALUACIN DE LAS REGLAS SEMNTICAS

Las reglas semnticas establecen dependencias entre los atributos de los


diferentes smbolos.
Esas dependencias se reejan en un grafo con el n de establecer un orden de
evaluacin de las reglas.
La evaluacin de las reglas asigna valor a los atributos.
Un rbol de anlisis sintctico que contiene tambin los atributos y sus valores
se llama un rbol anotado o decorado.

Un ordenamiento de evaluacin busca que las aristas vayan en direccin a los nodos
que aparecen despus en el ordenamiento. Todo ordenamiento de un grafo de
dependencias da un orden vlido en el que se pueden evaluar las reglas semnticas
asociadas a los nodos del rbol de anlisis sintctico.

La traduccin especificada por una traduccin dirigida por sintaxis se puede precisar
as. Se utiliza la gramtica para construir un rbol de anlisis sintctico para la entrada.
El grafo de dependencias se construye a partir del mismo. De ste se obtiene un orden
para evaluar las reglas semnticas. La evaluacin de las reglas sintcticas en este orden
produce la traduccin de la cadena de entrada.

5.1 CON RBOL DE ANLISIS SINTCTICO

En el momento de la compilacin, si el grafo de dependencias obtenido a


partir del rbol de anlisis sintctico no contiene un ciclo, se obtiene un
ordenamiento para cada entrada.

5.2 BASADOS EN REGLAS

En el momento de la construccin del compilador, las reglas semnticas


asociadas con las producciones son analizadas. Para cada produccin el
orden de evaluacin de los atributos asociados queda predeterminado.

TRADUCCION DIRIGIDA POR LA SINTAXIS 5


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

5.3 SIN RECUERDO


Escoge un orden sin considerar las reglas semnticas. Limita la clase de
definiciones dirigidas por sintaxis que pueden implantarse.

Los mtodos sin recuerdo y basados en reglas no necesitan construir de


manera explcita el grafo de dependencias en el momento de la
compilacin, as que pueden ser ms eficaces en el uso del tiempo y
espacio del compilador.

6 CONSTRUCCIN DE RBOLES SINTCTICOS

El uso de rboles de anlisis sintctico como representacin intermedia


permite que la traduccin se separe del anlisis sintctico.

PROPIEDAD FUNDAMENTAL:

La cadena que representa la traduccin del No Terminal es la


concatenacin de las traducciones de los No Terminales en el cuerpo de la
produccin con algunas cadenas adicionales opcionales entrelazadas.

6.1 ARBOLES SINTCTICOS


La construccin de un rbol sintctico para una expresin es
similar a la traduccin de la expresin a una forma posfija. Se
construyen subrboles para las sub-expresiones creando un nodo
para cada operador y para cada operando.
Donde:
El nodo superior de un rbol sintctico recibe el nombre de nodo
raz.
Los otros nodos etiquetados con operadores reciben el nombre
de nodos internos.
Los nodos internos tienen uno o ms
nodos hijo o descendientes, segn sea su aridad.
Un nodo interno de un operador con aridad 2 tiene 2 nodos hijo.
Un nodo interno de un operador con aridad 1 tiene un nodo hijo.

TRADUCCION DIRIGIDA POR LA SINTAXIS 6


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

Los nodos sin descendientes reciben el nombre de nodos


terminales (los hemos representado por medio de rectngulos).

Caractersticas de los operadores:

1. Aridad: indica la cantidad de operandos que requiere el


operador. Por ejemplo la suma (+) tiene aridad 2, mientras que
la aridad del operador cambio de signo (-) es 1. Observe que el
operador resta y cambio de signo utilizan el mismo smbolo.
Inclusive es comn que un mismo smbolo sea utilizado para
realizar operaciones diferentes y tipos de datos diferentes.

2. Asociatividad: puede ser izquierda o derecha e indica la


direccin en que se realizarn las operaciones cuando una
expresin involucra el mismo operador.

3. Precedencia: indica que operaciones se realizarn primero o


despus cuando en una expresin se combinan operadores
distintos.

TRADUCCION DIRIGIDA POR LA SINTAXIS 7


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

En los rboles sintcticos anteriores los nodos terminales


correspondes a valores numricos.
La evaluacin de un rbol procede de las hojas y se propaga hacia
la raz.

La evaluacin de un rbol procede de las hojas y se propaga hacia la


raz.

Ejemplo:

Esta expresin se evaluar de la siguiente forma.

Paso 1:

TRADUCCION DIRIGIDA POR LA SINTAXIS 8


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

Paso 2:

Paso 3:

TRADUCCION DIRIGIDA POR LA SINTAXIS 9


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

Ejemplo De Una Gramtica Ambigua

CARACTERSTICAS DE LAS GRAMTICAS QUE SE


DEBEN EVITAR PARA QUE NO SEA AMBIGUA

TRADUCCION DIRIGIDA POR LA SINTAXIS 10


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

EJEMPLO

TRADUCCION DIRIGIDA POR LA SINTAXIS 11


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

7 GRAFOS DIRIGIDOS ACCLICOS PARA EXPRESIONES


(Directed Acyclic Graph)

Tiene un nodo para cada sub-expresin de la expresin, un nodo interior representa un


operador y sus hijos representan los operandos. La nica diferencia es que en un grafo
dirigido acclico que representa una sub-expresin que aparece ms de una vez, tendr
una cantidad de padres equivalente a la cantidad de veces que aparece.

TRADUCCION DIRIGIDA POR LA SINTAXIS 12


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

8 EVALUACIN ASCENDENTE DE DEFINICIONES CON ATRIBUTOS


SINTETIZADOS

Los atributos sintetizados, tambin llamados derivados se asocian con las


normas de produccin no terminales a las cuales estn conectados.

Definicin

Una gramtica con atributos es una tupla donde:

es una gramtica libre de contexto.


es un conjunto finito de atributos distintos.
es un conjunto finito de predicados o atributos reclamaciones.

9 DEFINICIONES CON ATRIBUTOS POR LA IZQUIERDA


El orden de evaluacin de los atributos va unido al orden en que, por el mtodo de
anlisis sintctico, se crean los nodos del rbol de anlisis sintctico.
Se les llama por la izquierda porque la informacin de los atributos parece fluir de
izquierda a derecha. Las definiciones con atributos por la izquierda incluyen todas las
definiciones dirigidas por sintaxis basadas en gramticas LL(1). Toda definicin con
atributos sintetizados es una definicin con atributos por la izquierda.

TRADUCCION DIRIGIDA POR LA SINTAXIS 13


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

10 ESQUEMAS DE TRADUCCION

Los esquemas de traduccin estn ms orientados a la implementacin que las DDS


porque indican el orden de evaluacin de las reglas semnticas.

DEFINICIN: Un ET es una gramtica independiente del contexto que cumple con


las siguientes condiciones:

Los atributos estn asociados con los smbolos de la gramtica.

Las acciones semnticas estn encerradas entre { y } y estn embebidas


dentro del lado derecho de las producciones.

Los ET pueden tener atributos sintetizados y heredados.

Las acciones semnticas son tratadas como smbolos terminales

Los esquemas de traduccin son tiles para evaluar definiciones L-Atribuidas en


tiempo de parsing.

TRADUCCION DIRIGIDA POR LA SINTAXIS 14


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

DISEO DE UN ESQUEMA DE TRADUCCION

Cuando se disea un esquema de traduccin, se deben respetar algunas limitaciones


para asegurarse de que el valor de un atributo est disponible cuando una accin se
refiera a l. Estas limitaciones, motivadas por las definiciones con atributos por la
izquierda, garantizan que las acciones no hagan referencia a un atributo que an no
haya sido calculado.

1er Caso: Atributos Sintetizados

Se puede construir un ET creando una accin semntica que es una


asignacin y se ubica esta accin al final de la parte derecha de la
produccin.

Produccin Regla Semntica

1) TE + T1 T.val= E.val + T1.val

2) NRO1 NRO2 DIG NRO1=NRO2.val * 10 + DIG.val

3) DIG0 DIG.val=0

2do Caso: Atributos heredados y sintetizados.

Un Atributo heredado por un smbolo de la parte derecha de una


produccin se debe calcular en una accin que se realice antes de
dicho smbolo.

Produccin Produccin con Acciones

X0X1Xj-1XjXn X0X1Xj-1 {Xj.h}XjXn

X0X1Xj-1XjXn X0X1Xj-1Xj{Xj.h}..Xn

TRADUCCION DIRIGIDA POR LA SINTAXIS 15


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

DT LID D T{LID.t=T.tipo} LID

Una accin no debe referenciar a un atributo sintetizado de un smbolo


de la gramtica que est a la derecha de dicho smbolo.

Produccin Produccin con Acciones

X0X1Xj-1{Accin}XjXn

Accin: no hace ref. a un atributo calculado a la derecha de Xj

Acciones que calculen atributos sintetizados para el smbolo no terminal de la


parte izquierda de una produccin deben ser ubicados al final de la parte
derecha de la produccin.

Produccin Regla Semntica

1) TE + T1 T.val= E.val + T1.val

2) NRO1 NRO2 DIG NRO1=NRO2.val * 10 + DIG.val

3) DIG0 DIG.val=0

TRADUCCION DIRIGIDA POR LA SINTAXIS 16


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

11 TRADUCCION DESCENDENTE

Se trabaja con esquemas de traduccin en lugar de hacerlo con definiciones dirigidas


por sintaxis, as que se puede ser explcito en cuanto al orden en que tienen que estar
las acciones y las evaluaciones de los atributos.

11.1 ELIMINACIN DE LA RECURSIVIDAD IZQUIERDA DE UN


ESQUEMA DE TRADUCCIN

Como la mayora de los operadores aritmticos son asociativos por la


izquierda, es natural utilizar gramticas recursivas por la izquierda para las
expresiones. La transformacin se aplica a esquemas de traduccin con
atributos sintetizados.

Para el anlisis sintctico descendente, se supone que una accin se ejecuta


en el mismo momento en que se expandira un smbolo en la misma
posicin. Un atributo heredado de un smbolo debe ser calculado por una
accin que aparezca antes que el smbolo, y un atributo sintetizado del no
terminal de la izquierda se debe calcular despus de que hayan sido
calculados todos los atributos de los que depende.

11.2 DISEO DE UN TRADUCTOR PREDICTIVO

Un analizador sintctico predictivo es un tipo especial de analizador


sintctico descendente recursivo en el que el smbolo del pre anlisis
determina sin ambigedad el procedimiento seleccionado para cada no
terminal.

La secuencia de procedimientos llamados en el procesamiento de la entrada


define implcitamente un rbol de anlisis sintctico para la entrada. La idea
es generalizar la construccin de analizadores sintcticos predictivos para

TRADUCCION DIRIGIDA POR LA SINTAXIS 17


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

implantar un esquema de traduccin basado en una gramtica adecuada para


el anlisis sintctico descendente.

12 EVALUACIN ASCENDENTE A ATRIBUTOS HEREDADOS

Existe un mtodo, con el cual se puede implementar cualquier definicin de una


sintaxis que se base en atributos L, es decir, heredados por la izquierda en gramticas
LL(1) y muchos (no todos) basados en LR(1).

Este mtodo consiste en primero tomar el esquema de traduccin orientada a sintaxis


que posee las acciones semnticas incrustadas y remover dichas acciones, luego se
debe insertar en su lugar un no terminal distinto para cada una de las producciones, el
cual funciona como marca. Finalmente se agrega una produccin extra a partir del no
terminal marcador, que derive a psilon y la accin a ejecutar (la accin removida
anteriormente) [1].

Un ejemplo de dicho cambio a realizar, se presenta en la figura siguiente en donde se


muestra el esquema original.

a) y se indica la modificacin que se debe realizar

b) usando como marcador un no terminal M y N en donde ambos esquemas de


traduccin aceptan el mismo lenguaje.

a) Esquema de traduccin orientado a sintaxis

E TR

R +T{printf (+)} R | -T{printf (-)}R |

T num{printf (num.val)}

b) Modificacin utilizando M y N como no terminales marcadores.

E TR

R+TMR | -TNR |

Tnum{printf (num.val)}

M { printf (+) }

TRADUCCION DIRIGIDA POR LA SINTAXIS 18


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

N { printf (-) }

El objetivo del anlisis ascendente es realizar reduccin, por ejemplo con una
produccin A XY, se pretende reemplazar su parte derecha por el no terminal que se
encuentra a en la parte izquierda de la produccin, esto se puede llevar a acabo, debido
a que si el valor Y posee un valor heredado, este estara determinado por el valor
esttico de X el cual se encuentra en la pila [1] Se puede determinar que el valor de X.s
se encuentra en la pila debido a que se realiza un anlisis de abajo hacia arriba y se
analizar primero el valor de X el cual determina a valor heredado de Y ya que este
ltimo depende de X, como se mostrara en su grafico de dependencia.

El comportamiento de la gramtica modificada es el siguiente: el marcador de cada


produccin toma el valor esttico del no terminal que posee a la izquierda como su
valor heredado y sintetizado, lo cual permite que el no terminal que se encuentra a la
derecha del marcador tome como valor heredado el recin adquirido valor sintetizado
del marcador como se muestra en las siguientes figuras.

Gracias al trabajo realizado por las marcas (no terminales) es posible evaluar atributos
L durante el anlisis sintctico LR, debido a que solo existe una nica produccin para
cada marcado la gramtica continua siendo LL y por ende LR [1], al agregar los
marcadores no se produce ningn conflicto. Sin embargo, no se puede decir lo mismo
de todas las gramticas LR por que algunas si podran presentar problemas de

TRADUCCION DIRIGIDA POR LA SINTAXIS 19


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

conflictos. A continuacin se presenta un ejemplo de una gramtica LR que presenta


problemas a la hora de realizar el anlisis sintctico debido a que en la ltima de sus
producciones no existe un no terminal con el cual se pueda determinar cual es el valor
heredado de L.count a imprimir y con el cual se conoce el total de Ls generadas por S.

A veces es posible cambiar los valores heredados por valores sintetizados al hacer una
pequea modificacin en la gramtica, este cambio nos permite trabajar de manera mas
eficiente ya que los valores de un atributo para determinado terminal se pueden obtener
de manera directa en vez de tener que heredarlo. Ejemplo de la caracterisitica anterior
se persenta en el lenguaje de programacin de Pascal [1], como se muestra en la figura
siguiente donde se trata la produccin D que permite definir una variable L con su
respectivo tipo T.

La modificacin anterior se realiza con el fin de que el tipo de una variable este en el
subrbol que genera L, de manera que L posea un atributo de tipo sintetizado que
almacena el tipo de la variable del identificador generado por L [1], en vez de tener que
heredarlo.

TRADUCCION DIRIGIDA POR LA SINTAXIS 20


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

13 . Evaluadores recursivos

Existen funciones recursivas que permiten recorrer un rbol de construido en base a


una definicin dirigida por la sintaxis. Las funciones recorren cada uno de los hijos
para un determinado nodo, en algn orden, no necesariamente de izquierda a derecha
[1]. Mediante la produccin de un nodo la funcin puede determinar cuales son sus
hijos, y retornar un valor para un no terminal A que puede recibir como parmetro
algn valor heredado. El valor de retorno es utilizado para calcular el valor del no
terminal del nodo en el nivel inmediato superior del rbol. El cdigo correspondiente a
cada produccin simula la asociacin de las reglas semnticas con dicha produccin
[1], las reglas son aplicadas conforme se calculen los valores heredados que cada no
terminal recibe como parmetro.

En la figura que se muestra a continuacin se seala la forma en que los nodos hijos de
un nodo A del rbol son visitados, basndose en la dependencia del no terminal A.

Con respecto a al simbologa del a figura anterior A.i indica el valor heredado que debe
poseer A y A.s representa su valor sintetizado. Note que el orden es determinado por el
valor de dependencia.

14 Espacio para el valor de los atributos en tiempo de compilacin

TRADUCCION DIRIGIDA POR LA SINTAXIS 21


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

El espacio en nmero de registros que utilizaran los valores de los atributo se puede
calcular en tiempo de compilacin basndose en el rbol de anlisis sintctico. El
tiempo de vida para un atributo inicia cuando es primeramente computado y termina
cuando todos los valores que dependen de este son calculados [1], es decir cuando
dicho valor es usado por ltima vez. Lo que resulta de importancia con respecto a la
caracterstica anterior es poder mantener ese espacio solo cuando sea necesario y una
vez que termine el tiempo de vida para un atributo poder asignar dicho espacio a otro
atributo con el cual su tiempo de vida no se traslape con el atributo anterior y de esta
manera aprovechar mejor los recursos y cantidad de registros a utilizar.

A continuacin se muestra un algoritmo de asignacin de registros para el


almacenamiento de valores para cada no terminal [1].

Se puede evitar replicas innecesarias de datos en los registros al detectar reglas


semnticas de la forma b = c, debido a que ya existe el valor de c en algn registro no
es necesario copiarlo en otro registro, por lo tanto cuando se trata de calcular un nodo
m se puede chequear si este ya se encuentra definido mediante una instruccin de
copia.

15 Asignacin de espacio en tiempo de construccin - compilacin


Se puede utilizar una pila para almacenar los valores de cada atributo, incluso no hay
necesidad de preocuparse por las replicas innecesarias si los valores se guardan en la
pila. Gracias a esta propiedad se puede predecir el tiempo de vida para los valores, sin
tomar en cuenta que estos pueden estar compartidos con otras variables, lo que facilita
la prediccin. Por ejemplo si se tiene una produccin A B C, para el nodo de A se

TRADUCCION DIRIGIDA POR LA SINTAXIS 22


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

analizaran tanto su hijo B como C, y una vez finalizado el calculo de A sus valores
(los valores de B y C) ya no serian necesarios debido a que el padre de A no puede
acceder de forma directa a los valores de B y C, por lo tanto el tiempo de vida para
estos dos valores concluira al calcular el valor de A [1]. Con el fin de Calcular el valor
de un no terminal se debe calcular cada uno de los valores que se encuentren en la
parte derecha de su produccin, por lo tanto se debe considerar la cantidad de atributos
para cada no terminal, con el fin de determinar la posicin en la pila de cada uno de los
valores de sus atributos. Por ejemplo si se posee una produccin B B1 B2 la pila
variara a la hora de realizar el recorrido por el rbol de la siguiente manera:

16 Anlisis de las definiciones dirigidas por sintaxis


Las funciones para un no terminal mapen los valores de los atributos heredados de un
nodo con atributos sintetizados. Mientras que para los terminales se debe realizar una
funcin por aparte, es decir distinta de la de los no terminales, sin embargo los
terminales se pueden considerar como un solo grupo y ser evaluados con una simple
funcin [1], la agrupacin de dichos atributos esta determinada por las dependencias
que se presentan con el conjunto de reglas semnticas especificadas en la definicin
orientada a la sintaxis. La traduccin dirigida a sintaxis es motivada por la sobrecarga
de identificadores los cuales tiene un conjunto de posibles tipos y por lo tanto una
expresin debe de elegir uno de esos tipos para cada subexpresin que involucre a
dicho identificador [1]. Para solucionar dicho problema se debe de realizar un anlisis
ascendente para determinar los valores sintetizados y un anlisis descendente para
seleccionar el tipo adecuado para la expresin. Es decir, la principal implementacin
del anlisis de las traducciones dirigidas a sintaxis es el chequeo de tipos.

TRADUCCION DIRIGIDA POR LA SINTAXIS 23


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

Existen definiciones orientadas a sintaxis que se llaman circulares debido a que su


grafo de dependencia posee ciclos y no existe ninguna forma para poder calcular los
valores de los atributos en el 12. Evaluacin ascendente a atributos heredados Existe
un mtodo, con el cual se puede implementar cualquier definicin de una sintaxis que
se base en atributos L, es decir, heredados por la izquierda en gramticas LL(1) y
muchos (no todos) basados en LR(1). Este mtodo consiste en primero tomar el
esquema de traduccin orientada a sintaxis que posee las acciones semnticas
incrustadas y remover dichas acciones, luego se debe insertar en su lugar un no
terminal distinto para cada una de las producciones, el cual funciona como marca.
Finalmente se agrega una produccin extra a partir del no terminal marcador, que
derive a psilon y la accin a ejecutar (la accin removida anteriormente) [1]. Un
ejemplo de dicho cambio a realizar, se presenta en la figura siguiente en donde se
muestra el esquema original a) y se indica la modificacin que se debe realizar b)
usando como marcador un no terminal M y N en donde ambos esquemas de traduccin
aceptan el mismo lenguaje.

17 CONCLUSIONES

Las traducciones dirigidas por la sintaxis basan su anlisis en dos tipos de atributos,
lo sintetizados, estos pueden obtenerlos de manera inmediata al calcular los valores
de los nodos hijos; y los atributos heredados, los cuales estn definidos por los
nodos padres o hermanos.
Para realizar un anlisis sintctico se basan en la creacin de un grafo de
dependencias en el cual a la hora de recorrerlo se evalan cada una de las acciones
semnticas que se tienen asignadas para cada nodo respetivo.
Este tipo de traduccin es til para determinar el tipo de una variable en una
expresin, es decir, el chequeo de tipos; y verificar que este corresponda al que la
expresin puede poseer.
Se puede trabajar tanto con esquemas de traduccin como con definiciones
dirigidas por sintaxis, realizando un anlisis descendente o ascendente
respectivamente, para este ltimo se puede evaluar cualquier gramtica LL, sin
embargo, no se puede decir lo mismo para las LR por que pueden existir conflictos.

TRADUCCION DIRIGIDA POR LA SINTAXIS 24


UNIVERSIDAD NACIONAL DEL SANTA V CICLO

18 BIBLIOGRAFIA

http://ic1800a2011.wordpress.com/2011/03/06/004-expresiones-y-arboles-
sintacticos/

http://pt.wikipedia.org/wiki/Gram%C3%A1tica_de_atributos

TRADUCCION DIRIGIDA POR LA SINTAXIS 25

Вам также может понравиться