Traducción Dirigida por Sintaxis

Documentos relacionados
Compiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis

Análisis Semántico y Traducción Dirigida por la Sintaxis. Programación II Margarita Álvarez

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA

Gramáticas de Atributos

ANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS

Traducción dirigida por la sintaxis

ANÁLISIS SEMÁNTICO ETDS VS DDS

Tema 5. Análisis semántico

Verificación de Tipos

Procesadores de lenguaje Tema 4 Análisis semántico

Procesadores de lenguaje Tema 4 Análisis semántico

Tema 5: Traducción dirigida por la sintaxis

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 5

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores

Compiladores e Intérpretes Análisis Semántico I

Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis

16 Análisis sintáctico I

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

COMPILADORES. Tema 4. Análisis semántico

Capítulo 5: Traducción Dirigida por Sintaxis

Análisis semántico I Traducción dirigida por la sintaxis

17 Análisis sintáctico II Compiladores - Profr. Edgardo Adrián Franco Martínez. Gramáticas limpias y bien formadas

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3)

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

Matemáticas Básicas para Computación

Lenguajes y Compiladores Traducción Dirigida por la Sintaxis

Lenguajes y Compiladores Análisis Léxico

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente

Unidad I: Análisis semántico

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.

Qué es el análisis semántico?

Ciencias de la Computación I

TRADUCTORES E INTERPRETADORES

Lenguajes Libres del Contexto

Procesadores de Lenguaje

Tema 5: Traducción dirigida por la sintaxis

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1

GRAMATICAS LIBRES DEL CONTEXTO

Conceptos básicos sobre gramáticas

LENGUAJES Y GRAMÁTICAS

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

UNIVERSIDAD DE GUADALAJARA

ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO


PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

GENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS

Análisis Sintáctico Descendente

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

Procesadores de Lenguaje

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

El proceso del Análisis Léxico

Pontificia Universidad Católica del Ecuador

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

3.0.-ARBOLES ABARCADORES Y COMPONENTES CONEXOS CONCEPTO DE ARBOL ABARCADOR Y SU RELACION CON LOS RECORRIDOS.

Capítulo 8. Árboles. Continuar

Lenguajes de Programación I

El análisis descendente LL(1) 6, 7 y 13 de abril de 2011

Proyecto Intermedio Algoritmo de Earley

Curso Básico de Computación

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática

Curso Básico de Computación

TEMA 3: ANÁLISIS SEMÁNTICO

Lenguajes de Programación I

Curso Básico de Computación Preliminares

Generación de Código Intermedio

Analizador Sintáctico Ascendente

Análisis semántico. Análisis semántico. Índice (I)

Lógica y Programación

Algoritmos y Programación Orientada a Objetos I. Contenedoras de tamaño variable y uso de ciclos en otros contextos

DOMINIOS COGNITIVOS (Objetos de estudio, temas y subtemas)

Sintaxis y Semántica. Un repaso

ANÁLISIS SINTÁCTICO I ANÁLISIS SINTÁCTICO DESCENDENTE LL(1)

Procesadores de Lenguaje

Analizadores sintácticos LR(0) y SLR

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

Procesadores de Lenguajes. Análisis sintáctico. Gramáticas libres de contexto

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

CÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO!

Funciones Segunda parte

Compiladores e Intérpretes Análisis Semántico IV

Matemáticas Discretas Tc1003 Teoría de Grafos

Parsing Top Down (Descendente)

Lenguajes de Programación I

Capítulo 9. Introducción a los lenguajes formales. Continuar

NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN

TRADUCTORES E INTERPRETADORES

Transcripción:

Traducción Dirigida por Sintaxis CI4721 Lenguajes de Programación II Ernesto Hernández-Novich <emhn@usb.ve> Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 1 / 41

