Traduccin Dirigida por la Sintxis - PowerPoint PPT Presentation

1 / 67
About This Presentation
Title:

Traduccin Dirigida por la Sintxis

Description:

Encierran aquellos formalismos utilizados para especificar las traducciones para ... Se incorporan campos extras a la pila para mantener los valores de los atributos ... – PowerPoint PPT presentation

Number of Views:143
Avg rating:3.0/5.0
Slides: 68
Provided by: sanl3
Category:

less

Transcript and Presenter's Notes

Title: Traduccin Dirigida por la Sintxis


1
Traducción Dirigida por la Sintáxis
Área de Autómatas y Lenguajes
  • Diseño y Construcción de Compiladores
  • 2008

2
Traducción Dirigida por la Sintáxis
  • El significado de una sentencia de entrada está
    relacionado con su estructura sintáctica.
  • Encierran aquellos formalismos utilizados para
    especificar las traducciones para las
    construcciones de los lenguajes de programación
    guiadas por una GLC.
  • Se Asocian Atributos a los símbolos de la
    gramática.
  • Se computan los valores de atributos por reglas
    semánticas asociadas a las producciones de la
    gramática.

3
Traducción Dirigida por la Sintáxis
  • La evaluación de las reglas semánticas puede
  • Generar Código.
  • Insertar información en la Tabla de Símbolos.
  • Relizar el Chequeo Semántico.
  • Dar mensajes de error
  • Etc.

4
Traducción Dirigida por la Sintáxis
  • Existen dos notaciones para asociar información a
    las reglas semánticas
  • Definiciones Dirigidas por la Sintáxis es una
    especificación de alto nivel que oculta detalles
    de implementación.
  • Esquemas de traducción están más orientados a la
    implementación porque indican el orden en el cual
    se evalúan las reglas semánticas.

5
Índice
  • Gramáticas de Atributos
  • Definiciones Dirigidas por la Sintáxis.
  • Definiciones S-Atribuidas
  • Definiciones L-Atribuidas
  • Implementación de las Definiciones Dirigidas por
    la Sintáxis
  • Grafo de Dependencias
  • Definiciones S-Atribuidas
  • Definiciones L-Atribuidas
  • Esquemas de Traduccion

6
Gramáticas de Atributos
7
Gramáticas de Atributos
  • Una Gramática de Atributos define la sintaxis y
    la semántica de un lenguaje.
  • También define la información que se necesita
    almacenar en el Árbol de Sintaxis Abstracta para
    llevar a cabo el Análisis Semántico y la
    Generación de Código.
  • Dicha información se almacena como atributos de
    los nodos del Árbol de Sintáxis Abstracta.

8
Gramáticas de Atributos
  • Sea GltN,T,P,Sgt una Gramática Libre de Contexto.
  • G es una Gramática de Atributos (GA) si
  • Cada X ? N ? T está asociado con dos conjuntos
    disjuntos, H(X), el conjunto de los atributos
    hereddos y S(X) el conjunto de los atributos
    sintetizados. X ? N ? T.
  • El conjunto de atributos de G es Atr H ? S.
    Donde H ?X ? N H(X), S ?X ? N ? T S(X).
  • X0 ?X1X2.Xm ? P y aj ? Atr(Xi), 0 ? i ? m,
    entonces Xi.aj es el atributo aj de Xi y Dxi,aj
    es el dominio de valores de Xi.aj.
  • Una regla semántica asociada con X0 ?X1X2.Xm ? P
    es de la forma Xi.ajf(b1j1,..,bkjk), 0 ? jl ?
    m, 0 ? i ? m, donde cada bljl ? Atr(Xjl).

9
Atributos Sintetizados
Atributo Sintetizado Un atributo a es
sintetizado si, dada una regla de una gramática
A?X1X2.Xn la ecuación asociada con a es de la
forma A.af(X1.a1,.X1.ak,.,Xn.a1,Xn.ak). En
otras palabras a es un atributo sintetizado si su
valor depende de los valores de atributos de sus
hijos.
10
Atributos Heredados
  • Atributo Heredado Un atributo que no es
    sintetizado es un atributo heredado. En otras
    palabras un atributo heredado es aquel cuyo valor
    de atributo está definido en términos de los
    valores de atributos del padre o de sus hermanos.

