SlideShare una empresa de Scribd logo
1 de 67
Área de Autómatas y Lenguajes




Traducción Dirigida por
            la Sintáxis
         Diseño y Construcción de Compiladores
                                         2008
 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.




Traducción Dirigida por la Sintáxis
                                               Compiladores 2008 - Traducción
                                               Dirigida por la Sintáxis         2
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.




Traducción Dirigida por la Sintáxis
                                         Compiladores 2008 - Traducción
                                         Dirigida por la Sintáxis         3
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.




Traducción Dirigida por la Sintáxis
                                   Compiladores 2008 - Traducción
                                   Dirigida por la Sintáxis         4
   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




Índice
                                                             Compiladores 2008 - Traducción
                                                             Dirigida por la Sintáxis         5
Gramáticas de Atributos
                    Compiladores 2008 - Traducción
                    Dirigida por la Sintáxis         6
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.




Gramáticas de Atributos
                                   Compiladores 2008 - Traducción
                                   Dirigida por la Sintáxis         7
Sea G=<N,T,P,S> 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.aj=f(b1j1,…..,bkjk), 0 ≤ jl ≤ m, 0 ≤ i ≤ m, donde cada bljl ∈ Atr(Xjl).




Gramáticas de Atributos
                                                          Compiladores 2008 - Traducción
                                                          Dirigida por la Sintáxis         8
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.a=f(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.

                        X0



                  X1    Xi    Xn


Atributos Sintetizados
                                   Compiladores 2008 - Traducción
                                   Dirigida por la Sintáxis         9
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




Atributos Heredados
                                      Compiladores 2008 - Traducción
                                      Dirigida por la Sintáxis         10
Dada la siguiente gramática G1:

  a. NRO→ DIG | NRO DIG
  b. DIG →0|1|2|3|4|5|6|7|8|9

Calcular el valor de los números generados por G
 usando un atributo sintetizado val.




Ejemplos de Gramáticas de
Atributos
                                  Compiladores 2008 - Traducción
                                  Dirigida por la Sintáxis         11
La siguiente gramática expresa declaraciones en
una sintaxis similar a la usada por el lenguaje C:
G2:
  a. DECL → TYPE VAR-LIST
  b. TYPE → INT | FLOAT
  c. VAR-LIST → ID, VAR-LIST | ID

Usando un atributo heredado determine el tipo de
los identificadores

Ejemplos de Gramáticas de
Atributos
                                    Compiladores 2008 - Traducción
                                    Dirigida por la Sintáxis         12
Ejercicio: La siguiente gramática permite expresar
números en decimal y octal:
G3:
  a.   BNRO→NRO B
  b.   B →O|D
  c.   NRO →NRO DIG | DIG
  d.   DIG → 0|1|2|3|4|5|6|7|8|9
Defina los atributos y reglas semánticas
necesarias para calcular el valor del número.


Ejemplos de Gramáticas de
Atributos
                                   Compiladores 2008 - Traducción
                                   Dirigida por la Sintáxis         13
Definiciones Dirigidas por la
Sintáxis
                      Compiladores 2008 - Traducción
                      Dirigida por la Sintáxis         14
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.




DDS
                                   Compiladores 2008 - Traducción
                                   Dirigida por la Sintáxis         15
Cada    producción A→α está asociada con un
 conjunto de reglas semánticas de la foma:
                    b=f(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.



DDS-Formato
                                     Compiladores 2008 - Traducción
                                     Dirigida por la Sintáxis         16
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.




DDS
                                 Compiladores 2008 - Traducción
                                 Dirigida por la Sintáxis         17
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.




DDS-Evaluación de Atributos
                                      Compiladores 2008 - Traducción
                                      Dirigida por la Sintáxis         18
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.




DDS-Evaluación de Atributos
                                  Compiladores 2008 - Traducción
                                  Dirigida por la Sintáxis         19
 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.
 Lainterdependencia entre atributos heredados y sintetizados
 se puede dibujar como un grafo dirigido. Este grafo se
 conoce con el nombre de Grafo de Dependencias.



DDS-Grafo de Dependencias
                                                Compiladores 2008 - Traducción
                                                Dirigida por la Sintáxis         20
DDS-Grafo de Dependencias
                   Compiladores 2008 - Traducción
                   Dirigida por la Sintáxis         21
Gramática G3
       N             Prod.                      R. Sem.
   1       NRO1→ NRO2 DIG              {NRO1.val=NRO2.val+DIG.val}
   2       NRO→ DIG                    {NRO.val=DIG.val}
   3       DIG →0                      {DIG.val=0}
   4       …….                         ……

           Grafo de Dependencias para la Producción 1


                            NRO1.val


                                        DIG.val
                 NRO2.val


Grafo de Dependendia - Ejemplo
                                                  Compiladores 2008 - Traducción
                                                  Dirigida por la Sintáxis         22
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

Grafo de Dependendia - Ejemplo
                                        Compiladores 2008 - Traducción
                                        Dirigida por la Sintáxis         23
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.


DDS: Grafo de Dependencias-
Orden de Evaluación
                                     Compiladores 2008 - Traducción
                                     Dirigida por la Sintáxis         24
Ejercicio: Construir Grafos de Dependencias
para las Gramáticas G1 y G2 para diferentes
cadenas aceptadas por las mismas.




Grafo de Dependendia - Ejemplo
                              Compiladores 2008 - Traducción
                              Dirigida por la Sintáxis         25
 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

Grafo de Dependendia – Orden de Evaluación
                                               Compiladores 2008 - Traducción
                                               Dirigida por la Sintáxis         26
b               g             b           g                       g                        g
a
            c                             c                   c                         c
                            f                         f                       f                        f
    d               e             d           e           d           e                        e


                a                     a       b           a       a           d




                                Completar                         el
                                ejemplo!
Grafo de Dependendia – Orden
de Evaluación
                                                                      Compiladores 2008 - Traducción
                                                                      Dirigida por la Sintáxis             27
De el orden de evaluación del siguiente grafo de dependencias

                                NRO.val



                    NRO.val                DIG.val



          NRO.val             DIG.val



          DIG.val


Grafo de Dependendia – Orden
de Evaluación
                                            Compiladores 2008 - Traducción
                                            Dirigida por la Sintáxis         28
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.



Ejercicios
                                Compiladores 2008 - Traducción
                                Dirigida por la Sintáxis         29
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).

Grafo de Dependencias-Orden
de Evaluación
                                    Compiladores 2008 - Traducción
                                    Dirigida por la Sintáxis         30
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



DDS
                                 Compiladores 2008 - Traducción
                                 Dirigida por la Sintáxis         31
DDS S-Atribuida
                  Compiladores 2008 - Traducción
                  Dirigida por la Sintáxis         32
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.



DDS S-Atribuida
                                Compiladores 2008 - Traducción
                                Dirigida por la Sintáxis         33
Ejercicio: Determine Cuáles de las GA
presentadas previamente son DDS S-Atribuidas?




DDS S-Atribuida
                               Compiladores 2008 - Traducción
                               Dirigida por la Sintáxis         34
 Losatributos 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.


DDS S-Atribuida
                                     Compiladores 2008 - Traducción
                                     Dirigida por la Sintáxis         35
• 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
                      Estado Valor
                      Z       Z.x
                      Y       Y.x
                      X       X.x
                      ……      ……

• 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.a=f(val[top],val[top-1],val[top-2])


DDS S-Atribuida Evaluación
                                          Compiladores 2008 - Traducción
                                          Dirigida por la Sintáxis         36
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.




DDS S-Atribuida
                                  Compiladores 2008 - Traducción
                                  Dirigida por la Sintáxis         37
DDS L-Atribuida
                  Compiladores 2008 - Traducción
                  Dirigida por la Sintáxis         38
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.


DDS L-Atribuida
                                 Compiladores 2008 - Traducción
                                 Dirigida por la Sintáxis         39
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 X 0→X1…Xj-
1Xj….Xn depende solo de:



Los    atributos sintetizados de X1…Xj-1, a la
izquierda de Xj.

Los   atributos heredados de X0.

DDS L-Atribuida
                                    Compiladores 2008 - Traducción
                                    Dirigida por la Sintáxis         40
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.



DDS L-Atribuida
                                         Compiladores 2008 - Traducción
                                         Dirigida por la Sintáxis         41
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).