Definición Dirigida por Sintaxis Una Definición Dirigida por Sintaxis (Syntax-Directed Definition o SDD por sus siglas en inglés) es la combinación de: Una G = (N, Σ, P, S) libre de contexto. Un conjunto de atributos asociados a los símbolos de la gramática. El símbolo X (N Σ) puede tener cero o más atributos asociados. De cualquier tipo conveniente: números, cadenas, valores de verdad, tablas, referencias, conjuntos,... Usaremos X.a para denotar que a es uno de los atributos de X. Un conjunto de reglas semánticas asociadas a las producciones. También se les llama acciones o reglas de etiquetado. Establecen dependencias entre atributos de los símbolos. Sin efectos de borde Gramática de Atributos. Con efectos de borde Esquemas de Traducción. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 2 / 41

Tipos de Atributos Cada A α tiene asociado un conjunto de reglas semánticas de la forma donde f es una función b f (c 1, c 2,..., c k ) b es sintetizado para A si todos los c i pertenecen a símbolos en α. b es heredado para B si B ocurre en α y los c i pertenecen a cualquier símbolo de la producción. Diremos que b depende de los c i. Los terminales sólo tienen atributos sintetizados. También se les llama intrínsecos. Su valor depende del lexema particular. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 3 / 41

Expresiones, de nuevo Para reconocimiento ascendente S E# E E 1 +T E T T T 1 F T F F (E) F n {S.val E.val} {E.val E 1.val + T.val} {E.val T.val} {T.val T 1.val F.val} {T.val F.val} {F.val E.val} {F.val n.val} Todos los símbolos tienen un atributo val numérico. El atributo val es sintetizado. El atributo n.val corresponde al valor numérico asociado al lexema. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 4 / 41

La gramática de atributos no es un programa es un sistema de ecuaciones simultáneas que requiere solución. Para un w L(G) cualquiera Se construye el árbol de derivación. Se decoran los nodos con las ecuaciones de cálculo de atributos. Se evalúan los atributos en algún orden, hasta evaluarlos todos. Para evaluar un atributo es necesario haber evaluado previamente todos aquellos de los cuales depende. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 5 / 41

Paso 1 La derivación para 6*5+12 S E # E + T T F T F n(12) F n(5) n(6) Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 6 / 41

Paso 2 Las ecuaciones S.val E.val E.val E 1.val + T.val # E 1.val T.val T.val T 1.val F.val + T.val F.val F.val n.val T 1.val F.val F.val n.val n.val 12 F.val n.val n.val 5 n.val 6 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 7 / 41

Paso 3 Resolver ecuaciones S.val E.val E.val E 1.val + T.val # E 1.val T.val T.val T 1.val F.val + T.val F.val F.val 12 T 1.val F.val F.val 6 n.val 6 F.val 5 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 8 / 41

Paso 3 Resolver ecuaciones S.val E.val E.val E 1.val + T.val # E 1.val T.val T.val T 1.val 5 + T.val 12 F.val 12 T 1.val 6 F.val 6 n.val 6 F.val 5 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 9 / 41

Paso 3 Resolver ecuaciones S.val E.val E.val E 1.val + 12 # E 1.val T.val T.val 6 5 + T.val 12 F.val 12 T 1.val 6 F.val 6 n.val 6 F.val 5 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 10 / 41

Paso 3 Resolver ecuaciones S.val E.val E.val E 1.val + 12 # E 1.val 30 T.val 30 + T.val 12 F.val 12 T 1.val 6 F.val 6 n.val 6 F.val 5 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 11 / 41

Paso 3 Resolver ecuaciones S.val E.val E.val 30 + 12 # E 1.val 30 T.val 30 + T.val 12 F.val 12 T 1.val 6 F.val 6 n.val 6 F.val 5 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 12 / 41

Obtenemos la respuesta S.val 42 E.val 42 # E 1.val 30 T.val 30 + T.val 12 F.val 12 T 1.val 6 F.val 6 n.val 6 F.val 5 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 13 / 41