X0
X1
Xi
Xn
11
Ejemplos de Gramáticas de Atributos
  • Dada la siguiente gramática G1
  • NRO? DIG NRO DIG
  • DIG ?0123456789
  • Calcular el valor de los números generados por G
    usando un atributo sintetizado val.

12
Ejemplos de Gramáticas de Atributos
  • La siguiente gramática expresa declaraciones en
    una sintaxis similar a la usada por el lenguaje
    C
  • G2
  • DECL ? TYPE VAR-LIST
  • TYPE ? INT FLOAT
  • VAR-LIST ? ID, VAR-LIST ID
  • Usando un atributo heredado determine el tipo de
    los identificadores

13
Ejemplos de Gramáticas de Atributos
  • Ejercicio La siguiente gramática permite
    expresar números en decimal y octal
  • G3
  • BNRO?NRO B
  • B ?OD
  • NRO ?NRO DIG DIG
  • DIG ? 0123456789
  • Defina los atributos y reglas semánticas
    necesarias para calcular el valor del número.

14
Definiciones Dirigidas por la Sintáxis
15
DDS
  • DDS Son Gramáticas de Atributos en las cuales no
    se especifica el orden de evaluación de las
    reglas semánticas.
  • Las gramáticas de atributos G1 y G2 son ejemplos
    de definiciones dirigidas por la sintaxis.

16
DDS-Formato
  • Cada producción A?? está asociada con un conjunto
    de reglas semánticas de la foma
  • bf(c1,c2,...,ck)
  • donde f es una función y
  • b es un atributo Sintetizado de A y c1,c2,...,ck
    son atributos de los símbolos en A??, o
  • b es un atributo Heredado de un símbolo de la
    gramática en ?, y c1,c2,...,ck son atributos de
    los símbolos de la gramática en ? o atributos de
    A.

17
DDS
  • Se asume que los símbolos terminales tienen
    atributos sintetizados proporcionados por el
    Analizador Lexicográfico.
  • Las llamadas a procedimientos definen valores de
    atributos sintetizados ficticios (Dummy) del no
    terminal del lado izquierdo de la producción.

18
DDS-Evaluación de Atributos
  • Si en una DDS el orden de evaluación de los
    atributos no esta especificado entonces como se
    realiza la evaluación de los atributos?
  • Respuesta
  • Utilizando un grafo de dependencias.

19
DDS-Evaluación de Atributos
  • La implementación de una DDS consiste en
    encontrar un orden de evaluación de los
    atributos.
  • Cada atributo tiene que estar disponible cuando
    la computación se realiza.

20
DDS-Grafo de Dependencias
  • Un Grafo de Dependencia muestra las
    interdependencias entre los atributos de varios
    nodos en un Árbol de Parse.
  • Hay un nodo para cada atributo.
  • Si un atributo b depende de un atributo c hay un
    arco desde el nodo c al nodo b.
  • Regla de Dependencia Si un atributo b, en el
    nodo n, en un árbol de derivación depende del
    atributo c luego la regla semántica que define a
    b se debe evaluar después de la regla semántica
    que define a c.
  • La interdependencia entre atributos heredados y
    sintetizados se puede dibujar como un grafo
    dirigido. Este grafo se conoce con el nombre de
    Grafo de Dependencias.

21
DDS-Grafo de Dependencias
  • Para cada nodo n el el árbol Hacer
  • Para cada atributo a del simbolo de G hacer
  • Construir un nodo en el grafo de dependencia
  • Fin Para
  • Fin Para
  • Para cada nodo n el el árbol Hacer
  • Para cada regla semántica bf(c1,,ck) asociada
    con la producción usada en el nodo n Hacer
  • Para i1 hasta k Hacer
  • Construir un arco desde ci hacia el nodo b
  • Fin Para
  • Fin Para
  • Fin Para

22
Grafo de Dependendia - Ejemplo
Grafo de Dependencias para la Producción 1
NRO1.val
DIG.val
NRO2.val
23
Grafo de Dependendia - Ejemplo
Grafo de Dependencias para la Cadena 345
NRO.val
NRO.val
DIG.val
NRO.val
DIG.val
DIG.val
Grafo de Dependencias
Árbol de Parse
24
DDS Grafo de Dependencias-Orden de Evaluación
  • Construir el árbol de parsing para la entrada x.
  • Construir el Grafo de Dependencias.
  • Construir el Ordenamiento Topológico.
  • Evaluar las reglas semánticas en el orden
    indicado por el Ordenamiento Topológico.

