Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.

Slides:



Advertisements
Presentaciones similares
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
Advertisements

Ejemplo Práctico de un Compilador Pequeño
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Filminas Segunda semana
Clasificación de los compiladores
Compiladores e intérpretes
Procesadores de Lenguaje
Traducción dirigida por la Sintaxis
Teoría de lenguajes y compiladores
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
M.C. Meliza Contreras González
ANALISIS SINTACTICO Parte I
Inteligencia artificial
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Programación de Sistemas
Programación de Sistemas FEI – 2008
Unidad 1. Introducción a los Compiladores.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
Teoría de lenguajes y compiladores
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
Las tres primeras fases de un compilador suelen agrupan en un sola fase llamada Análisis del programa a compilar y las tres ultimas en una sola fase llamada.
Unidad 1: Conceptos fundamentales Instituto Tecnológico de Toluca Ing. Sistemas Computacionales Asignatura: Programación Lógica y Funcional Presentan Nieto.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Ingreso , proceso y salida de datos
“Análisis y Descripción de Lenguajes de Programación”
Programación Orientada a Objetos
TAD’s ARBOLES GENERALIZADOS
Básicos de Autómatas.
PSEUDOCÓDIGO Prof. Rafael Mourglia.
AUTOMATAS Y LENGUAJES FORMALES FASE 1
Tema 6. Conceptos básicos de programación (Clase 2)
CREAR DIAGRAMA DE FLUJO
Ingeniería de Software Somerville
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Cada maquina tiene un lenguaje ensamblador distinto
LÓGICA DE PROGRAMACIÓN
EXPRESIONES Una expresión es una forma especial de asignación.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Universidad Nacional de Loja
Algoritmo Capitulo Cinco.
CONCEPTOS PRELIMINARES (Cont)
Una tienda especializada en componentes electrónicos, compra sus existencias a una serie de proveedores, vendiéndolas posteriormente a sus clientes; a.
HERRAMIENTAS DE PROGRAMACIÓN
Compiladores Introducción al Análisis Sintáctico Gramáticas de Contexto Libre, Arboles de Parseo y Derivaciones.
U NIVERSIDAD S AN P EDRO F ILIAL B ARRANCA F ACULTAD DE I NGENIERÍA E SCUELA P ROFESIONAL DE I NG. I NFORMÁTICA Y DE S ISTEMAS C URSO : ALGORITMOS Tema.
Programación Orientada a Objetos. ¿Qué es un ordenador? “Un sistema digital con tecnología microelectrónica capaz de procesar información a partir de.
Programación lógica y funcional Unidad I Conceptos fundamentales.
Criterios Evaluación Portafolio de evidencias 5 Mapa conceptual 10 Practicas 30 Examen teórico 20 Analizador Sem. 35.
 La minería de datos o exploración de datos (es la etapa de análisis de "Knowledge Discovery in Databases" o KDD) es un campo de la estadística y las.
FUDAMENTOS BÀSICOS computación
Funciones del Analizador Sintáctico
Procesamiento de señales Introducción a Matlab 2014
Fundamentos de la Programación I
Instituto Tecnológico de Minatitlán
M. en TI. Omar Téllez Barrientos DOCENTE DE INFORMÁTICA GENERACIÓN DE PSEUDOCÓDIGOS Y ALGORITMOS
Compiladores Introducción al Análisis Sintáctico Gramáticas de Contexto Libre, Arboles de Parseo y Derivaciones.
ÁRBOLES DE EXPRESION. Un árbol de expresión sirve para evaluar expresiones del tipo: (a+b)*c/d Para que un árbol represente una expresión se deben tomar.
Informática Ingeniería en Electrónica y Automática Industrial
Tema 6. Conceptos básicos de programación (Clase 2)
CONTROLES Y ESTRUCTURAS BÁSICAS DE PROGRAMACIÓN  1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.  2. Datos:
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
UNIDAD 1 Análisis semántico 1.1 ARBOLES DE EXPRESIONES.
INTRODUCCIÓN A UML.  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Espacio de estados: un problema se divide en un conjunto de pasos de resolución desde el inicio hasta el objetivo. Los estados y su relación de accesibilidad.
COMPILADORES Semana 1 Ing. Jorge Vigil Farfán MgTI, PMP, ITIL-Expert, Cloud, ISO 27002, CCNP, CCNA, CCNA Sec, NSE.
Transcripción de la presentación:

Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007

TRADUCCIÓN DIRIGIDA POR LA SINTAXIS Para traducir una construcción de un lenguaje de programación un compilador necesita el código generado para la construcción, y además: Tipo de la construcción Posición de la primera instrucción del código objeto Número de instrucciones generadas... Los atributos se mencionan de forma abstracta. Un atributo puede representar cualquier cantidad un tipo, una cadena, una posición de memoria o cualquier otra cosa)

TRADUCCIÓN DIRIGIDA POR LA SINTAXIS Una definición dirigida por la sintaxis es una generalización de una gramática independiente de contexto en la que cada símbolo gramatical tiene asociado un conjunto de atributos –Especifica la traducción de una construcción en función de los atributos asociados con sus componentes sintácticos Un esquema de traducción es una gramática independiente de contexto en la que se asocian atributos con los símbolos gramaticales y se insertan acciones semánticas encerradas entre llaves dentro de los lados derechos de las reglas de producción –Es una notación orientada a procedimientos que se utiliza para especificar traducciones

