Compiladores: Parsing ascendente
|
|
- Valentín Figueroa Pinto
- hace 7 años
- Vistas:
Transcripción
1 Compiladores: Parsing ascendente Francisco J Ballesteros LSUB, URJC Page 1 of 64
2 Parsing ascendente Normalmente utilizaremos parsers descendentes para problemas pequeños cuando podemos escribir uno predictivo fácilmente En otro caso se suelen utilizar parsers ascendentes trabajan desde las hojas a la raíz del árbol sintáctico intentan reducir los terminales al símbolo inicial de la gramática Page 2 of 64
3 Parsing ascendente Por ejemplo, para esta gramática EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 3 of 64
4 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 4 of 64
5 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 5 of 64
6 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 6 of 64
7 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 7 of 64
8 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 8 of 64
9 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 9 of 64
10 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 10 of 64
11 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 11 of 64
12 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 12 of 64
13 Parsing ascendente EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num Page 13 of 64
14 Parsing ascendente Page 14 of 64
15 Parsing ascendente Se intenta todo el tiempo reducir la entrada Mirando qué producciones podemos aplicar Y si hay que mirar más terminales de la entrada o hay que aplicar una producción y reducir Page 15 of 64
16 Parsing ascendente Esto es, dada EXPR ::= EXPR + TERM TERM TERM ::= TERM * FACT FACT FACT ::= ( EXPR ) num derivamos del final al principio... ->EXPR ->TERM ->TERM * FACT ->TERM * 8 ->FACT * 8 ->( EXPR ) * 8 ->( EXPR + TERM ) * 8 ->( EXPR + FACT ) * 8 ->( EXPR + 5 ) * 8 ->( TERM + 5 ) * 8 ->( FACT + 5 ) * 8 ->( ) * 8 Page 16 of 64
17 Parsing ascendente El parsing ascendente construye una derivación right-most a la inversa (del final al principio) ->( ) * 8 ->( FACT + 5 ) * 8 ->( TERM + 5 ) * 8 ->( EXPR + 5 ) * 8 ->( EXPR + FACT ) * 8 ->( EXPR + TERM ) * 8 ->( EXPR ) * 8 ->FACT * 8 ->TERM * 8 ->TERM * FACT ->TERM ->EXPR Page 17 of 64
18 Gramáticas para parsing ascendente Naturalmente, que no sean ambiguas salvo por ambigüedades resolubles por precedencia de operadores Tampoco recursivas por la derecha igual que bottom-up no tolera las recursivas por la izquierda puesto que crearíamos infinitas reducciones Page 18 of 64
19 Handle Un handle es un substring (de terminales y no terminales) que encaja con el cuerpo de una producción que si reducimos permite llegar al símbolo inicial Page 19 of 64
20 Handle: ejemplos en ->( ) * 8 tenemos el handle 3 por la producción FACT ::= num para dar... ->( FACT + 5 ) * 8 Page 20 of 64
21 Handle: ejemplos en ->( EXPR + TERM ) * 8 tenemos el handle EXPR + TERM por la producción EXPR ::= EXPR + TERM y al reducir ->( EXPR ) * 8 Page 21 of 64
22 Handle: ejemplos en ->( EXPR ) * 8 tenemos el handle ( EXPR ) por la producción FACT ::= ( EXPR ) y al reducir ->FACT * 8 Page 22 of 64
23 Parsing ascendente El proceso de parsing ascendente: Se parte de la cadena (de tokens) a la entrada Se localiza un handle Se reduce Se localiza otro Se reduce... Page 23 of 64
24 Parsing ascendente con shift y reduce El proceso de parsing ascendente: mantiene una pila de símbolos (terminales y no terminales) si no tenemos un handle: metemos más terminales en la pila si tenemos un handle en la cima de la pila, lo reducimos Tenemos dos operaciones: shift: meter terminales en la pila reduce: cambiar N simbolos de la cima (handle) por parte izqda. Page 24 of 64
25 Ejemplo de parsing ascendente Repitamos otra vez: Pila: $ Entrada:. ( ) * 8 donde... $ marca el fondo de la pila: pila vacía. marca por dónde vamos en la entrada Page 25 of 64
26 Ejemplo de parsing ascendente $. ( ) * 8 Page 26 of 64
27 Ejemplo de parsing ascendente $. ( ) * 8 shift $ ( ( ) * 8 Page 27 of 64
28 Ejemplo de parsing ascendente $ ( ( ) * 8 Page 28 of 64
29 Ejemplo de parsing ascendente $ ( ( ) * 8 shift $ ( 3 ( ) * 8 Page 29 of 64
30 Ejemplo de parsing ascendente $ ( 3 ( ) * 8 Page 30 of 64
31 Ejemplo de parsing ascendente $ ( 3 ( ) * 8 reduce $ ( FACT ( ) * 8 con handle 3 FACT ::= num Page 31 of 64
32 Ejemplo de parsing ascendente $ ( FACT ( ) * 8 Page 32 of 64
33 Ejemplo de parsing ascendente $ ( FACT ( ) * 8 reduce $ ( TERM ( ) * 8 con handle FACT TERM ::= FACT Page 33 of 64
34 Ejemplo de parsing ascendente $ ( TERM ( ) * 8 Page 34 of 64
35 Ejemplo de parsing ascendente $ ( TERM ( ) * 8 reduce $ ( EXPR + ( ) * 8 con handle TERM EXPR ::= TERM Page 35 of 64
36 Ejemplo de parsing ascendente $ ( EXPR ( ) * 8 Page 36 of 64
37 Ejemplo de parsing ascendente $ ( EXPR ( ) * 8 shift $ ( EXPR + ( ) * 8 Page 37 of 64
38 Ejemplo de parsing ascendente $ ( EXPR + ( ) * 8 Page 38 of 64
39 Ejemplo de parsing ascendente $ ( EXPR + ( ) * 8 shift $ ( EXPR + 5 ( ) * 8 Page 39 of 64
40 Ejemplo de parsing ascendente En conclusión: stack. input and then... $. ( ) * 8 shift $ ( ) * 8 shift $ ( ) * 8 reduce $ ( FACT. + 5 ) * 8 reduce $ ( TERM. + 5 ) * 8 reduce $ ( EXPR. + 5 ) * 8 shift $ ( EXPR +. 5 ) * 8 shift $ ( EXPR + 5. ) * 8 reduce $ ( EXPR + FACT. ) * 8 reduce $ ( EXPR + TERM. ) * 8 reduce $ ( EXPR. ) * 8 shift $ ( EXPR ). * 8 reduce $ FACT. * 8 reduce $ TERM. * 8 shift $ TERM *. 8 shift $ TERM * 8. reduce $ TERM * FACT. reduce $ TERM. reduce $ EXPR. Page 40 of 64
41 Conflictos Si hay varias reducciones de handles posibles tenemos un conflicto reduce/reduce Si no se sabe si mirar más símbolos o reducir tememos un conflicto shift/reduce Page 41 of 64
42 Handles A cada string como ( FACT. + 5 ) * 8 la llamamos forma sentencial. A la derecha del handle sólo hay terminales... $ ( ) * 8 shift $ ( ) * 8 reduce $ ( FACT. + 5 ) * 8 reduce $ ( TERM. + 5 ) * 8 reduce... NB: por que la derivación es right-most Page 42 of 64
43 Handles El handle está siempre en la cima de la pila... $ ( ) * 8 shift $ ( ) * 8 reduce $ ( FACT. + 5 ) * 8 reduce $ ( TERM. + 5 ) * 8 reduce... Y por eso podemos utilizar una pila Page 43 of 64
44 Handles A lo mejor se pueden aplicar varias producciones pero un handle sólo lo es si nos deja derivar hasta el símbolo de inicio El parsing bottom-up radica en identificar handles no hay algoritmo capaz de hacerlo en general para ciertas gramáticas, ciertas heurísticas funcionan Esas gramáticas son las que debemos utilizar ( SLR, LALR ) Page 44 of 64
45 Identificación de Handles Mantenemos en la cima de la pila un prefijo de un handle Hasta que tenemos el handle (y lo reducimos) El conjunto de prefijos es un lenguaje regular Un AFND puede reconocer los handles Page 45 of 64
46 Parsers bottom-up, autómatas e Items Escribimos la gramática Utilizamos herramientas para construir el AFND que reconoce los handles El código que ejecuta el autómata es el parser Page 46 of 64
47 Parsers bottom-up, autómatas e Items El autómata intenta reducir los handles En un instante, tiene múltiples estados activos (es ND) Cada estado es un punto en un proceso de reducir un handle Page 47 of 64
48 Parsers bottom-up, autómatas e Items Por ejemplo, para FACT ::= ( EXPR ) el autómata intenta avanzar según FACT ::=. ( EXPR ) FACT ::= (. EXPR ) FACT ::= ( EXPR. ) FACT ::= ( EXPR ). Y lo mismo para el resto de reducciones posibles A estas producciones con el. indicado las llamamos items LR(0), o items Page 48 of 64
49 Parsers bottom-up, autómatas e Items Si tenemos en la pila y entrada $... ( EXPR )... Entonces FACT ::= ( EXPR. ) indica que ( EXPR. es un prefijo del cuerpo de una producción reducible Page 49 of 64
50 Parsers bottom-up, autómatas e Items En cada estado el autómata mantiene el conjunto de items que indican que hemos visto hasta ahora para poder reducir usando una producción Page 50 of 64
51 Parsers bottom-up, autómatas e Items Herramientas como yacc toman la gramática generan un AFND para reconocer los handles lo convierten an un AFD cuyos estados son conjuntos de items Las gramáticas aceptables son aquellas no ambiguas en las que las heurísticas de selección de items funcionan esto es, en las que los items son viables para la derivación esto es, en las que lo que reducimos son handles Page 51 of 64
52 Tipos de gramáticas LR: miran la entrada left-right SLR: simple LR LALR: LR con look-ahead Dicho de otro modo... aquellas para las que las herramientas funcionan (SLR, LALR) pero no hay algoritmo para todas las gramáticas libres de contexto Page 52 of 64
53 Parsing SLR Si en la pila y entrada tenemos $... a b c x... Reducir si d ::= a b c. es un item en el estado actual y x puede seguir a d según la gramática si x pertenece a follow(d), como veremos... Page 53 of 64
54 Parsing SLR Si en la pila y entrada tenemos $... a b c x... Desplazar si d ::= a b c. x... es un item en el estado actual Page 54 of 64
55 Parsing SLR Y si con estas reglas no se puede (hay conflictos) Decimos que la gramática no es SLR! Pero normalmente incluirmos información de precedencia para resolver algunos conflictos Page 55 of 64
56 Parsing LR Y ahora un ejemplo de un trozo de un AFD para un SLR Page 56 of 64
57 Parsing LR Page 57 of 64
58 Parsing LR(1) Es como el SLR Pero utiliza un token de look ahead. Se le llama LR(1), o LALR (look-ahead LR) Los items LR(1) son: FACT ::=. num, x Que quieren decir intentando reducir con esta producción en este punto para reducir sólo si el siguiente símbolos es x Page 58 of 64
59 Parsing LALR El token de look-ahead hace que más gramáticas funcionen que identifiquen handles al reducir y no partes derechas de producciones cualesquiera Luego las LALR contienen a las SLR Page 59 of 64
60 Parsing LALR y yacc Yacc es una herramienta que genera el parser dada la gramática El parser es un programa para el autómata (librería) Mas tablas generadas por yacc para describir las transiciones (goto) para describir acciones (action) Las acciones son como no-terminales encajan con la cadena vacía se ejecutan cuando se reducen Page 60 of 64
61 First y Follow first (X) Es el conjunto de los símbolos terminales que para las producciones X ::=... ej. pueden aparecer como primer terminal a la derecha A ::= x B C C ::= y... first(a) = { x, y } Page 61 of 64
62 First y Follow follow (X) Es el conjunto de los símbolos terminales que pueden aparecer como primer terminal a la derecha de X en una forma sentencial aceptable ej. A ::= x B C y C ::= z <empty>... follow(b) = { z, y } Page 62 of 64
63 First y Follow Cuando tengamos conflictos o escribamos la gramática es útil pensar en first y follow Intuitivamente, queremos una gramática lo más rígida posible como hacíamos con parsing predictivo. Si tenemos problemas, podemos aderezar con más puntuación! ej: if condicion sentencia vs o if condicion { sentencia } if (condicion) { sentencia } Page 63 of 64
64 Questions? Francisco J Ballesteros LSUB, URJC ( Page 64 of 64
Analizadores sintácticos LR(0) y SLR
Teoría de Lenguajes Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Clase de Hoy Anteriores: Parsing descendente (LL(1), ELL) Recursivos e iterativos Generan árbol de derivación desde
Más detallesGramáticas y parsers LR(K)
Gramáticas y parsers LR(K)» Son (al igual que los LL) una familia de parsers para analizar gramáticas libres de contexto. Se caracterizan por:» Son analizados sintácticos ascendentes.» Leen entrada de
Más detallesCompiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análizador Sintáctico de abajo hacia arriba Es un proceso de Reducción,
Más detallesCompiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Parsing LR: Ejemplo: E E + T E T T T * id T id S n : shift al estado
Más detallesLR(1) - LALR. Alejandro Grinberg. 30 de Octubre de (agradecimiento a Juan Manuel Pérez) Alejandro Grinberg () LR(1) - LALR 1 / 16
LR(1) - LALR Alejandro Grinberg 30 de Octubre de 2014 (agradecimiento a Juan Manuel Pérez) Alejandro Grinberg () LR(1) - LALR 1 / 16 Repaso Parsing bottom-up Parsing shift-reduce Prefijos viables Autómata
Más detallesAnalizador Sintáctico Ascendente
Analizador Sintáctico Ascente Un Analizador Sintáctico (A. St.) Ascente construye el árbol desde las hojas hacia la raíz. Funciona por reducción-desplazamiento, lo cual quiere decir que, siempre que puede,
Más detallesTema 5. Análisis sintáctico ascendente
Tema 5 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 5.1 Introducción 5.2 Análisis sintáctico por desplazamiento y reducción 5.3 El autómata reconocedor de prefijos viables
Más detallesMás sobre gramáticas independientes de contexto o incontextuales
Más sobre gramáticas independientes de contexto o incontextuales Elvira Mayordomo, Gregorio de Miguel Universidad de Zaragoza 19 de noviembre de 2012 Contenido de este tema Árboles de derivación Gramáticas
Más detallesAnálisis sintáctico 1
Análisis sintáctico 1 Análisis sintáctico 1. Introducción 2. Análisis descendente (top-down) 2.1 Análisis con backtracking 2.2 Análisis predictivo 2.2.1 Método recursivo 2.2.2 Método iterativo 3. Análisis
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 detallesCompiladores: Análisis sintáctico descendente recursivo
Compiladores: Análisis sintáctico descendente recursivo Francisco J Ballesteros LSUB, URJC Page 1 of 61 Analizador sintáctico En adelante lo llamaremos parser Dados los tokens de la entrada Construir el
Más detallesLenguajes y Compiladores Análisis Sintáctico Parte II
Universidad Nacional San Luis Gonzaga Facultad de Ing. De Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte II 1 Análisis Ascendente El análisis ascendente es conocido como análisis por desplazamiento
Más detalles17 Análisis sintáctico II Compiladores - Profr. Edgardo Adrián Franco Martínez. Gramáticas limpias y bien formadas
2 Contenido Gramáticas limpias y bien formadas Algoritmo para detectar símbolos muertos Algoritmo para detectar símbolos inaccesibles Gramáticas ambiguas Clasificación de métodos de análisis sintáctico
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 detalles22, 23 y 24 Análisis sintáctico V Compiladores - Profr. Edgardo Adrián Franco Martínez
2 Contenido Análisis Sintáctico Ascendente Métodos Ascendentes Método Ascendente SLR Pasos para el método SLR Ejemplo SLR Resumen Ejercicios Compiladores (Análisis Sintáctico VI - Análisis Ascendente -
Más detallesANÁLISIS SINTÁCTICO I ANALIZADORES SINTÁCTICOS
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 detallesTema 3: Análisis sintáctico descendente. Cómo funciona el analizador sintáctico?
Tema 3: Análisis sintáctico descendente Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 3: Análisis sintáctico descendente
Más detallesProyecto Intermedio Algoritmo de Earley
Fundamentos de Computación Proyecto Intermedio: Algoritmo de Earley Profesor: Dr. José Torres Jiménez Alumnos: Edna Gutiérrez Gasca Aureny Magaly Uc Miam Jorge Rodríguez Núñez Proyecto Intermedio Algoritmo
Más detallesYACC (Yet Another Compiler Compiler) LALR(1) Parser Generator
YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator 1 INDICE 1. Introducción 2. Especificaciones 3. Ambigüedad y conflictos 4. Tratamiento de errores 5. Uso con el LEX 6. Algunos consejos prácticos
Más detallesProcesadores de Lenguaje
Procesadores de Lenguaje Analizadores LALR Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY NC SA 3.0 El Analizador
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 detallesProcesadores de Lenguaje
Procesadores de Lenguaje Analizadores sintác0cos descendentes: LL(1) Cris%na Tirnauca DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: Crea0ve Commons BY NC SA 3.0 Analizadores
Más detallesANÁLISIS SINTÁCTICO II SLR
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 detallesTRADUCTORES E INTERPRETADORES
TRADUCTORES E INTERPRETADORES Clase 11: Analizadores Sintácticos Descendentes Agenda Analizadores Recursivos Descendentes. Análisis Predictivo. Analizadores LL(1). Analizadores LL(k) y LL(*). Analizadores
Más detallesTema: Análisis Sintáctico LR
Compiladores. Guía 4 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico LR Contenido En esta guía se abordarán los conceptos pertenecientes al componente de
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 detallesProcesadores de Lenguaje
Procesadores de Lenguaje Analizador SLR y LR canónico Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaKve Commons BY NC SA 3.0
Más detalles4 o Ingeniería Informática
Esquema del tema 1. Introducción 2. Análisis LR(0) 3. Análisis SLR 4. Análisis LR(1) 4 o Ingeniería Informática II26 Procesadores de lenguaje Análisis ascendente 5. Uso de gramáticas ambiguas 6. Tratamiento
Más detallesCompiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Sintáctico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V. Sintaxis Define la estructura del lenguaje Ejemplo: Jerarquía en
Más detallesCompiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013
Compiladores Análisis Sintáctico Ascendente Adrian Ulises Mercado Martínez Facultad de Ingeniería, UNAM 5 de septiembre de 2013 Adrian Ulises Mercado Martínez (FI,UNAM) Compiladores 5/07/2013 1 / 34 Índice
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 detallesProcesadores de lenguaje Tema Análisis sintáctico (Parte II)
Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte II) Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Análisis sintáctico ascendente
Más detallesSintaxis y Semántica del Lenguaje. Gramáticas
Gramáticas La tarea de proveer una descripción bien concisa y entendible de un lenguaje de programación es difícil pero esencial para el éxito de un lenguaje. Uno de los problemas en describir un lenguaje
Más detallesTipos de análisis deterministas. Análisis descendente. Tipos de análisis deterministas. Análisis ascendente. Análisis descendente
César Ignacio García Osorio Área de Lenguajes y Siste mas Informáticos Universidad de Burgos Tipos de análisis deterministas. nálisis descendente. La idea es generar una forma sentencial a partir del axioma,
Más detallesDiseño de Compiladores I YACC: Yet Another Compiler-Compiler
Diseño de Compiladores I YACC: Yet Another Compiler-Compiler Introducción: Yacc provee una herramienta general para analizar estructuralmente una entrada. El usuario de Yacc prepara una especificación
Más detallesANÁLISIS SINTÁCTICO II LR1
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 detallesTemas. Objetivo. Analizador Sintáctico: funciones y tipos. Analizador Sintáctico Descendente. Analizador Sintáctico Ascendente
10:44 1 10:44 2 Temas Analizador Sintáctico: funciones y tipos Analizador Sintáctico Descendente Analizador Sintáctico Ascendente Generador de Analizadores Sintácticos - Yacc Objetivo Que el estudiante
Más detallesTema 6: Compiladores e intérpretes. Teoría de autómatas y lenguajes formales I
Tema 6: Compiladores e intérpretes Teoría de autómatas y lenguajes formales I Bibliografía Sudkamp, T. A. Languages and machines: an introduction to the theory of computer science. Addison Wesley. 1997.
Más detallesTema: Análisis Sintáctico LR
Compiladores. Guía 7 1 Tema: Análisis Sintáctico LR Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En esta guía se abordarán los conceptos pertenecientes al componente de
Más detallesCompiladores: Introducción
Compiladores: Introducción Francisco J Ballesteros LSUB, URJC Page 1 of 28 Qué es un lenguaje de programación? C, Java, Go,... Pero también ls *.c grep '^[a-z].*\.8' printf("%s %d",...) Page 2 of 28 Cómo
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 detallesCompiladores: Definiendo un lenguaje de programación
Compiladores: Definiendo un lenguaje de programación Francisco J Ballesteros LSUB, URJC Page 1 of 26 Un lenguaje Picky es un lenguaje de programación para empezar a programar Es muy pejiguero, de ahí el
Más detallesCompiladores e Intérpretes Análisis Sintáctico
1 Compiladores e Intérpretes Análisis Sintáctico Sebastian Gottifredi 2017 Organizacion Contexto Motivación Reglas de Sintaxis Construyendo Analizadores Sintácticos Ambigüedad Analizadores Sintácticos
Más detallesProcesadores de Lenguaje
Procesadores de Lenguaje Analizadores sintácticos descendentes: LL(1) Cristina Tîrnăucă Dept. Matesco, Universidad de Cantabria Fac. Ciencias Ing. Informática Primavera de 2013 Analizadores sintácticos
Más detallesUNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 4
UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes Tema 4 Análisis Sintáctico Ascendente Javier Vélez Reyes jvelez@lsi.uned.es Objetivos
Más detallesAnalista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior. Trabajo Final
Trabajo Final 1 Objetivo Comprender (en gran parte) un programa desarrollado en: C++ (Core ) Generador de código / Ejecución de comandos Flex (Lex) Lexer Genera un Analizador Léxico en C http://en.wikipedia.org/wiki/lex_(software)
Más detalles1. Acciones en Yacc. %{ #include <stdio.h> yyerror (char *s) { fprintf (stderr, %s\n, s) ; } %} %% : S \n {printf ( Correcto\n );} ; : ( S ) S
El generador de analizadores sintácticos Yacc III Teoría de autómatas y lenguajes formales Alma María Pisabarro Marrón (alma@infor.uva.es) Universidad de Valladolid 1. Acciones en Yacc Las acciones en
Más detallesProcesadores de lenguaje
Procesadores de lenguaje Tema 3 Análisis sintáctico (Parte II) Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Análisis sintáctico ascendente
Más detallesAnálisis sintáctico Analizadores ascendentes
Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Analizadores ascendentes Javier Vélez Reyes jvelez@lsi.uned.es
Más detallesCiencias de la Computación I
Ciencias de la Computación I Gramáticas Regulares Expresiones Regulares Gramáticas - Intuitivamente una gramática es un conjunto de reglas para formar correctamente las frases de un lenguaje - Por ejemplo,
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 detallesTema 1. Introducción
Departamento de Tecnologías de la Información Tema 1 Introducción Ciencias de la Computación e Inteligencia Artificial Índice 1.1 Conceptos 1.2 Un poco de historia 1.3 Estructura de un compilador 1.4 Teoría
Más detallesRepaso. Lenguajes formales
Repaso. Lenguajes formales Profesor Federico Peinado Elaboración del material José Luis Sierra Federico Peinado Ingeniería en Informática Facultad de Informática Universidad Complutense de Madrid Curso
Más detallesGeneración de analizador sintáctico ascendente Yacc (bison,... ) Generación de analizador sintáctico ascendente v1.1 c 2005 José Fortes Gálvez p.
Generación de analizador sintáctico ascendente Yacc (bison, ) Generación de analizador sintáctico ascendente v11 c 2005 José Fortes Gálvez p1 Reconocedor de avance-reducción Planteamiento clásico, originado
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 detallesANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa
ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa ANALIZADOR LÉXICO (AL) El Analizador léxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades
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 detallesTeoría de Lenguajes. Parsers descendentes para gramáticas extendidas ELL(1) Miércoles 24 de Mayo de Facultad de Ciencias Exactas y Naturales
Teoría de Lenguajes Parsers descendentes para gramáticas extendidas ELL(1) Facultad de Ciencias Exactas y Naturales Miércoles 24 de Mayo de 2017 1 / 15 Parsing Descendente Hasta ahora vimos dos métodos
Más detallesGramáticas libres de contexto
Gramáticas libres de contexto Conceptos básicos El siguientes es un ejemplo de una gramática libre de contexto, a la cual llamaremos G1. A 0A1 A B B # Una gramática consiste de una colección de reglas
Más detallesSoftware para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes
Software para la Enseñanza de las Fases de Análisis Léxico y Análisis Sintáctico en Procesadores de Lenguajes Manual de usuario Realizado por: José Francisco Jódar Reyes Dirigido por: Jorge Revelles Moreno
Más detallesTema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I
Tema 4: Gramáticas independientes del contexto Teoría de autómatas y lenguajes formales I Bibliografía Hopcroft, J. E., Motwani, R., y Ullman, J. D. Introducción a la Teoría de Autómatas, Lenguajes y Computación.
Más detallesParsing Top Down (Descendente)
Top Down (Descendente) José M. Castaño Teoría de Lenguajes 2012 Departamento de Computación FCEyN, UBA Outline 1 2 3 4 5 Introducción Reconocer/Generar un lenguaje independiente de contexto (CFL). Poder
Más detallesPontificia Universidad Católica del Ecuador
1. DATOS INFORMATIVOS: MATERIA O MÓDULO: COMPILADORES E INTERPRETES CÓDIGO: 10730 CARRERA: NIVEL: SISTEMAS QUINTO No. CRÉDITOS: 4 CRÉDITOS TEORÍA: 4 CRÉDITOS PRÁCTICA: - SEMESTRE / AÑO ACADÉMICO: 2 / 2010
Más detallesB b A. Notar que las gramáticas utilizadas son sin recursión por la izquierda:
Definición: Una Gramática Libre de Contexto (GLC) está en Forma Normal de Greibach (FNG) si todas las producciones son de la forma: A ab 1 B 2.. B k Donde A es un símbolo no Terminal, a es un símbolo Terminal
Más detallesAnálisis sintáctico Analizadores descendentes
Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Analizadores descendentes Javier Vélez Reyes jvelez@lsi.uned.es
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 detallesEl análisis descendente LL(1) 6, 7 y 13 de abril de 2011
6, 7 y 13 de abril de 2011 Analizadores sintácticos (repaso) Los analizadores descendentes: Corresponden a un autómata de pila determinista. Construyen un árbol sintáctico de la raíz hacia las hojas (del
Más detallesUNIVERSIDAD INTERAMERICANA DE PUERTO RICO RECINTO METROPOLITANO
UNIVERSIDAD INTERAMERICANA DE PUERTO RICO RECINTO METROPOLITANO I. TITULO : LENGUAJE C CODIGO : CMIS3330 CREDITAJE : 3 CREDITOS REQUISITOS : CMIS 2200 II. DESCRIPCION DEL CURSO: Estudio del lenguaje de
Más detallesContenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55
Contenido Capítulo 1. Teoría de conjuntos. 1 1.1 Conjuntos.... 3 1.1.1 Definiciones básicas.... 3 1.1.2 Operaciones sobre conjuntos.... 6 1.1.3 Diagrama de Venn.... 7 1.1.4 Álgebra de conjuntos.... 7 1.2
Más detallesANÁLISIS SINTÁCTICO. Comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática Generar el árbol sintáctico
Cadena de tokens Árbol Sintáctico ANÁLISIS SINTÁCTICO 1 Análisis Sintáctico 2 Funciones Comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática Generar el árbol sintáctico Ventajas
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 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 detallesCiencias de la Computación I
Ciencias de la Computación I Gramáticas Libres del Contexto y Lenguajes Libres del Contexto Gramáticas Formales Una gramática formal es una cuadrupla G = (N, T, P, S) N = conjunto finito de símbolos no
Más detallesTema 3. Análisis sintáctico descendente
Departamento de Tecnologías de la Información Tema 3 Análisis sintáctico Ciencias de la Computación e Inteligencia Artificial Índice 3.1 Características del análisis sintáctico 3.2 Gramáticas libres de
Más detallesUnidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas
Unidad IV Análisis Sintáctico M.C. Juan Carlos Olivares Rojas Agenda 4.1 Introducción a las Gramáticas libres de contexto y árboles de derivación. 4.2 Diagramas de sintaxis. 4.3 Precedencia de operadores.
Más detallesProcesadores de Lenguajes. Análisis sintáctico. Gramáticas libres de contexto
Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Gramáticas libres de contexto Javier Vélez Reyes jvelez@lsi.uned.es
Más detallesUNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO COMPILADORES 1764 7 o 09 Asignatura Clave Semestre Créditos Ingeniería Eléctrica Ingeniería en Computación Ingeniería
Más detallesLEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.
LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.
Más detalles3 Curso de I.T. Informática de Sistemas. TEORÍA
Examen de Traductores, Intérpretes y Compiladores. Convocatoria extraordinaria de Diciembre de 2007 er 3 Curso de I.T. Informática de Sistemas. Apellidos, Nombre: TEORÍA 1.- La siguiente gramática no es
Más detallesCompiladores: Análisis léxico
Compiladores: Análisis léxico Francisco J Ballesteros LSUB, URJC Page 1 of 90 Analizador léxico Identificar tokens en la cadena de entrada procesar los ficheros de entrada generar la entrada para el parser
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 detallesMODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.
MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.
Más detallesAutómatas y Lenguajes Formales. Tema 3.2: Autómatas Finitos No Deterministas. Luis Peña luis.pena@urjc.es
Autómatas y Lenguajes Formales Tema 3.2: Autómatas Finitos No Deterministas Luis Peña luis.pena@urjc.es Sumario Tema 3.2: Autómatas Finitos No Deterministas. 1. Concepto de AFND 2. Teoremas de Equivalencia
Más detallesUniversidad Nacional del Santa Facultad de Ingeniería E.A.P. de Ingeniería de Sistemas e Informática TEORIA DE COMPILADORES ANALISIS SINTACTICO
ANALISIS SINTACTICO Análisis Sintáctico Descendente Análisis Sintáctico Ascendente EOF y α S (axioma inicial). 2. : la cadena de entrada no es válida. 3. : consiste en aplicar
Más detallesAPUNTES PARA LENGUAJES Y COMPILADORES
APUNTES PARA LENGUAJES Y COMPILADORES Cuando se define un lenguaje de programación, se determina su sintaxis y su semántica La sintaxis se refiere a las notaciones necesarias para escribir programas, y
Más detallesANÁLISIS SINTÁCTICO II LALR
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 detallesLas Etapas de la Compilación
Las de la Compilación El en la Compilación Universidad de Cantabria Outline 1 El Problema 2 Las y el Qué pasos son necesarios dar para hallar la estructura de un programa? En qué pasos podemos dividirlos
Más detalles1. Cadenas EJERCICIO 1
LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 - BOLETÍN DE EJERCICIOS Víctor J. Díaz Madrigal y José Miguel Cañete Departamento de Lenguajes y Sistemas Informáticos 1. Cadenas La operación reversa aplicada
Más detallesUso de la herramienta YACC
1 Compiladores / Guía VI / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología Uso de la herramienta YACC Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En
Más detallesCompiladores e Intérpretes Análisis Léxico
1 Compiladores e Intérpretes Análisis Léxico Sebastian Gottifredi 2017 Organizacion Esquema General de Análisis Léxico Tokens Especificando Tokens Expresiones Regulares Reconociendo Tokens Autómatas Finitos
Más detallesGRAMATICAS LIBRES DEL CONTEXTO
GRMTICS LIBRES DEL CONTEXTO Estas gramáticas, conocidas también como gramáticas de tipo 2 o gramáticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto.
Más detallesANÁLISIS LÉXICO EXPRESIONES REGULARES
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 detallesSeminario de introducción a Bison
Seminario de introducción a Bison David Portolés Rodríguez dporto@unizar.es Lenguajes y Sistemas Informáticos Dpto. de Informática e Ing. de Sistemas Universidad de Zaragoza Qué es Bison? Bison es un una
Más detallesLa Ambigüedad en el Parsing
La en el Parsing Definición y Ejemplos Universidad de Cantabria Outline El Problema 1 El Problema 2 3 El Problema En nuestra busqueda por encontrar la estructura exploraremos como elegir una derivación
Más detallesS Qué es el analizador sintáctico?
Traductores, Compiladores e Intérpretes 1 Tema 3. Análisis Sintáctico. Todo lenguaje de programación tiene reglas que describen la estructura sintáctica de programas bien formados. En Pascal, por ejemplo,
Más detallesNotación Polaca (Jan Lukasiewitz) (Notación prefija)
APLICACIONES. Notación Polaca y Polaca Inversa. Notación infija A+B C-D E*F G/H Distinción entre (A+B)*C y A+(B*C) de prelación. Con paréntesis y orden Notación Polaca (Jan Lukasiewitz) (Notación prefija)
Más detalles