25
Grafo de Dependendia - Ejemplo
Ejercicio Construir Grafos de Dependencias para
las Gramáticas G1 y G2 para diferentes cadenas
aceptadas por las mismas.
26
Grafo de Dependendia Orden de Evaluación
  • Se utiliza un Ordenamiento Topológico
  • Algoritmo Destructivo (Sólo para propósito
    pedagógico).
  • Algoritmo Ordenamiento Topológico(G,T)
  • Entrada G grafo de dependencias.
  • Salida T el ordenamiento topológico de G.
  • Open el conjunto de nodos a tratar.
  • Open?minimales(G)
  • Mientras Open?? Hacer
  • Sea x ? Open
  • Eliminar x de G
  • Insertar x en T
  • Open ? Open x
  • Open ? minimales(G)
  • Fin Mientras
  • Retornar T

27
Grafo de Dependendia Orden de Evaluación
a
a
b
a
a
d
Completar el ejemplo!
28
Grafo de Dependendia Orden de Evaluación
De el orden de evaluación del siguiente grafo de
dependencias
NRO.val
NRO.val
DIG.val
NRO.val
DIG.val
DIG.val
29
Ejercicios
  • Ejercicio Elaborar un algoritmo que permita
    extraer un Ordenamiento Topológico sin destruir
    el grafo subyacente.
  • Ejercicio Elaborar un algoritmo no destructivo
    que permita extraer un Ordenamiento Topológico
    Inverso.

30
Grafo de Dependencias-Orden de Evaluación
  • Problemas con el método
  • Falla si el grafo de dependencias tiene un ciclo.
  • Consume tiempo debido a la construcción del grafo
    de dependencias.
  • Solución
  • Diseñar la DDS de tal forma que los atributos se
    puedan evaluar en un orden fijo evitando la
    construcción del grafo de dependencias (este
    método es el utilizado por muchos compiladores).

31
DDS
  • En las DDS no circulares se puede establecer un
    orden de evaluación fijo en tiempo de
    construcción del compilador.
  • Hay dos clases importantes de definiciones no
    circulares
  • S-Atribuidas
  • L-Atribuidas

32
DDS S-Atribuida
33
DDS S-Atribuida
  • DDS S-Atribuida Es una DDS que sólo utiliza
    atributos sintetizados.
  • Esta clase de DDS es interesante porque los
    valores de atributo pueden ser obtenidos a través
    de un barrido Post Orden del Árbol de Parse.

34
DDS S-Atribuida
Ejercicio Determine Cuáles de las GA presentadas
previamente son DDS S-Atribuidas?
35
DDS S-Atribuida
  • Los atributos sintetizados se pueden evaluar
    usando un parser bottom-up cuando se analiza la
    cadena de entrada evitando la construcción del
    grafo de dependencias.
  • El parser mantiene los valores de los atributos
    sintetizados en su pila.
  • Cuando se realiza una reducción A??, el atributo
    para A se calcula a partir de los atributos de ?
    que se encuentran en la pila.
  • De esta manera una DDS S-Atribuida se puede
    implementar extendiendo la pila de un parser LR.

36
DDS S-Atribuida Evaluación
  • Se incorporan campos extras a la pila para
    mantener los valores de los atributos
    sintetizados.
  • Por ejemplo si se está trabajando con un solo
    atributo sintetizado la pila tiene la siguiente
    forma
  • El tope de la pila se mantiene con un puntero
    top.
  • Antes de que la reducción A?XYZ se realize, se
    calcula el atributo sintetizado de A
  • A.af(valtop,valtop-1,valtop-2)

37
DDS S-Atribuida
Ejercicio Utilice la gramática G3 para evaluar
la cadena 345 usando la aproximación propuesta
para las gramáticas S-Atribuidas. Muestre el
contenido de la pila.
38
DDS L-Atribuida
39
DDS L-Atribuida
  • Son útiles para expresar la dependencia de una
    construcción en el contexto en el cual aparece.
  • A diferencia de los atributos sintetizados el
    orden en el cual aparecen los atributos heredados
    es importante.
  • Es siempre posible reescribir la DDS con sólo
    atributos sintetizados. No obstante es más
    natural usar atributos heredados y sintetizados.

