Tema 5: Traducción dirigida por la sintaxis
|
|
- Andrea Castilla Sáez
- hace 7 años
- Vistas:
Transcripción
1 Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 1 / 35 Ejemplo 1 de traducción E E + T E T T T * F T F F id F num F pari E pard a+4*b suma(a,mul(4,b)) E a T a F a id a E suma(a,mul(4,b)) + T 4 F 4 num 4 T mul(4,b) * F b id b Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 2 / 35
2 Ejemplo 1 de traducción (2) GRAMÁTICA DE ATRIBUTOS REGLA ACCIÓN SEMÁNTICA E E + T E.trad := suma( E 1.trad, T.trad ) E T E.trad := T.trad T T * F T.trad := mul( T 1.trad, F.trad ) T F T.trad := F.trad F id F.trad := id.lexema F num F.trad := num.lexema F pari E pard F.trad := E.trad IMPORTANTE: no es posible acceder a atributos de símbolos que no estén en la regla Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 3 / 35 Ejemplo 2 de traducción D T id L T float T int L coma id L L ɛ int a,b a,b:integer T integer int D a,b:integer id a L,b coma id b L ɛ Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 4 / 35
3 Ejemplo 2 de traducción (2) REGLA GRAMÁTICA DE ATRIBUTOS ACCIÓN SEMÁNTICA D T id L D.trad := id.lexema L.trad : T.trad T float T.trad := real T int T.trad := integer L coma id L L.trad :=, id.lexema L 1.trad L ɛ L.trad := Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 5 / 35 Implementación del traductor Existen dos posibilidades: 1 El analizador sintáctico construye el árbol (decorado con los atributos de los terminales), y en una segunda pasada se recorre el árbol calculando los atributos que falten hasta completar la traducción (traducción de dos o más pasadas) 2 El analizador sintáctico no construye explícitamente el árbol (aunque hace un recorrido virtual por el árbol), y va calculando todos los atributos a la vez que va recorriendo el árbol (traducción de una sola pasada) Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 6 / 35
4 Recorrido virtual del árbol realizado por el A.S. E 13 E E + T E T T T * F T F F id F num F pari E pard E 4 T 3 F 2 id T 12 T 8 F 7 num 6 * 9 F 11 id 10 Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 7 / 35 Ejemplo 3 de traducción D T id L T float T int L coma id L L ɛ T integer D a:integer;b:integer id a L integer ;b:integer int int a,b a:integer;b:integer coma id b L integer ɛ Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 8 / 35
5 Ejemplo 3 de traducción (2) REGLA GRAMÁTICA DE ATRIBUTOS ACCIÓN SEMÁNTICA D T id L L.th := T.trad; D.trad := id.lexema : T.trad L.trad T float T.trad := real T int T.trad := integer L coma id L L 1.th := L.th; L.trad := ; id.lexema : L.th L 1.trad L ɛ L.trad := Algunos no terminales tienen más de un atributo Algunos atributos se calculan a partir de atributos de hermanos o padres en el árbol. Estos atributos se llaman atributos heredados (los demás atributos se llaman sintetizados). Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 9 / 35 Grafo de dependencias D a:integer;b:integer T integer int id a L integer ;b:integer coma id b L integer ɛ Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 10 / 35
6 Ejemplo 4 de traducción D L T T real T integer L L coma id L id L int int a;int b D int a;int b T int integer a,b integer int a;int b L int int a id a coma id b IMPORTANTE: hay herencia de derecha a izquierda en el árbol Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 11 / 35 Ejemplo 4 de traducción (2) REGLA GRAMÁTICA DE ATRIBUTOS ACCIÓN SEMÁNTICA D L T L.th := T.trad; D.trad := L.trad T real T.trad := double T integer T.trad := int L L coma id L 1.th := L.th; L.trad := L 1.trad ; L.th id.lexema L id L.trad := L.th id.lexema La herencia de derecha (T ) a izquierda (L) implica que cuando se está analizando/traduciendo L todavía no se conoce la traducción de T Por tanto, no es posible traducir a la vez que se analiza, no es posible la traducción en una pasada. El analizador tiene que construir explícitamente el árbol, y cuando termine, en una segunda pasada, podrá generar la traducción. Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 12 / 35
7 Gramática de atributos por la izquierda DEFINICIÓN: una gramática de atributos se dice que es una gramática de atributos por la izquierda (l-attributed grammar) si solamente hay herencia de padres a hijos o bien de izquierda a derecha en el árbol, pero no de derecha a izquierda Las gramáticas de atributos por la izquierda (GAI) son aquellas que permiten evaluar los atributos a la vez que se hace el análisis sintáctico (en una sola pasada). Cuando la gramática de atributos no cumple las condiciones de las GAI (porque tiene herencia de derecha a izquierda en el árbol), el analizador sintáctico debe construir un árbol decorado con atributos y, en una segunda pasada se evaluarán los atributos que no se hayan podido evaluar en la primera pasada. Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 13 / 35 Tabla de símbolos La tabla de símbolos se utiliza para almacenar los símbolos (identificadores) declarados en el programa fuente, junto con su tipo y posiblemente alguna información más (dirección de memoria, etc). Ejemplo: int a,b; float c,d; NOMBRE TIPO DIRECCIÓN a ENTERO 0 b ENTERO 2 c REAL 4 d REAL 8 Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 14 / 35
8 Tabla de símbolos (2) Cuando el compilador procesa las declaraciones, tiene que añadir las variables declaradas a la tabla de símbolos (comprobando que no se declara dos veces el mismo identificador en el mismo ámbito). En el código (instrucciones, expresiones, etc), cuando aparece un identificador el compilador debe buscarlo en la tabla de símbolos, y obtener sus datos: tipo, dirección, etc. Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 15 / 35 Ejemplo 5 de traducción En este ejemplo, el traductor no genera traducción, pero debe almacenar los símbolos en la tabla de símbolos: int a,b,c NOMBRE TIPO DIRECCIÓN a ENTERO 0 b ENTERO 2 c ENTERO 4 REGLA DEFINICIÓN DIRIGIDA POR LA SINTAXIS ACCIÓN SEMÁNTICA D T id L L.th := T.tipo; anadirts(id.lexema, T.tipo) T float T.tipo := REAL T int T.tipo := ENTERO L coma id L L 1.th := L.th; anadirts(id.lexema, L.th) L ɛ Cuando una gramática de atributos tiene acciones que no calculan atributos, se denomina Definición dirigida por la sintaxis (DDS) Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 16 / 35
9 Definiciones dirigidas por la sintaxis (DDS) Las DDS son como las gramáticas de atributos, pero pueden incluir acciones que no calculen atributos, con efectos secundarios (como guardar símbolos en la tabla de símbolos), por lo que todas las gramáticas de atributos son también DDS De igual manera que existen las gramáticas de atributos por la izquierda (GAI), existen también las definiciones dirigidas por la sintaxis con atributos por la izquierda (DDSI), que son las que permiten la traducción en una sola pasada. IMPORTANTE: las DDS solamente especifican las acciones que es necesario realizar en cada regla, pero no el orden en el que hay que ejecutarlas. Las DDS son una herramienta para el diseño de alto nivel del traductor, sin entrar en los detalles de implementación. El orden de ejecución de las acciones es muy importante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 17 / 35 Restricciones formales de las acciones semánticas Dada una regla A α, y una acción semántica b := f (c 1, c 2,..., c n ), en una gramática de atributos o en una DDS (o en un ETDS), se tiene que cumplir una de las dos siguientes restricciones: 1 b es un atributo sintetizado de A, y c 1, c 2,..., c n son constantes o atributos de los símbolos de la producción (de A o de α) 2 b es un atributo heredado de algún no terminal de α, y c 1, c 2,..., c n son constantes o atributos de los símbolos de la producción (de A o de α) Si b es un atributo heredado de un no terminal α i, y se cumple que c 1, c 2,..., c n son atributos de A o de otros símbolos α j, con j < i, entonces la gramática de atributos o DDS cumple la condición para ser una GAI o DDSI (si se cumple también en las demás acciones semánticas, por supuesto). Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 18 / 35
10 Ejemplo 5 de traducción (2) int a,b,c NOMBRE TIPO DIRECCIÓN a ENTERO 0 b ENTERO 2 c ENTERO 4 ESQUEMA DE TRADUCCIÓN DIRIGIDO POR LA SINTAXIS (ETDS) D T id {anadirts(id.lexema, T.tipo); L.th := T.tipo}L T float {T.tipo := REAL} T int {T.tipo := ENTERO} L coma id {anadirts(id.lexema, L.th); L 1.th := L.th}L L ɛ Un esquema de traducción dirigido por la sintaxis (ETDS) es como una DDSI en la que las acciones semánticas se insertan en la parte derecha de la regla, en el momento exacto del análisis en el que se tienen que ejecutar. Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 19 / 35 Esquema de traducción dirigido por la sintaxis (ETDS) Los ETDS son la herramienta para diseñar traductores de una sola pasada Las acciones semánticas se situan (encerradas entre llaves) en el punto de la parte derecha de la regla en que se deben ejecutar. Se tienen que cumplir las siguientes restricciones: 1 Un atributo heredado de un símbolo α i de la parte derecha de la regla se debe calcular en una acción semántica situada antes de α i 2 Una acción semántica no puede referirse a un atributo sintetizado de un símbolo situado a la derecha de la acción en la regla 3 Un atributo sintetizado de la parte izquierda de la regla A solo se puede calcular después de haber calculado todos los atributos que se usan para calcularlo (preferentemente al final de la regla). Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 20 / 35
11 Ejemplo 3 de traducción, con ETDS REGLA GRAMÁTICA DE ATRIBUTOS ACCIÓN SEMÁNTICA D T id L L.th := T.trad; D.trad := id.lexema : T.trad L.trad T float T.trad := real T int T.trad := integer L coma id L L 1.th := L.th; L.trad := ; id.lexema : L.th L 1.trad L ɛ L.trad := ESQUEMA DE TRADUCCIÓN DIRIGIDO POR LA SINTAXIS D T id {L.th := T.trad}L {D.trad := id.lexema : T.trad L.trad} T float {T.trad := real } T int {T.trad := integer } L coma id {L 1.th := L.th}L {L.trad := ; id.lexema : L.th L 1.trad} L ɛ {L.trad := } Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 21 / 35 Implementación de ETDS 1 Con un analizador ascendente: hay que utilizar marcadores para implementar las acciones en mitad de la parte derecha (ver libro de A. Garrido et al., pp. 130 y siguientes), incluso con yacc. 2 Con un analizador descendente recursivo: Los atributos sintetizados deben ser devueltos por las funciones de los no terminales (cuando hay más de un atributo es mejor devolver un struct o un objeto con todos los atributos de los no terminales) Los atributos heredados son parámetros que se les pasan a las funciones de los no terminales IMPORTANTE: es necesario almacenar el lexema de los tokens antes de llamar a la función empareja. La traducción de la cadena de entrada es devuelta por la función que analiza el símbolo inicial de la gramática. Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 22 / 35
12 Implementación de ETDS (2) Ejemplo 3 de traducción, implementado con un ASDR: String D() // D -> T id L { String ttrad,idlexema,ltrad; } ttrad = T(); idlexema = lexema; empareja(id); ltrad = L(ttrad); // L.th := T.trad return idlexema + ":" + ttrad + ltrad; String L(String th) // L -> coma id L epsilon { if (token == COMA) { String idlexema,ltrad; } emparejar(coma); idlexema = lexema; emparejar(id); ltrad = L(th); // L1.th := L.th return ";" + idlexema + ":" + th + ltrad; } else if (token == FINFICHERO) return ""; // L -> epsilon { L.trad := "" } else errorsintactico(...); Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 23 / 35 Traducción de expresiones aritméticas con ETDS a+b-c+d a+b-c sum(res(sum(a,b),c),d) res(sum(a,b),c) La asociatividad por la izquierda de los operadores + y - implica utilizar una gramática con recursividad por la izquierda: E E op T E T T id T ( E ) Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 24 / 35
13 Traducción de expresiones aritméticas con ETDS (2) E res(sum(a,b),c) E E op T E T T id T ( E ) E a E sum(a,b) op + T b op - T c id c a+b-c res(sum(a,b),c) T a id a id b Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 25 / 35 Traducción de expresiones aritméticas con ETDS (3) El ETDS quedaría de esta manera: E E op T {E.trad := op.trad ( E 1.trad, T.trad ) } E T {E.trad := T.trad} T id {T.trad := id.lexema} T ( E ) {T.trad := E.trad} Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 26 / 35
14 Traducción de expresiones aritméticas con ETDS (4) Si queremos realizar la misma traducción con una gramática sin recursividad por la izquierda (porque por ejemplo queremos usar un ASDR), la gramática sería: E T E E op T E E ɛ T id T ( E ) Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 27 / 35 Traducción de expresiones aritméticas con ETDS (5) E res(sum(a,b),c) T a E a res(sum(a,b),c) id a E T E E op T E E ɛ T id T ( E ) op + T b id b E sum(a,b) res(sum(a,b),c) a+b-c res(sum(a,b),c) op - T c E res(sum(a,b),c) res(sum(a,b),c) id c ɛ Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 28 / 35
15 Traducción de expresiones aritméticas con ETDS (6) El ETDS quedaría: E T {E.th := T.trad}E {E.trad := E.trad} E op T {E 1.th := op.trad ( E.th, T.trad ) } E {E.trad := E 1.trad} E ɛ {E.trad := E.th} T id {T.trad := id.lexema} T ( E ) {T.trad := E.trad} Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 29 / 35 Ejercicio 1 (examen febrero 1998) (1 de 2) Diseña un ETDS para traducir declaraciones de funciones en C a Pascal. El proceso de traducción se puede especificar con los siguientes ejemplos de traducción: int f(void), g(float a,int *b); function f:integer; function g(a:real;var b:integer):integer; void h(int a,float *c), procedure h(a:integer;var c:real); j(void); procedure j; float f(int a); int f(int a,int b,int c), g(int d), h(int e); function f(a:integer):real; function f(a:integer;b:integer;c:integer):integer; function g(d:integer):integer; function h(e:integer):integer; Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 30 / 35
16 Ejercicio 1 (examen febrero 1998) (2 de 2) Debes diseñar el ETDS utilizando como base la siguiente gramática, que genera el lenguaje fuente: S TipoFun L puntoycoma TipoFun void TipoFun int TipoFun float L F Lp Lp coma F Lp Lp ɛ F ident lpar A rpar A void A Argu M M coma Argu M M ɛ Argu Tipo ident Argu Tipo asterisco ident Tipo int Tipo float Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 31 / 35 Ejercicio 2 (examen marzo 1997) (1 de 2) Diseña un ETDS para traducir declaraciones de funciones y procedimientos anidados en Pascal a C. El proceso de traducción se puede especificar con los siguientes ejemplos de traducción: function f:integer; codigo endfunc; procedure p1; procedure p2; codigo endproc; codigo endproc; int f(); void p1(); void p1_p2(); procedure p1; procedure p2; codigo endproc; function f1:real; codigo endfunc; procedure p3; procedure p4; codigo endproc; codigo endproc; codigo endproc; void p1(); void p1_p2(); float p1_f1(); void p1_p3(); void p1_p3_p4(); Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 32 / 35
17 Ejercicio 2 (examen marzo 1997) (2 de 2) Debes diseñar el ETDS utilizando como base la siguiente gramática, que genera el lenguaje fuente: S P P procedure id ; L endproc ; P function id : T ; L endfunc ; L P L L codigo T integer T real Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 33 / 35 Ejercicio 3 (1 de 2) Dada la siguiente gramática (que permite declarar clases anidadas y sus métodos para un determinado lenguaje orientado a objetos): S C C class id { B V } B public : P B ɛ V private : P V ɛ P D P P ɛ D T id ( T id L ) D C L, T id L L ɛ T int T float Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 34 / 35
18 Ejercicio 3 (2 de 2) Construye un ETDS que traduzca a una notación como la indicada en este ejemplo: class A { public: int f1(int n,float s) private: class B { private: float f2 (float r,float s,float t) class C {} } } clase A { público: A::f1 (entero x real -> entero) privado: clase A::B { privado: A::B::f2 (real x real x real -> real) clase A::B::C {} } } Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis 35 / 35
Tema 5: Traducción dirigida por la sintaxis
Tema 5: Traducción dirigida por la sintaxis Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5: Traducción dirigida por la sintaxis
Más detallesTema 5 (2 a parte): Traductores ascendentes. Algoritmo de análisis ascendente. Procesamiento de Lenguajes. E E op T E T T num
Tema 5 (2 a parte): Traductores ascendentes Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5 (2 a parte): Traductores ascendentes
Más detallesTema 5 (2 a parte): Traductores ascendentes
Tema 5 (2 a parte): Traductores ascendentes Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 5 (2 a parte): Traductores ascendentes
Más detallesTema 5. Análisis semántico
Departamento de Tecnologías de la Información Tema 5 Análisis semántico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Características del análisis semántico 5.2 Gramáticas atribuidas
Más detallesUNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 5
UNIVERIDAD NACIONA DE EDUCACIÓN A DIANCIA Escuela écnica uperior de Ingeniería Informática Procesadores de enguajes ema 5 raducción diriga por la sintaxis Javier Vélez Reyes jvelez@lsi.uned.es Objetivos
Más detallesCompiladores e Intérpretes Análisis Semántico I
1 Compiladores e Intérpretes Análisis Semántico I Sebastian Gottifredi 2017 Organización Repaso Intuición General del Análisis Semántico Gramáticas de Atributos Funcionamiento Atributos: Sintetizados-Heredados-Intrinsecos
Más detallesANÁLISIS SEMÁNTICO ETDS VS DDS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesConceptos básicos sobre gramáticas
Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos
Más detallesGramáticas de Atributos
Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Etapas de un Compilador Analizador Léxico Analizador Sintáctico (Parser)... Lexer: Genera secuencia de tokens Reporta
Más detallesCOMPILADORES. Tema 4. Análisis semántico
COMPILADORES Tema 4. Análisis semántico Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 dtorres@mixteco.utm.mx Contenido 1. Funcionalidad del
Más detallesTema 1: Introducción
Tema 1: Introducción Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 1: Introducción 1 / 28 Definición de compilador Un compilador
Más detallesUNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido.
UNIDAD V Analisis Semantico 5.1 Introduccion Analizador Semántico. Ejemplo: Verifica que el significado de las construcciones del lenguaje tengan sentido. Tareas del analizador semántico: 1) Comprobación
Más detallesPROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal
Más detallesTraducción Dirigida por Sintaxis
Traducción Dirigida por Sintaxis CI4721 Lenguajes de Programación II Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Traducción Dirigida por
Más detallesProcesamiento de Lenguajes (PL) Curso 2014/2015. Práctica 1: analizador descendente recursivo
Procesamiento de Lenguajes (PL) Curso 2014/2015 Práctica 1: analizador descendente recursivo Fecha y método de entrega La práctica debe realizarse de forma individual, como las demás prácticas de la asignatura,
Más detallesAnálisis semántico I Traducción dirigida por la sintaxis
Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis semántico I Traducción dirigida por la sintaxis Javier Vélez Reyes
Más detallesTema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 22 Fundamentos del análisis
Más detallesAnálisis Semántico y Traducción Dirigida por la Sintaxis. Programación II Margarita Álvarez
Análisis Semántico y Traducción Dirigida por la Sintaxis Programación II Margarita Álvarez Análisis Semántico Comprobación estática Comprobación de tipos: la aplicación de los operadores y operandos deben
Más detallesINTRODUCCIÓN AL PROCESO DE COMPILACIÓN
INTRODUCCIÓN AL PROCESO DE COMPILACIÓN El programa que se debe compilar es una secuencia de caracteres que termina con un centinela. CONCEPTOS BÁSICOS Un compilador es un complejo programa que lee un programa
Más detallesFunciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
Más detallesControla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion
UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto
Más detallesAnálisis semántico. Análisis semántico. Índice (I)
Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección
Más detallesTema 4: Análisis sintáctico ascendente. Análisis sintáctico ascendente: un ejemplo
Tema 4: Análisis sintáctico ascendente Procesamiento de enguajes Dept. de enguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de enguajes Tema 4: Análisis sintáctico ascendente 1 / 21
Más detallesIntroducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA
Análisis Semántico José M. Castaño Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA Compiladores Análisis Léxico Análisis Sintáctico Análisis Semántico Generación Código Intermedio Optimización
Más detallesTema 2: Análisis léxico
Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 21 Fundamentos del análisis
Más detalles18 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
2 Contenido Clasificación de métodos de análisis sintáctico Análisis descendente Análisis descendente recursivo Análisis descendente predictivo Métodos deterministas Problemas del análisis descendente
Más detallesAnálisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas
Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático v1.2 c 2005 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado
Más detallesTema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos
Tema 1.2. Un lenguaje mínimo y su procesador: Gramáticas de atributos y tabla de símbolos Profesor Federico Peinado Elaboración del material José Luis Sierra Federico Peinado Ingeniería en Informática
Más detallesPROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4
PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos
Más detallesQué es el análisis semántico?
Análisis semántico Estrella Pulido Cañabate Qué es el análisis semántico? Fase del compilador en la que se comprueba la corrección semántica del programa Conjunto de subrutinas independientes que pueden
Más detallesCapítulo 5: Traducción Dirigida por Sintaxis
Capítulo 5: Traducción Dirigida por Sintaxis Javier Carvajal Universidad de Costa Rica, Escuela de Ciencias de la Computación e Informática, San José, Costa Rica, francisco.carvajal@ecci.ucr.ac.cr and
Más detallesANÁLISIS DESCENDENTE. Compruébese que la siguiente gramática es LL(1) sin modificarla.
Procesadores de lenguaje Ejercicios del Tema 3 ANÁLISIS DESCENDENTE Ejercicio 3.1 Compruébese que la siguiente gramática es LL(1) sin modificarla. Ejercicio 3.2 A B C D B a C b B λ C c A d C e B f C g
Más detallesExamen de Procesadores de Lenguaje
Apellidos: Nombre: Dni: Examen de Procesadores de Lenguaje Junio de 2007 (2 horas y 45 minutos) Instrucciones Entrega esta hoja, rellenada con tus datos, junto a tu examen cuando lo entregues. Ten en cuenta
Más detallesCompiladores e Intérpretes Análisis Semántico IV
1 Compiladores e Intérpretes Análisis Semántico IV Sebastian Gottifredi 2018 Repaso 2 Repaso El análisis semántico es el encargado validar y entender el significado del programa Para esto el analizador
Más detallesANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesTraducción dirigida por la sintaxis
Traducción dirigida por la sintaxis 1 INDICE 1. Gramáticas con atributos 2. Evaluación de los atributos 2.1 Evaluación mediante grafos 2.2 Evaluación durante el parsing 2.2.1 Esquemas de traducción 2.2.2
Más detallesTEMA 3: ANÁLISIS SEMÁNTICO
1 TEMA 3: ANÁLISIS SEMÁNTICO OBJETIVO Dar respuesta a las siguientes preguntas: Qué es el análisis semántico de un lenguaje? Cómo se diseña y construye un analizador semántico? EL PROBLEMA DEL CÁLCULO
Más detallesLección 3: Análisis Semántico
Lección 3: Análisis Semántico 1. Expresiones y Asignación 2. Estructuras de Control 3. Procesamiento de Declaraciones 4. Procedimientos y Funciones 5. Perspectiva Lecturas: Cooper, capítulo 4 Scott, capítulo
Más detallesDefinición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3)
Definición de la sintaxis (1) Gramática independiente del contexto: tiene cuatro componentes: Un conjunto de componentes léxicos, denominados símbolos terminales. Un conjunto de no terminales. Un conjunto
Más detallesYacc/Bison. Introducción
Yacc/Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Yacc/Bison con Lex/Flex Construcción del programa objetivo casple Comunicación entre las funcionesmain(), yylex() eyyparse() Formato
Más detallesCompiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis
Compiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingeniería de la Computación Pontificia Universidad Javeriana Cali
Más detallesUNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 2.
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 2 Análisis Léxico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos del Tema
Más detallesProcesadores de lenguaje Tema 6 La tabla de símbolos
Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de
Más detallesJava. Introducción a la Programación Orientada a Objetos
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesCompiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis
Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis Prof. Gloria Inés Alvarez V. Departamento de Ciencias e Ingeniería de la Computación Pontificia Universidad Javeriana Cali
Más detallesProcesadores de lenguaje Tema 6 La tabla de símbolos
Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de
Más detallesUNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.
UNIVRSIDAD NACIONAL D DUCACIÓN A DISTANCIA scuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte I Análisis Sintáctico Javier Vélez Reyes jvelez@lsi.uned.es Objetivos
Más detallesPráctica 4 Análisis LALR para milenguaje y construcción de un traductor de milenguaje
Práctica 4 Análisis LALR para milenguaje y construcción de un traductor de milenguaje 1. Objetivos 1. Hacer una introducción práctica a la traducción dirigida por la sintaxis basada en el análisis LALR
Más detallesANÁLISIS SINTÁCTICO II GENERADOR DE ANALIZADORES SINTÁCTICOS ASCENDENTES
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesLenguajes y Compiladores Traducción Dirigida por la Sintaxis
Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Traducción Dirigida por la Sintaxis 1 Definición Código Intermedio: estructura de código que posee una complejidad comprendida entre el código
Más detallesAnálisis semántico. Análisis semántico. Índice
Análisis semántico Índice Marina de la Cruz Alfonso Ortega Notación Objetivo del análisis semántico Pasos para la construcción de un analizador semántico Análisis semántico con Bison Definición de los
Más detallesFACULTAD POLITÉCNICA DIRECCIÓN ACADÉMICA PROGRAMA DE ESTUDIO I. IDENTIFICACIÓN Carrera : Ingeniería de Sistemas CARGA HORARIA (Horas reloj) Asignatura : Compiladores Carga Horaria Semestral 64 Semestre
Más detallesProcesamiento de Lenguajes (PL) Curso 2015/2016. Práctica 5: traductor a código m2r
Procesamiento de Lenguajes (PL) Curso 2015/2016 Práctica 5: traductor a código m2r Fecha y método de entrega La práctica debe realizarse de forma individual o por parejas 1, y debe entregarse a través
Más detallesVARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
Más detallesProblemas de Procesadores de Lenguaje Juan Antonio Pérez Ortiz, japerez[en]dlsi.ua.es
Problemas de Procesadores de Lenguaje Juan Antonio Pérez Ortiz, japerez[en]dlsi.ua.es Departament de Llenguatges i Sistemes Informàtics Universitat d Alacant Junio de 2007 * Esta obra está bajo una licencia
Más detallesGENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesLenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1
Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.
Más detallesCÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO!
CÓMO DESARROLLAR Y PROBAR PROGRAMAS?, COMPRUÉBALO! AUTORÍA MARÍA CATALÁ CARBONERO TEMÁTICA PROGRAMACIÓN ETAPA CICLO MEDIO Y SUPERIOR DE INFORMÁTICA Resumen A la hora de realizar un programa en cualquier
Más detallesFLEX: A FAST LEXICAL ANALYZER GENERATOR
FLEX: A FAST LEXICAL ANALYZER GENERATOR Especificación Léxica Fichero.l flex Programa con la implementación del AFD, código fuente, yy.lex.c yy.lex.c Compilador de C milex (ejecutable) cc yylex.c o milex
Más detalles16 Análisis sintáctico I
2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura
Más detallesÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los
Más detallesGeneración de Código Intermedio
Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede
Más detallesPráctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones
Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Más detallesExamen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de er Curso de I.T. Informática de Sistemas.
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de 2001 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: PRÁCTICA Con el presente problema,
Más detallesAnálisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas
Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático c 2001 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado
Más detallesInstituto Tecnológico de Celaya
ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.
Más detallesAnalizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones
Analizador Léxico Programación II Margarita Álvarez Analizador Léxico - Funciones Función Principal Leer carácter por carácter de la entrada y elaborar como salida una secuencia de componentes léxicos
Más detallesTeoría de lenguajes Oscar BRUNO
Octubre 2014 Guía de Estudio Objetivo: facilitar el abordaje de la temática, y guiar en el proceso de comprensión. Bibliografía: Apunte Volumen 2 de Jorge Daniel Muchnk Presentación: Qué pasa cuando nos
Más detallesElementos para el estudio de los compiladores
Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 1 / 51 1 Objetivo 2 Historia 3 Traductor Tipo de Traductores Compilador Intérprete Máquina Virtual
Más detallesPRÁCTICA. Apellidos, Nombre: Calificación:
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: PRÁCTICA El lenguaje Protolen posee
Más detallesCurso de Java Introducción a la Programación II
Curso de Java Introducción a la Programación II Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Tipos Java 2 Decalaración de variables 3 Operadores aritméticos Índice
Más detallesBison. Introducción. Índice. Introducción Uso de Bison con Flex. Formato del fichero de especificación de Bison
Bison Índice Marina de la Cruz Alfonso Ortega Introducción Uso de Bison con Flex Construcción del programa objetivo alfa Comunicación entre las funciones main(), yylex() e yyparse() Formato del fichero
Más detallesObjetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:
09:19 1 2 Temas Funciones del Analizador Léxico Manejo de buffers de entrada Especificación y reconocimiento de tokens Generación automática de Analizadores Léxicos Objetivos Que el estudiante logre conocer,
Más detallesCompiladores: Introducción
Compiladores: Introducción Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. (galvarez@puj.edu.co) Basado en [Aho, 2007, chp. 1] Qué es un COMPILADOR?
Más detalles18. Interfaces Declaración de una interfaz
Programación orientada a objetos con Java 191 18. Interfaces Objetivos: a) Definir el concepto de interfaz b) Interpretar el código fuente de una aplicación Java donde aparecen interfaces c) Construir
Más detallesINTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Más detallesTema: Análisis Semántico
Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador
Más detallesNOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST-REQUISITO:
UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ESCUELA: Ciencias y Sistemas ÁREA
Más detallesProcesadores de lenguaje Tema 4 Análisis semántico
Procesadores de lenguaje Tema 4 Análisis semántico Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Gramáticas de atributos. Gramáticas S-atribuidas. Gramáticas L-atribuidas.
Más detallesLenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores
Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 2) 2007 1 Derivaciones El proceso de búsqueda de un árbol sintáctico para una cadena se llama análisis sintáctico. El lenguaje generado
Más detallesTEÓRICO ID ; = [ ], $
N Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Septiembre de 2007 er 3 Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: TEÓRICO 1.- Dibujar un único
Más detallesDiseño de Compiladores I. Estructura General de un Compilador
Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce
Más detallesANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesGENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Más detallesUNIVERSIDAD DE GUADALAJARA
UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE LOS ALTOS DIVISIÓN DE ESTUDIOS EN FORMACIONES SOCIALES LICENCIATURA: INGENIERÍA EN COMPUTACIÓN UNIDAD DE APRENDIZAJE POR OBJETIVOS COMPILADORES MTRA.
Más detallesProcesadores de lenguaje Tema 4 Análisis semántico
Procesadores de lenguaje Tema 4 Análisis semántico Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Introducción Gramáticas de atributos. Gramáticas S-atribuidas. Gramáticas L-atribuidas.
Más detallesAgenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo
Agenda Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Analizador sintáctico Bottom-Up 1-1 1-2 Introducción Los sistemas de implementación
Más detallesNOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2
UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA EN CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CODIGO: 781 CREDITOS: 5 AREA A LA
Más detallesPROCESADORES DEL LENGUAJES Ev. Alternativa
PROCESADORES DEL LENGUAJES Ev. Alternativa 2016-17 NOMBRE: GRUPO: EL LENGUAJE LVECT LVECT es un lenguaje de programación secuencial. El programa LVECT consta de declaraciones de variables y secuencia de
Más detallesApunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
Más detallesTema: Análisis Sintáctico
Compiladores. Guía 6 1 Tema: Análisis Sintáctico Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis
Más detalles