Evaluación de DDS L-Atribuidas
                               Compiladores 2008 - Traducción
                               Dirigida por la Sintáxis         42
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



Evaluación de DDS L-Atribuidas
                                  Compiladores 2008 - Traducción
                                  Dirigida por la Sintáxis         43
Esquemas de Traducción
                   Compiladores 2008 - Traducción
                   Dirigida por la Sintáxis         44
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.




Esquemas de Traducción
                                       Compiladores 2008 - Traducción
                                       Dirigida por la Sintáxis         45
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.



Esquemas de Traducción
                                Compiladores 2008 - Traducción
                                Dirigida por la Sintáxis         46
N. G. L-Attr   N.   ET para G
1   D→T L      1    D→T{L.in=T.type} L
2   T→int      2    T→int {T.tipo=integer}
3   T→real     3    T→real {T.tipo=real}
4   L1→L2,id   4    L1→ {L1.in=L.in} L2,id{addtype(id.entry,L.in}
5   L→id       5    L→ id{addtype(id.entry, L.in}




Esquemas de Traducción
                                             Compiladores 2008 - Traducción
                                             Dirigida por la Sintáxis         47
Ejercicio: Construir el Árbol de Parse para la
siguiente declaración:
Real id1, id2, id3.

Ejercicio: Evaluar el ET.




Esquemas de Traducción
                                Compiladores 2008 - Traducción
                                Dirigida por la Sintáxis         48
 1erCaso: 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.



Producción                 Regla Semántica
1) T→E + T1                T.val= E.val + T1.val
2) NRO1→ NRO2 DIG          NRO1=NRO2.val * 10 + DIG.val
3) DIG→0                   DIG.val=0