Expresiones, de nuevo Para reconocimiento descendente S E# E TE E +TE 1 T FT T FT 1 F (E) F n {S.val { E.val} } E.in T.val E.val E.val { } E 1.in E.in + T.val E.val E 1.val {E {.val E.in}} T.in F.val T.val T.val { } T 1.in T.in F.val T.val T 1.val {T.val T.in} {F.val E.val} {F.val n.val} El atributo val es sintetizado el atributo in es heredado. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 14 / 41

Paso 1 La derivación para 6*5+12 S E # T E F T + T E n(6) F T F T n(5) n(12) Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 15 / 41

Paso 2 Las ecuaciones S.val E.val E.in T.val E.val E.val # T.in F.val T.val T.val E 1.in E.in + T.val E.val E 1.val F.val n.val T 1.in T.in F.val T.val T 1.val + T.in F.val T.val T.val E 1.val E 1.in n.val 6 F.val n.val T 1.val T 1.in F.val n.val T.val T.in n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 16 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in T.val E.val E.val # T.in F.val T.val T.val E 1.in E.in + T.val E.val E 1.val F.val 6 T 1.in T.in F.val T.val T 1.val + T.in F.val T.val T.val E 1.val E 1.in n.val 6 F.val 5 T 1.val T 1.in F.val 12 T.val T.in n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 17 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in T.val E.val E.val # T.in 6 T.val T.val E 1.in E.in + T.val E.val E 1.val F.val 6 T 1.in T.in 5 T.val T 1.val + T.in 12 T.val T.val E 1.val E 1.in n.val 6 F.val 5 T 1.val T 1.in F.val 12 T.val T.in n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 18 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in T.val E.val E.val # T.in 6 T.val T.val E 1.in E.in + T.val E.val E 1.val F.val 6 T 1.in 6 5 T.val T 1.val + T.in 12 T.val T.val E 1.val E 1.in n.val 6 F.val 5 T 1.val T 1.in F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 19 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in T.val E.val E.val # T.in 6 T.val T.val E 1.in E.in + T.val E.val E 1.val F.val 6 T 1.in 30 T.val T 1.val + T.in 12 T.val 12 E 1.val E 1.in n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 20 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in T.val E.val E.val # T.in 6 T.val T.val E 1.in E.in + 12 E.val E 1.val F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val E 1.in n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 21 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in T.val E.val E.val # T.in 6 T.val 30 E 1.in E.in + 12 E.val E 1.val F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val E 1.in n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 22 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in 30 E.val E.val # T.in 6 T.val 30 E 1.in E.in + 12 E.val E 1.val F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val E 1.in n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 23 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in 30 E.val E.val # T.in 6 T.val 30 E 1.in 30 + 12 E.val E 1.val F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val E 1.in n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 24 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in 30 E.val E.val # T.in 6 T.val 30 E 1.in 42 E.val E 1.val F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val 42 n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 25 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in 30 E.val E.val # T.in 6 T.val 30 E 1.in 42 E.val 42 F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val 42 n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 26 / 41

Paso 3 Resolver ecuaciones S.val E.val E.in 30 E.val 42 # T.in 6 T.val 30 E 1.in 42 E.val 42 F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val 42 n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 27 / 41

Obtenemos la respuesta S.val 42 E.in 30 E.val 42 # T.in 6 T.val 30 E 1.in 42 E.val 42 F.val 6 T 1.in 30 T.val 30 + T.in 12 T.val 12 E 1.val 42 n.val 6 F.val 5 T 1.val 30 F.val 12 T.val 12 n.val 5 n.val 12 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 28 / 41

Complejo, pero conveniente Incluir atributos heredados cambió el orden de recorrido del árbol. En este ejemplo, solamente bajaron. En general, podrían moverse hacia hijos o hacia hermanos. Los atributos heredados son convenientes porque permiten expresar las dependencias en el contexto. Siempre es posible convertir una definición dirigida por sintaxis para usar sólo atributos sintetizados Reescribiendo la gramática quizás deformándola. Cambiando el tipo de los atributos. Para algunas construcciones es más natural utilizar atributos heredados. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 29 / 41