40
DDS L-Atribuida
  • Definición Una DDS es L-Atribuida si cada
    atributo heredado de Xj, 1 ? j ? n, en el lado
    derecho de una producción del tipo
    X0?X1Xj-1Xj.Xn depende solo de
  • Los atributos sintetizados de X1Xj-1, a la
    izquierda de Xj.
  • Los atributos heredados de X0.

41
DDS L-Atribuida
  • Importante
  • Toda definición S-Atribuida es L-Atribuida.
  • Teorema Los atributos heredados en DDS
    L-Atribuidas se pueden computar por un recorrido
    Pre-Orden del árbol de parse.
  • Las definiciones L-Atribuidas cubren todas las
    traducciones que se pueden realizar sin construir
    explicitamente el árbol de parse.

42
Evaluación de DDS L-Atribuidas
  • Las DDS L-Atribuidas son una clase de DDS cuyos
    atributos siempre se pueden evaluar por un
    recorrido del árbol de parse.
  • El procedimiento mezcla los recorridos Post Orden
    (sintetizado) y Pre-Orden (heredado).

43
Evaluación de DDS L-Atribuidas
  • Algoritmo L-Eval (n)
  • Entrada N un nodo del árbol de parse anotado.
  • Salida La evaluación de atributos
  • Comenzar
  • Para cada hijo m de n, desde izquierda a
    derecha Hacer
  • Evaluar los atributos heredados de m
  • L-Eval(m)
  • Fin Para
  • Evaluar los atributos sintetizados de n
  • Fin

44
Esquemas de Traducción
45
Esquemas de Traducción
  • Los esquemas de traducción están más orientados a
    la implementación que las DDS porque indican el
    orden de evaluación de las reglas semánticas.
  • Definición Un ET es una gramática libre del
    contexto que cumple con las siguientes
    condiciones
  • Los atributos están asociados con los símbolos de
    la gramática.
  • Las acciones semánticas están encerradas entre
    y y están embebidas dentro del lado derecho de
    las producciones.

46
Esquemas de Traducción
  • Los ET pueden tener atributos sintetizados y
    heredados.
  • Las acciones semánticas son tratadas como
    símbolos terminales
  • Los esquemas de traducción son útiles para
    evaluar definiciones L-Atribuidas en tiempo de
    parsing.

47
Esquemas de Traducción
48
Esquemas de Traducción
Ejercicio Construir el Árbol de Parse para la
siguiente declaración Real id1, id2,
id3. Ejercicio Evaluar el ET.
49
ET Diseño
  • 1er Caso Atributos Sintetizados se puede
    construir un ET creando una acción semántica que
    es una asignación y se ubica esta acción al final
    de la parte derecha de la producción.

50
ET Diseño
  • 2do Caso Atributos heredados y sintetizados.
  • Un Atributo heredado por un símbolo de la parte
    derecha de una producción se debe calcular en una
    acción que se realice antes de dicho símbolo.

51
ET Diseño
  • 2do Caso Atributos heredados y sintetizados.
  • Una acción no debe referenciar a un atributo
    sintetizado de un símbolo de la gramática que
    esté a la derecha de dicho símbolo.

52
ET Diseño
  • 2do Caso Atributos heredados y sintetizados.
  • Acciones que calculen atributos sintetizados para
    el símbolo no terminal de la parte izquierda de
    una producción deben ser ubicados al final de la
    parte derecha de la producción.

53
ET Técnica de Construcción
  • Entrada Un esquema de traducción dirigido por la
    sintaxis con la gramática subyacente LL(k)
    fuerte.
  • Salida Código para un traductor dirigido por la
    sintaxis.
  • Método La técnica propuesta es una modificación
    al método de construcción de parsers descentes
    recursivos vistos anteriormente.
  •  
  • ? A ? N, construir una función asociada pero
    teniendo un parámetro formal para cada atributo
    heredado por A y que retorne los valores de los
    atributos sintetizados de A. El cuerpo de la
    función deberá contener una variable local para
    cada atributo de cada símbolo de la gramática que
    aparezca en las producciones de A.
  •  