DEFINICIONES DIRIGIDAS POR LA SINTAXIS Utilizan una gramática independiente de contexto para especificar la estructura sintáctica de la entrada A cada símbolo de la gramática se le asocia un conjunto de atributos A cada regla de la gramática se le asocia un conjunto de reglas semánticas para calcular los valores de los atributos asociados con los símbolos de esa regla La gramática y el conjunto de reglas semánticas constituyen la definición dirigida por la sintaxis

DEFINICIONES DIRIGIDAS POR LA SINTAXIS Una traducción es una transformación de una entrada en una salida. La salida para cada entrada W se especifica como sigue: Se construye un árbol sintáctico para W Suponiendo que un nodo n del árbol está etiquetado con el símbolo X de la gramática se escribe X.a para indicar el valor del atributo a de X en ese nodo El valor de X.a en n se calcula por la regla semántica para el atributo a asociado a la regla X utilizada en el nodo n El árbol de análisis sintáctico que muestra los valores de los atributos en cada nodo se denomina árbol de análisis sintáctico con anotaciones

ATRIBUTOS El conjunto de atributos asociado a cada símbolo gramatical se divide en dos subconjuntos –Atributos sintetizados. Se pueden calcular durante un solo recorrido ascendente del árbol de análisis sintáctico –Atributos heredados. Sirven para expresar la dependencia de una construcción en de un lenguaje en el contexto en el que aparece Si se considera un nodo de un símbolo gramatical de un árbol sintáctico como un registro para guardar información entonces un atributo se corresponde con el nombre de un campo Un atributo puede representar cualquier cosa (una cadena, un número, un tipo, una posición de memoria...)

El proceso de calcular los valores de los atributos en los nodos se denomina anotar o decorar el árbol de análisis sintáctico El valor de un atributo se define mediante la regla semántica asociada a la regla de producción utilizada en ese nodo –El valor de un atributo sintetizado se calcula a partir de los valores de los atributos de los hijos de ese nodo en el árbol de análisis sintáctico –El valor de un atributo heredado se calcula a partir de los valores de los atributos de los hermanos y el padre de ese nodo En una definición dirigida por la sintaxis, se asume que los terminales sólo tienen atributos sintetizados (la definición no proporciona ninguna regla semántica para los terminales) Los valores para los atributos de los terminales son proporcionados generalmente por el analizador léxico

REGLAS SEMÁNTICAS Las reglas semánticas establecen las dependencias entre los atributos que serán representadas mediante un grafo El grafo de dependencias proporciona el orden de evaluación de las reglas semánticas La evaluación de las reglas semánticas define los valores de los atributos de los nodos del árbol Una regla semántica puede tener también efectos colaterales (imprimir un valor, actualizar una variable global...) Una gramática con atributos es una definición dirigida por la sintaxis en la que las funciones de las reglas semánticas no pueden tener efectos colaterales

EJEMPLO Definición Dirigida por la Sintaxis de una calculadora de escritorio sencilla ProducciónReglas Semánticas L → E nprint (E.val) E → E 1 + TE.val := E 1.val + T.val E → TE.val := T.val T → T 1 * FT.val := T 1.val x F.val T → FT.val := F.val F → ( E )F.val := E.val F → digitoF.val := digito.valex

ESQUEMAS DE TRADUCCIÓN Un esquema de traducción es una gramática independiente de contexto en la que se encuentran intercalados, en los lados derechos de las reglas de producción, fragmentos de programa llamados acciones semánticas Es como una definición dirigida por la sintaxis con la diferencia de que el orden de evaluación de las reglas semánticas se muestra explícitamente Los esquemas de traducción pueden tener tanto atributos sintetizados como heredados

EJEMPLO Esquema de Traducción simple que transforma expresiones infijas con suma y resta en las posfijas correspondientes E → T R R → opsuma T { print (opsuma.lexema) } R 1 | ε T → num { print (num.val) }

Lexema: Una secuencia de caracteres de entrada que comprenden un solo componente léxico se llama lexema; cadena de caracteres que extrae el componente abstracto del componente léxico.

RESUMEN: Traducción Dirigida por la Sintaxis Se asocia información a una construcción del lenguaje proporcionando atributos a los símbolos de la gramática que representan la construcción Los valores de los atributos se calculan mediante reglas semánticas asociadas a las reglas gramaticales Hay dos notaciones para asociar las reglas semánticas con las reglas de producción: –Las definiciones dirigidas por la sintaxis Ocultan muchos detalles de la implantación No es necesario que el usuario especifique explícitamente el orden en el que tiene lugar la traducción –Los esquemas de traducción Indican el orden en el que tiene lugar la traducción Así, algunos detalles de la implantación quedan visibles

Conceptualmente, sea cual sea la notación utilizada: Se analiza sintácticamente la cadena de componentes léxicos de entrada Se construye el árbol de análisis sintáctico Se recorre el árbol para evaluar las reglas semánticas en sus nodos –La evaluación de las reglas semánticas puede generar código, guardar información en un atable de símbolos, emitir mensajes de error o realizar otras actividades La traducción de la cadena de componentes léxicos es el resultado obtenido al evaluar las reglas semánticas cadena de entrada árbol de análisis sintáctico grafo de dependencias orden de evaluación de las reglas semánticas