Complejo, pero conveniente Incluir atributos heredados cambió el orden de recorrido del árbol. En este ejemplo, solamente bajaron. En general, podrían moverse hacia hijos o hacia hermanos. Los atributos heredados son convenientes porque permiten expresar las dependencias en el contexto. Siempre es posible convertir una definición dirigida por sintaxis para usar sólo atributos sintetizados Reescribiendo la gramática quizás deformándola. Cambiando el tipo de los atributos. Para algunas construcciones es más natural utilizar atributos heredados. Cómo encontramos el orden de evaluación? Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 29 / 41

Orden de Evaluación Relación de Dependencia Un Grafo de Dependencia permite representar el flujo de información entre los atributos de un árbol particular. Por cada nodo del árbol X que tenga un atributo X.b, definir un nodo en el grafo para X.b Teniendo X.b f (c 1, c 2,..., c k ) entonces se establece una arista en el grafo con origen en el nodo que define a c i y destino en el nodo X.b. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 30 / 41

Orden de Evaluación Estableciendo el Orden de Evaluación El grafo caracteriza los órdenes de evaluación posibles. Si existe una secuencia de nodos N 1, N 2,..., N k tal que si hay una arista entre N i y N j entonces i < j, esa secuencia es un orden de evaluación posible. Corresponde al Orden Topológico del grafo. Si hay un ciclo en el grafo, es imposible obtener el orden. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 31 / 41

Orden de Evaluación Estableciendo el Orden de Evaluación El grafo caracteriza los órdenes de evaluación posibles. Si existe una secuencia de nodos N 1, N 2,..., N k tal que si hay una arista entre N i y N j entonces i < j, esa secuencia es un orden de evaluación posible. Corresponde al Orden Topológico del grafo. Si hay un ciclo en el grafo, es imposible obtener el orden. Podemos usar DFS sobre un árbol particular pero es muy costoso tratar de determinarlo para una SDD. En la práctica, queremos SDD en los cuales se garantice la existencia de un orden. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 31 / 41

Orden de Evaluación Definiciones S-Atribuidas De abajo hacia arriba Una SDD que sólo usa atributos sintetizados se dice S-atribuida. Evaluar el cálculo de atributos desde las hojas hacia la raíz. Recorrido postorden. Los valores se propagan de abajo hacia arriba. Coinciden con la operación de un reconocedor ascendente. Cada reducción corresponde con la evaluación de reglas. El árbol se construye de las hojas hacia la raíz. Las definiciones S-atribuidas son las preferidas en la práctica Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 32 / 41

Orden de Evaluación Definiciones L-Atribuidas De izquierda a derecha, y arriba hacia abajo Una SDD es L-Atribuida si todo atributo: Es sintetizado. Si se tiene A X 1 X 2... X n y X i.a es un atributo heredado, el cálculo solamente puede usar: Atributos heredados asociados con A. Atributos heredados o sintetizados asociados con cualesquiera X 1, X 2,... X i 1. Atributos heredados de X i siempre que no establezcan ciclos. Coinciden con la operación de un reconocedor descendente. Expansiones usan resultados calculados a su izquierda en la producción. Cuando se alcanza el final de la producción, se calculan resultados para el no terminal expandido. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 33 / 41

Esquemas de Traducción Controlar los Efectos de Borde Los efectos de borde son necesarios en la práctica Para generar resultados visibles S E# {printe.val} Para recopilar información tabla de símbolos, tipos,... Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 34 / 41

Esquemas de Traducción Controlar los Efectos de Borde Los efectos de borde son necesarios en la práctica Para generar resultados visibles S E# {printe.val} Para recopilar información tabla de símbolos, tipos,... Permitiremos efectos de borde controlados Efectos incidentales que no condicionan el orden de evaluación si no estuvieran los efectos, la evaluación seguiría siendo igual. Organizar el orden de evaluación de manera que cualquier otro orden de evaluación produzca el mismo resultado El orden preferido agrega aristas implícitas. El orden preferido agrega producciones inocuas. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 34 / 41