54
ET Técnica de Construcción
  • Como sucede con el método clásico el código para
    el no terminal A decide que producción usar
    basado en el lookahead.
  •  
  • El código asociado con cada producción hace lo
    siguiente, considerando los tokens, los no
    teminales y acciones en la parte derecha de una
    producción de izquierda a derecha
  •   
  • Para el token x con atributo sintetizado x.val se
    salva su valor en la variable local declarada
    para x.val. Luego, se llama al match del símbolo
    y se obtiene el próximo token.
  •  
  • Para el no terminal B, se genera una asignación
    cB(b1,b2,...,bn) donde b1,b2,...,bn son las
    variables para los atributos heredados de B y c
    es la variable para el atributo sintetizado de B.
  •  
  • Para una acción, copiar el código en el parser,
    reemplazando cada referencia a un atributo por la
    variable local para tal atributo.

55
Aplicaciones
56
Análisis Estático
  • Una aplicación científica o industrial se puede
    estudiar a partir de las componentes estáticas
    que utilizan, por ejemplo Tipos de datos,
    Registros, Variables, Constantes, Funciones, etc.
  • Los temás vistos en esta clase se pueden utilizar
    para extraer esta información y dejarla
    disponible para que el usuario tenga rápido
    acceso a ella en el código fuente del programa.
  • En otras palabras se pueden usar las DDS o ET
    para extraer la información antes mencionada
    desde el código fuente.

57
Análisis Estático
  • Un visualizador de los elementos estáticos de un
    sistema.

58
Análisis Dinámico
  • La información estática es importante. No
    obstante conocer el comportamiento del programa
    puede ayudar a la tarea de simplificar la
    inspección del código.
  • El Análisis Dinámico se interesa por conocer
    cuales son las componentes del sistema bajo
    estudio utilizadas para llevar a cabo una
    funcionalidad específica.
  • Una de las formas de llevar a cabo esta tarea
    consiste en Instrumentar el Código Fuente. Esto
    significa Insertar sentencias dentro del código
    fuente del sistema que posibiliten la
    identificación de las componentes utilizadas.

59
Análisis Dinámico
  • int f(int x, int y) int f(int x, int
    y)
  • int r int r
  • r2x 3y printf(Entra f)
  • return r r2r3y
  • printf(Salef)
  • Int main() int main()
  • f(2,3) printf(ENTRA main)
  • f(2,3)
  • printf(SALE main)
  • La ejecución del sistema de la derecha informará
    que función ejecutó el sistema.
  • Luego Ud. Puede almacenar esas trazas de
    ejecución para obtener conclusiones acerca del
    funcionamiento del sistema.
  • Se anima Ud. a construir un DDS o un ET que logre
    este efecto para la gramática proporcionada por
    la materia?

60
  • Vista de componentes recuperadas con Análisis
    Dinámico.

61
Visualización de Software
  • Una de las formas de estudiar sistemas es
    representar gráficamente algunas de sus
    características.
  • Para alcanzar este objetivo se necesita extraer
    información del código fuente y luego diseñar una
    vista de esa información.
  • Por ejemplo, una vista clásica es el grafo de
    funciones. Dicho grafo se define de la siguiente
    manera
  • G(PE)
  • Px/ x es una función del sistema
  • E(x,y) / x?P ? y ?P ? x llama a y

62
Visualización de Software
  • El grafo de funciones se puede extraer usando un
    ET.
  • Un ejemplo de una visualización innovadora de
    esta estructura es la siguiente

63
  • Otra forma de presentar la relación
    llamador-llamado entre las funciones del sistema.

64
Sistemas
  • Las DDS o ET de traducción se pueden utilizar
    para desarrollar software de aplicación.
  • Un ejemplo de esto será propocionado para su
    lectura.

65
Software Industrial
A
X2
3
B
1
X1
2
1
E
C
Y
0
4
66
Bibliografía
  • Compilers Principles, Techniques and Tools. Aho,
    Setti y Ullman.
  • Compiler Desing. Reinhard Wilhelm y Dieter
    Maurer.
  • Compiler Construction Principles and Practice.
    Kenneth C. Louden.
  • Compiler Construction. Niklaus Wirth.
  • LISS, A linguagem eo ambiente de programação.
    Trabajo de fin de carrera en la UM.
  • Implementação do WebApp Viewer Uma Ferramenta
    para compreender aplicações Web. Trabajo de fin
    de carrera en la UM.

67
Muchas Gracias por su atención! Diseño y
Construcción de Compiladores 2008
Write a Comment
User Comments (0)
About PowerShow.com