


















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Cómo especificar traductores con atributos mediante las notaciones dds (descente derecha sin recursividad) y edt (esquemas de traducción). Se abordan conceptos como atributos sintetizados y heredados, procesamiento de tokens, evaluación de atributos durante el análisis sintáctico y la traducción.
Tipo: Apuntes
1 / 26
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



















Preparado por: J.A.Román 2003
Índice
2.1.-Notación DDS: Definiciones Dirigidas por la Sintaxis
2.3.- Implantación de un DDS con atributos sintetizados.
2.4.- Notación EDT: Esquemas De Traducción
2.4.1.- Definiciones con atributos por la izquierda
Esquema de lo que se va a tratar en este capítulo:
2.1.-Notación DDS: Definiciones Dirigidas por la Sintaxis
Es una notación formal para especificar las definiciones de las acciones semánticas dirigidas o guiadas por la sintaxis de la gramática. Es una generalización o extensión de las reglas de la gramática.
Esta notación asocia a cada símbolo de la gramática ( nodo u hoja) atributos. Los atributos pueden ser de dos tipos:
Esta notación asocia a las producciones de la gramática con reglas semánticas , que establecen un grafo de dependencias entre los atributos del que se obtiene el orden de evaluación de las reglas. La evaluación de las reglas semánticas define los valores de los atributos en los nodos del árbol sintáctico para una entrada determinada.
El formato de las DDS es:
Producciones de la gramática Reglas Semánticas
A F 0 E 0a1 a2 a3 ..... an A.s = f (a1.s, a2.s, ……an.s) ak.h = f (A.h, a1.h,…..)
Cada atributo de un símbolo se representa con el símbolo, un punto y una letra: En la tabla anterior:
A veces se utilizan atributos llamados ficticios del no terminal de la parte izquierda de la regla ( por ej: una función de imprimir ).
Ejemplo 1: Escribir una DDS para una calculadora utilizando atributos sintetizados
Sean las producciones para una calculadora que sume, reste, multiplique y divida dígitos.
L F 0E 0 E \n El ANALEX entrega los tokens: d opsr opmd pa ,pc fin
L F 0E 0 E fin E F 0E 0 E + T E F 0E 0 E opsr T E F 0E 0 E - T E F 0E 0 T E F 0E 0 T T F 0E 0 T*F T F 0E 0 T opmd F T F 0E 0 T / F T F 0E 0 F T F 0E 0 F F F 0E 0( E ) F F 0E 0 pa E pc F F 0E 0d F F 0E 0 d
¿ Qué traducción? Calcular las operaciones aritméticas e imprimir el resultado
¿ Qué información? ¿ Quién la proporciona? Operandos : valor de los dígitos... simbolicemos estos atributos con .v Lo proporciona el símbolo d el atributo de d será d.v.
Operadores: opsr para sumar y restar. El atributo tiene que distinguir si es suma o resta. Lo simbolizaremos por .o , es decir : opsr.o. Lo mismo para la multiplicación y la división : opmd.o.
¿ Qué hacer con esa información? Realizar las operaciones e imprimir el resultado
¿ A quién pertenecen los resultados? Las sumas y restas a E , las multiplicaciones y divisiones a T , la impresión del resultado total a L
Siempre se podrá realizar el análisis sintáctico de forma ascendente y al mismo tiempo realizar la traducción con atributos sintetizados.
Las operaciones parciales se realizarán mediante una función a la que se entrega como argumentos los dos operandos y la operación. Las reglas semánticas se asocian :
A la regla E F 0E 0 E opsr T ................. E.v = operación( E.v, T.v , opsr.o) A la regla T F 0E 0 T opmd F ................ T.v = operación( T.v, F.v , opmd.o) A la regla L F 0E 0 E fin ................ atributo ficticio imprime(E.v)
Para responder a las preguntas anteriores nos puede ayudar ponernos un ejemplo
2.2.- Implantación de un DDS con atributos sintetizados.
Es fácil evaluar los atributos sintetizados en un analizador ascendente durante el análisis sintáctico.
Si ampliamos la pila con otra pila en paralelo y asociamos los atributos a sus símbolos, se pueden conservar en ella los valores de los atributos sintetizados. Siempre que hay reducción se calculan los valores de los nuevos atributos sintetizados a partir de los que están en la pila asociados con los símbolos reducidos.
Símbolo / Estado Atributos
X / Sx X.a Y / Sy Y.a Z / Sz Z.a
Se puede modificar el código de un analizador sintáctico ascendente con fragmentos de código que evalúen los atributos
Ejemplo :
Producciones Fragmento de código L F 0E 0 E \n imprime(valor[tope]) E F 0E 0E + T valor[ntope]= valor[tope-2] + valor[tope] E F 0E 0T T F 0E 0 T * F valor[ntope]= valor[tope-2] * valor[tope] T F 0E 0 F F F 0E 0 ( E ) valor[ntope]= valor[tope-1] F F 0E 0 digito
Cuando hay una reducción de r símbolos de la parte derecha de la regla: ntope = tope – r + 1 Después de ejecutar cada fragmento de código: tope = ntope
2.3.- Notación EDT: Esquemas De Traducción
2.3.1.- Definiciones con atributos por la izquierda
Hay una clase de definiciones, las llamadas con atributos izquierdos que siempre se pueden evaluar recorriendo el árbol sintáctico en profundidad.
Se llama orden de evaluación en profundidad el que se obtiene aplicando la función visitaprof(n, nodo) a la raíz de un árbol: Condiciones para ser atributos izquierdos:
A los atributos sintetizados no se les pone ninguna restricción. Así pues:
Las definiciones con atributos sintetizados son siempre con atributos izquierdos
EDT : Otra notación para especificar traductores:
Con atributos sintetizados:
DDS: T F 0E 0T * F T.v = T.v * F.val
T F 0E 0T * F { T.v = T.v * F.val }
Tras leer la declaración, añadir el tipo a los correspondientes id de la lista en la TDS
¿ Qué información? ¿ Quién la proporciona? Los tipos int o real, los atributos T.t = VALORTIPOENTERO , o T.t = VALORTIPOREAL. La posición de la TDS de cada identificador. atributo id.e ¿ Qué hacer con esa información? Llevar la información de tipo a cada uno de los id Añadir el tipo en la TDS a cada id
¿ A quién pertenecen los resultados? Al símbolo donde están los id : L
Se necesitará el atributo ficticio añadetipo(tipo, id.e), una función que escribirá el tipo que da su primer argumento en la posición de la TDS que indica el segundo argumento.
Ejemplo de EDT: Expresiones aritméticas.Calculadora. Traducción: realizar los cálculos
Atributos sintetizados. Analizador ascendente
E F 0E 0 E1 + T { E.v = E1.v + T.v } Las acciones siempre al final E F 0E 0 E1 - T { E.v = E1.v – T.v } (ver ejemplo anterior de DDS) E F 0E 0 T { E.v = T.v} ( 4 + 5 * 6 + 3 ) T F 0E 0 ( E ) { T.v = E.v} T F 0E 0 numero { T.v = valornúmero }
Atributos heredados y sintetizados. Analizador descendente
Ejemplo : 8 – 9 + 3 Después de eliminar la recursividad por la izquierda:
E F 0E 0 T { R.h = T.v } R F 0E 0 +
R {E.v = R.s } T { R1h = R.h + T.v} R1 { Rs= R1s} R F 0E 0 - R F 0E 0λ T { R1h = R.h - T.v}
R1 { Rs= R1s}
T F 0E 0 ( T F 0E 0 numero { T.v = valornumero }
E { T.v = E.v}
Pseudocódigo de un analizador-traductor descendente recursivo
Se ha de tener en cuenta: Un atributo sintetizado es devuelto por la función del símbolo Un atributo heredado es el argumento de la función
Analizador Analizador-traductor
Hasta ahora hemos visto que en las definiciones con atributos izquierdos se evalúan las reglas semánticas siempre con un recorrido en profundidad. Se ha aplicado a dos casos:
También es posible:
A veces es posible evaluar con atributos heredados y sintetizados durante el análisis ascendente aunque no sean definiciones con atributos izquierdo si y sólo si se transforma la gramática sustituyendose atributos heredados por sintetizados.