Esquemas de Traducción Controlar los Efectos de Borde Los efectos de borde son necesarios en la práctica Para generar resultados visibles S E# {printe.val} Para recopilar información tabla de símbolos, tipos,... Permitiremos efectos de borde controlados Efectos incidentales que no condicionan el orden de evaluación si no estuvieran los efectos, la evaluación seguiría siendo igual. Organizar el orden de evaluación de manera que cualquier otro orden de evaluación produzca el mismo resultado El orden preferido agrega aristas implícitas. El orden preferido agrega producciones inocuas. Acciones con efectos de borde consideradas como generadoras de un atributo sintetizado que no nos importa propagar. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 34 / 41

Esquemas de Traducción Mutar o no mutar, esa es la cuestión Gramática de Atributos como modelo matemático. Construir el sistema de ecuaciones. Encontrar y usar un orden de evaluación válido. Esquemas de Traducción como implantación concreta. Imponer un orden de evaluación a priori izquierda a derecha. Imponer un orden de dependencia a priori S-Atribuido o L-Atribuido. Permitir operaciones arbitrarias en las acciones semánticas, explotando sus efectos de borde. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 35 / 41

Esquemas de Traducción Gramática de Atributos Definición L-Atribuida D T L T int T float L L 1, id L id {L.in T.type} {T.type integer } {T.type float } {L 1.in L.in; addtype(id.lexema, L.in} {addtype(id.lexema, L.in)} Declaraciones al estilo C. Se sintetiza type en T se hereda hacia L. Cada identificador de la lista se instala con su tipo. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 36 / 41

Esquemas de Traducción Esquema de Traducción Definición L-Atribuida D T {L.in T.type} L T int {T.type integer } T float {T.type float } L {L 1.in L.in} L 1, id {addtype(id.lexema, L.in} L id {addtype(id.lexema, L.in)} Acciones en posiciones convenientes según sus efectos de borde. Posiciones seleccionadas pensando en el reconocedor descendente. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 37 / 41

Esquemas de Traducción Gramática de Atributos es el Esquema Definición S-Atribuida D T L T int T float L L 1, id L id { s L.set hacer addtype(s, T.type)} {T.type integer } {T.type float } {L.set L 1.set id.lexema} {L.set {id.lexema}} Declaraciones al estilo C. Se sintetiza type en T se sintetiza el conjunto de símbolos set en L. Una vez construido el conjunto, se instalan los identificadores. Posiciones seleccionadas pensando en el reconocedor descendente. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 38 / 41

Esquemas de Traducción Un ejemplo de reescritura gramatical La SDD obvia resulta inconveniente D L : T T int T float L L 1, id L id {L.in T.type} {T.type integer } {T.type float } {L 1.in L.in; addtype(id.lexema, L.in} {addtype(id.lexema, L.in)} Declaraciones al estilo Pascal. Se sintetiza type en T se hereda hacia L en in. No es S-Atribuida ni L-Atribuida Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 39 / 41

Esquemas de Traducción Un ejemplo de reescritura gramatical La SDD transformada también D id L T int T float L, id L 1 L :T {addtype(id.lexema, L.type)} {T.type integer } {T.type float } {L.type L 1.type; addtype(id.lexema, L 1.type)} {L.type T.type} Ahora es S-Atribuida...... y horrible. Recursiva por derecha inconveniente para LR. Es preferible complicar los atributos y su manejo en lugar de complicar la gramática. Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 40 / 41

Referencias Bibliográficas Bibliografía [Aho] Secciones 5.1 y 5.2 Ejercicios 5.1.1 a 5.1.3, 5.2.1 a 5.2.6 [Scott] Secciones 4.1 a 4.3 Ejercicios 4.1 a 4.5 Hernández-Novich (USB) Traducción Dirigida por Sintaxis 2016 41 / 41