ET Diseño
                                          Compiladores 2008 - Traducción
                                          Dirigida por la Sintáxis         49
 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.

            Producción      Producción con Acciones
          X0→X1…Xj-1Xj…Xn    X0→X1…Xj-1 {Xj.h}Xj…Xn         
          X0→X1…Xj-1Xj…Xn    X0→X1…Xj-1Xj{Xj.h}…..Xn        


             D→T LID         D →T{LID.t=T.tipo} LID         




ET Diseño
                                               Compiladores 2008 - Traducción
                                               Dirigida por la Sintáxis         50
 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.



 Producción         Producción con Acciones
                       X0→X1…Xj-1{Acción}Xj…Xn

     Acción: no hace ref. a un atributo calculado a la derecha de Xj




ET Diseño
                                                    Compiladores 2008 - Traducción
                                                    Dirigida por la Sintáxis         51
 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.




Producción                       Regla Semántica
1) T→E + T1                      T.val= E.val + T1.val
2) NRO1→ NRO2 DIG                NRO1=NRO2.val * 10 + DIG.val
3) DIG→0                         DIG.val=0




ET Diseño
                                                Compiladores 2008 - Traducción
                                                Dirigida por la Sintáxis         52
   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.




ET Técnica de Construcción
                                                    Compiladores 2008 - Traducción
                                                    Dirigida por la Sintáxis         53
   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 c:=B(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.




ET Técnica de Construcción
                                                        Compiladores 2008 - Traducción
                                                        Dirigida por la Sintáxis         54
Aplicaciones
               Compiladores 2008 - Traducción
               Dirigida por la Sintáxis         55
 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.



Análisis Estático
                                         Compiladores 2008 - Traducción
                                         Dirigida por la Sintáxis         56
Un visualizador de los elementos estáticos
 de un sistema.




Análisis Estático
                             Compiladores 2008 - Traducción
                             Dirigida por la Sintáxis         57
 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.
 ElAná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”.



Análisis Dinámico
                                      Compiladores 2008 - Traducción
                                      Dirigida por la Sintáxis         58
int f(int x, int y)                          int f(int x, int y)
{                                                {
  int r;                                           int r;
    r=2*x + 3*y                                      printf(“Entra: f”);
  return r;                                          r=2*r+3*y;
}                                                    printf(“Sale:f”);
                                                 }
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?




Análisis Dinámico
                                                                             Compiladores 2008 - Traducción
                                                                             Dirigida por la Sintáxis         59
 Vista
      de componentes recuperadas con Análisis
 Dinámico.




                                Compiladores 2008 - Traducción
                                Dirigida por la Sintáxis         60
 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.

 Porejemplo, una vista clásica es el grafo de funciones.
 Dicho grafo se define de la siguiente manera:
  ◦ G=(P;E)
     P{x/ x es una función del sistema}
     E={(x,y) / x∈P ∧ y ∈P ∧ x llama a y}




Visualización de Software
                                             Compiladores 2008 - Traducción
                                             Dirigida por la Sintáxis         61
 Elgrafo de funciones se puede extraer usando un ET.
 Un ejemplo de una visualización innovadora de esta
  estructura es la siguiente




Visualización de Software
                                    Compiladores 2008 - Traducción
                                    Dirigida por la Sintáxis         62
   Otra forma de presentar la relación llamador-llamado entre las
    funciones del sistema.




                                              Compiladores 2008 - Traducción
                                              Dirigida por la Sintáxis         63
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.




Sistemas
                               Compiladores 2008 - Traducción
                               Dirigida por la Sintáxis         64
A                                         X2
                      3


B    1                      X1
             2
C        1       E
                                                      Y
                                0         4




Software Industrial
                          Compiladores 2008 - Traducción
                          Dirigida por la Sintáxis         65
   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.




Bibliografía
                                                 Compiladores 2008 - Traducción
                                                 Dirigida por la Sintáxis         66
Muchas Gracias por su atención!
Diseño y Construcción de Compiladores
                2008




                         Compiladores 2008 - Traducción
                         Dirigida por la Sintáxis         67

Más contenido relacionado

La actualidad más candente

Electroneumática y Neumática: diseño e implementación de un dispositivo elect...
Electroneumática y Neumática: diseño e implementación de un dispositivo elect...Electroneumática y Neumática: diseño e implementación de un dispositivo elect...
Electroneumática y Neumática: diseño e implementación de un dispositivo elect...SANTIAGO PABLO ALBERTO
 
Aplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en IntouchAplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en IntouchEdison Herrera Núñez
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
Estructura de lenguaje ensamblador
Estructura de lenguaje ensambladorEstructura de lenguaje ensamblador
Estructura de lenguaje ensambladorEustakiu Padilla
 
Rtu unidad 3 - tema 4
Rtu   unidad 3 - tema 4Rtu   unidad 3 - tema 4
Rtu unidad 3 - tema 4UDO Monagas
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARESAnel Sosa
 
Exposicion jjj
Exposicion jjjExposicion jjj
Exposicion jjjMari Mandi
 
Unidad III procedimientos
Unidad III procedimientosUnidad III procedimientos
Unidad III procedimientosaaronastorga4
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARELidizz Garcia Alvarado
 
Aplicación de mantenimiento predictivo a transformador
Aplicación de mantenimiento predictivo a transformadorAplicación de mantenimiento predictivo a transformador
Aplicación de mantenimiento predictivo a transformadorRoberto Sánchez
 

La actualidad más candente (20)

Electroneumática y Neumática: diseño e implementación de un dispositivo elect...
Electroneumática y Neumática: diseño e implementación de un dispositivo elect...Electroneumática y Neumática: diseño e implementación de un dispositivo elect...
Electroneumática y Neumática: diseño e implementación de un dispositivo elect...
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Historia de los plc
Historia de los plcHistoria de los plc
Historia de los plc
 
REDES DE COMUNICACIÓN INDUSTRIAL MAS IMPORTANTES
REDES DE COMUNICACIÓN INDUSTRIAL MAS IMPORTANTESREDES DE COMUNICACIÓN INDUSTRIAL MAS IMPORTANTES
REDES DE COMUNICACIÓN INDUSTRIAL MAS IMPORTANTES
 
Operaciones en PLCs
Operaciones en PLCsOperaciones en PLCs
Operaciones en PLCs
 
Aplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en IntouchAplicación de una mezcladora de fluidos en Intouch
Aplicación de una mezcladora de fluidos en Intouch
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Estructura de lenguaje ensamblador
Estructura de lenguaje ensambladorEstructura de lenguaje ensamblador
Estructura de lenguaje ensamblador
 
Rtu unidad 3 - tema 4
Rtu   unidad 3 - tema 4Rtu   unidad 3 - tema 4
Rtu unidad 3 - tema 4
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
ESPRESIONES REGULARES
ESPRESIONES REGULARESESPRESIONES REGULARES
ESPRESIONES REGULARES
 
Exposicion jjj
Exposicion jjjExposicion jjj
Exposicion jjj
 
Practica7 transferencia registro
Practica7 transferencia registroPractica7 transferencia registro
Practica7 transferencia registro
 
Herramientas case
Herramientas caseHerramientas case
Herramientas case
 
Unidad III procedimientos
Unidad III procedimientosUnidad III procedimientos
Unidad III procedimientos
 
PLC o Automata Industrial
PLC o Automata IndustrialPLC o Automata Industrial
PLC o Automata Industrial
 
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWAREDEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
DEFINICION DE CALIDAD Y CALIDAD DE SOFTWARE
 
Diodo Zener
Diodo ZenerDiodo Zener
Diodo Zener
 
Aplicación de mantenimiento predictivo a transformador
Aplicación de mantenimiento predictivo a transformadorAplicación de mantenimiento predictivo a transformador
Aplicación de mantenimiento predictivo a transformador
 

Destacado

DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De CompiladorBigbossH
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoRaul Gomez
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2perlallamas
 
Cuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integralCuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integralAngie Silva
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoGermania Rodriguez
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico maryr_
 
Sistemas De Información Gerencial
Sistemas De Información GerencialSistemas De Información Gerencial
Sistemas De Información Gerencialwww.cathedratic.com
 
Analizador léxico
Analizador léxico Analizador léxico
Analizador léxico Jorge Molano
 

Destacado (11)

DiseñO De Compilador
DiseñO De CompiladorDiseñO De Compilador
DiseñO De Compilador
 
Analizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador SintácticoAnalizador Léxico, Analizador Sintáctico
Analizador Léxico, Analizador Sintáctico
 
Compiladores1
Compiladores1Compiladores1
Compiladores1
 
Estructura de un compilador 2
Estructura de un compilador 2Estructura de un compilador 2
Estructura de un compilador 2
 
Cuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integralCuadro sinóptico sistema de información integral
Cuadro sinóptico sistema de información integral
 
Automatas y compiladores analisis sintactico
Automatas y compiladores analisis sintacticoAutomatas y compiladores analisis sintactico
Automatas y compiladores analisis sintactico
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Automatas finitos
Automatas finitosAutomatas finitos
Automatas finitos
 
Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico Actividad 2 Analizador léxico, sintáctico y semántico
Actividad 2 Analizador léxico, sintáctico y semántico
 
Sistemas De Información Gerencial
Sistemas De Información GerencialSistemas De Información Gerencial
Sistemas De Información Gerencial
 
Analizador léxico
Analizador léxico Analizador léxico
Analizador léxico
 

Similar a Tds

Diseño Logico de base de datos
Diseño Logico de base de datosDiseño Logico de base de datos
Diseño Logico de base de datosRobert Rodriguez
 
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptxJOSEDCMERCADOBETANCO
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 
descriptores en identificacion de ellos.pptx
descriptores en identificacion de ellos.pptxdescriptores en identificacion de ellos.pptx
descriptores en identificacion de ellos.pptxCarlos Paredes
 
Resolviendo in problema multi-objetivo de selección de requisitos mediante re...
Resolviendo in problema multi-objetivo de selección de requisitos mediante re...Resolviendo in problema multi-objetivo de selección de requisitos mediante re...
Resolviendo in problema multi-objetivo de selección de requisitos mediante re...jfrchicanog
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalclaudyabra
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semanticoAlvaro Cedeño
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintácticoSantiago Andrade
 
Estadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión IntroductoriaEstadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión IntroductoriaLuis Fernando Aguas Bucheli
 

Similar a Tds (20)

Diseño Logico de base de datos
Diseño Logico de base de datosDiseño Logico de base de datos
Diseño Logico de base de datos
 
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje C (pdf)
Lenguaje C (pdf)Lenguaje C (pdf)
Lenguaje C (pdf)
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
(gramatica atribuida)
(gramatica atribuida)(gramatica atribuida)
(gramatica atribuida)
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Tipos de Datos Abstractos.
Tipos de Datos Abstractos.Tipos de Datos Abstractos.
Tipos de Datos Abstractos.
 
descriptores en identificacion de ellos.pptx
descriptores en identificacion de ellos.pptxdescriptores en identificacion de ellos.pptx
descriptores en identificacion de ellos.pptx
 
Analisis Semantico
Analisis Semantico Analisis Semantico
Analisis Semantico
 
Análisis semántico
Análisis semánticoAnálisis semántico
Análisis semántico
 
Resolviendo in problema multi-objetivo de selección de requisitos mediante re...
Resolviendo in problema multi-objetivo de selección de requisitos mediante re...Resolviendo in problema multi-objetivo de selección de requisitos mediante re...
Resolviendo in problema multi-objetivo de selección de requisitos mediante re...
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Taller analisis semantico
Taller analisis semanticoTaller analisis semantico
Taller analisis semantico
 
clase 3-MODELO RELACIONAL.ppt
clase 3-MODELO RELACIONAL.pptclase 3-MODELO RELACIONAL.ppt
clase 3-MODELO RELACIONAL.ppt
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Presentacion1
Presentacion1Presentacion1
Presentacion1
 
Estadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión IntroductoriaEstadística con Lenguaje R: Sesión Introductoria
Estadística con Lenguaje R: Sesión Introductoria
 

Último

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfmiltonantonioescamil
 
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docxkattiagonzalesrengif
 
Leyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosddddddddddddddddddddddddddddddddddddddddLeyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosddddddddddddddddddddddddddddddddddddddddLeonardoMedrano7
 
Ergonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptxErgonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptxmolinabdiego93
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllllJesusFlores332
 
Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023danyercatari1
 
Manual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdfManual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdfAlbisRosMartnez
 

Último (7)

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdf
 
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
715422705-PROGRAMACION-ANUAL-CCSS-1-2024.docx
 
Leyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosddddddddddddddddddddddddddddddddddddddddLeyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
Leyes de Kirchhoff ejercciosdddddddddddddddddddddddddddddddddddddddd
 
Ergonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptxErgonomía en Oficinas- Ergonomía en Oficina.pptx
Ergonomía en Oficinas- Ergonomía en Oficina.pptx
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllll
 
Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023Manual de Camioneta Toyota doble traccion 20023
Manual de Camioneta Toyota doble traccion 20023
 
Manual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdfManual Volkswagen gol voyage 2015(1).pdf
Manual Volkswagen gol voyage 2015(1).pdf
 

Tds

  • 1. Área de Autómatas y Lenguajes Traducción Dirigida por la Sintáxis Diseño y Construcción de Compiladores 2008
  • 2.  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. Traducción Dirigida por la Sintáxis Compiladores 2008 - Traducción Dirigida por la Sintáxis 2
  • 3. 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. Traducción Dirigida por la Sintáxis Compiladores 2008 - Traducción Dirigida por la Sintáxis 3
  • 4. 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. Traducción Dirigida por la Sintáxis Compiladores 2008 - Traducción Dirigida por la Sintáxis 4
  • 5. 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 Índice Compiladores 2008 - Traducción Dirigida por la Sintáxis 5
  • 6. Gramáticas de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 6
  • 7. 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. Gramáticas de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 7
  • 8. Sea G=<N,T,P,S> 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.aj=f(b1j1,…..,bkjk), 0 ≤ jl ≤ m, 0 ≤ i ≤ m, donde cada bljl ∈ Atr(Xjl). Gramáticas de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 8
  • 9. 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.a=f(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. X0 X1 Xi Xn Atributos Sintetizados Compiladores 2008 - Traducción Dirigida por la Sintáxis 9
  • 10. 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 Atributos Heredados Compiladores 2008 - Traducción Dirigida por la Sintáxis 10
  • 11. Dada la siguiente gramática G1: a. NRO→ DIG | NRO DIG b. DIG →0|1|2|3|4|5|6|7|8|9 Calcular el valor de los números generados por G usando un atributo sintetizado val. Ejemplos de Gramáticas de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 11
  • 12. La siguiente gramática expresa declaraciones en una sintaxis similar a la usada por el lenguaje C: G2: a. DECL → TYPE VAR-LIST b. TYPE → INT | FLOAT c. VAR-LIST → ID, VAR-LIST | ID Usando un atributo heredado determine el tipo de los identificadores Ejemplos de Gramáticas de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 12
  • 13. Ejercicio: La siguiente gramática permite expresar números en decimal y octal: G3: a. BNRO→NRO B b. B →O|D c. NRO →NRO DIG | DIG d. DIG → 0|1|2|3|4|5|6|7|8|9 Defina los atributos y reglas semánticas necesarias para calcular el valor del número. Ejemplos de Gramáticas de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 13
  • 14. Definiciones Dirigidas por la Sintáxis Compiladores 2008 - Traducción Dirigida por la Sintáxis 14
  • 15. 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. DDS Compiladores 2008 - Traducción Dirigida por la Sintáxis 15
  • 16. Cada producción A→α está asociada con un conjunto de reglas semánticas de la foma: b=f(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. DDS-Formato Compiladores 2008 - Traducción Dirigida por la Sintáxis 16
  • 17. 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. DDS Compiladores 2008 - Traducción Dirigida por la Sintáxis 17
  • 18. 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. DDS-Evaluación de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 18
  • 19. 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. DDS-Evaluación de Atributos Compiladores 2008 - Traducción Dirigida por la Sintáxis 19
  • 20.  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.  Lainterdependencia entre atributos heredados y sintetizados se puede dibujar como un grafo dirigido. Este grafo se conoce con el nombre de Grafo de Dependencias. DDS-Grafo de Dependencias Compiladores 2008 - Traducción Dirigida por la Sintáxis 20
  • 21. DDS-Grafo de Dependencias Compiladores 2008 - Traducción Dirigida por la Sintáxis 21
  • 22. Gramática G3 N Prod. R. Sem. 1 NRO1→ NRO2 DIG {NRO1.val=NRO2.val+DIG.val} 2 NRO→ DIG {NRO.val=DIG.val} 3 DIG →0 {DIG.val=0} 4 ……. …… Grafo de Dependencias para la Producción 1 NRO1.val DIG.val NRO2.val Grafo de Dependendia - Ejemplo Compiladores 2008 - Traducción Dirigida por la Sintáxis 22
  • 23. 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 Grafo de Dependendia - Ejemplo Compiladores 2008 - Traducción Dirigida por la Sintáxis 23
  • 24. 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. DDS: Grafo de Dependencias- Orden de Evaluación Compiladores 2008 - Traducción Dirigida por la Sintáxis 24
  • 25. Ejercicio: Construir Grafos de Dependencias para las Gramáticas G1 y G2 para diferentes cadenas aceptadas por las mismas. Grafo de Dependendia - Ejemplo Compiladores 2008 - Traducción Dirigida por la Sintáxis 25
  • 26.  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 Grafo de Dependendia – Orden de Evaluación Compiladores 2008 - Traducción Dirigida por la Sintáxis 26
  • 27. b g b g g g a c c c c f f f f d e d e d e e a a b a a d Completar el ejemplo! Grafo de Dependendia – Orden de Evaluación Compiladores 2008 - Traducción Dirigida por la Sintáxis 27
  • 28. De el orden de evaluación del siguiente grafo de dependencias NRO.val NRO.val DIG.val NRO.val DIG.val DIG.val Grafo de Dependendia – Orden de Evaluación Compiladores 2008 - Traducción Dirigida por la Sintáxis 28
  • 29. 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. Ejercicios Compiladores 2008 - Traducción Dirigida por la Sintáxis 29
  • 30. 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). Grafo de Dependencias-Orden de Evaluación Compiladores 2008 - Traducción Dirigida por la Sintáxis 30
  • 31. 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 DDS Compiladores 2008 - Traducción Dirigida por la Sintáxis 31
  • 32. DDS S-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 32
  • 33. 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. DDS S-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 33
  • 34. Ejercicio: Determine Cuáles de las GA presentadas previamente son DDS S-Atribuidas? DDS S-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 34
  • 35.  Losatributos 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. DDS S-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 35
  • 36. • 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 Estado Valor Z Z.x Y Y.x X X.x …… …… • 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.a=f(val[top],val[top-1],val[top-2]) DDS S-Atribuida Evaluación Compiladores 2008 - Traducción Dirigida por la Sintáxis 36
  • 37. 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. DDS S-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 37
  • 38. DDS L-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 38
  • 39. 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. DDS L-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 39
  • 40. 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 X 0→X1…Xj- 1Xj….Xn depende solo de: Los atributos sintetizados de X1…Xj-1, a la izquierda de Xj. Los atributos heredados de X0. DDS L-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 40
  • 41. 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. DDS L-Atribuida Compiladores 2008 - Traducción Dirigida por la Sintáxis 41
  • 42. 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). Evaluación de DDS L-Atribuidas Compiladores 2008 - Traducción Dirigida por la Sintáxis 42
  • 43. 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 Evaluación de DDS L-Atribuidas Compiladores 2008 - Traducción Dirigida por la Sintáxis 43
  • 44. Esquemas de Traducción Compiladores 2008 - Traducción Dirigida por la Sintáxis 44
  • 45. 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. Esquemas de Traducción Compiladores 2008 - Traducción Dirigida por la Sintáxis 45
  • 46. 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. Esquemas de Traducción Compiladores 2008 - Traducción Dirigida por la Sintáxis 46
  • 47. N. G. L-Attr N. ET para G 1 D→T L 1 D→T{L.in=T.type} L 2 T→int 2 T→int {T.tipo=integer} 3 T→real 3 T→real {T.tipo=real} 4 L1→L2,id 4 L1→ {L1.in=L.in} L2,id{addtype(id.entry,L.in} 5 L→id 5 L→ id{addtype(id.entry, L.in} Esquemas de Traducción Compiladores 2008 - Traducción Dirigida por la Sintáxis 47
  • 48. Ejercicio: Construir el Árbol de Parse para la siguiente declaración: Real id1, id2, id3. Ejercicio: Evaluar el ET. Esquemas de Traducción Compiladores 2008 - Traducción Dirigida por la Sintáxis 48
  • 49.  1erCaso: 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. Producción Regla Semántica 1) T→E + T1 T.val= E.val + T1.val 2) NRO1→ NRO2 DIG NRO1=NRO2.val * 10 + DIG.val 3) DIG→0 DIG.val=0 ET Diseño Compiladores 2008 - Traducción Dirigida por la Sintáxis 49
  • 50.  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. Producción Producción con Acciones X0→X1…Xj-1Xj…Xn X0→X1…Xj-1 {Xj.h}Xj…Xn  X0→X1…Xj-1Xj…Xn X0→X1…Xj-1Xj{Xj.h}…..Xn  D→T LID D →T{LID.t=T.tipo} LID  ET Diseño Compiladores 2008 - Traducción Dirigida por la Sintáxis 50
  • 51.  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. Producción Producción con Acciones X0→X1…Xj-1{Acción}Xj…Xn Acción: no hace ref. a un atributo calculado a la derecha de Xj ET Diseño Compiladores 2008 - Traducción Dirigida por la Sintáxis 51
  • 52.  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. Producción Regla Semántica 1) T→E + T1 T.val= E.val + T1.val 2) NRO1→ NRO2 DIG NRO1=NRO2.val * 10 + DIG.val 3) DIG→0 DIG.val=0 ET Diseño Compiladores 2008 - Traducción Dirigida por la Sintáxis 52
  • 53. 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. ET Técnica de Construcción Compiladores 2008 - Traducción Dirigida por la Sintáxis 53
  • 54. 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 c:=B(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. ET Técnica de Construcción Compiladores 2008 - Traducción Dirigida por la Sintáxis 54
  • 55. Aplicaciones Compiladores 2008 - Traducción Dirigida por la Sintáxis 55
  • 56.  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. Análisis Estático Compiladores 2008 - Traducción Dirigida por la Sintáxis 56
  • 57. Un visualizador de los elementos estáticos de un sistema. Análisis Estático Compiladores 2008 - Traducción Dirigida por la Sintáxis 57
  • 58.  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.  ElAná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”. Análisis Dinámico Compiladores 2008 - Traducción Dirigida por la Sintáxis 58
  • 59. int f(int x, int y) int f(int x, int y) { { int r; int r; r=2*x + 3*y printf(“Entra: f”); return r; r=2*r+3*y; } printf(“Sale:f”); } 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? Análisis Dinámico Compiladores 2008 - Traducción Dirigida por la Sintáxis 59
  • 60.  Vista de componentes recuperadas con Análisis Dinámico. Compiladores 2008 - Traducción Dirigida por la Sintáxis 60
  • 61.  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.  Porejemplo, una vista clásica es el grafo de funciones. Dicho grafo se define de la siguiente manera: ◦ G=(P;E)  P{x/ x es una función del sistema}  E={(x,y) / x∈P ∧ y ∈P ∧ x llama a y} Visualización de Software Compiladores 2008 - Traducción Dirigida por la Sintáxis 61
  • 62.  Elgrafo de funciones se puede extraer usando un ET.  Un ejemplo de una visualización innovadora de esta estructura es la siguiente Visualización de Software Compiladores 2008 - Traducción Dirigida por la Sintáxis 62
  • 63. Otra forma de presentar la relación llamador-llamado entre las funciones del sistema. Compiladores 2008 - Traducción Dirigida por la Sintáxis 63
  • 64. 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. Sistemas Compiladores 2008 - Traducción Dirigida por la Sintáxis 64
  • 65. A X2 3 B 1 X1 2 C 1 E Y 0 4 Software Industrial Compiladores 2008 - Traducción Dirigida por la Sintáxis 65
  • 66. 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. Bibliografía Compiladores 2008 - Traducción Dirigida por la Sintáxis 66
  • 67. Muchas Gracias por su atención! Diseño y Construcción de Compiladores 2008 Compiladores 2008 - Traducción Dirigida por la Sintáxis 67