Agenda. Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo
|
|
- Encarnación Bustamante Valverde
- hace 6 años
- Vistas:
Transcripción
1 Agenda Introducción Analizador léxico Analysis El problema de analizar sintácticamente Analizador sintáctico descendeterecursivo Analizador sintáctico Bottom-Up 1-1
2 1-2
3 Introducción Los sistemas de implementación de lenguajes deben analizar código fuente, independientemente del enfoque de implementación específica Casi todos los analizadores sintácticos se basan en una descripción formal del lenguaje (BNF) 1-3
4 Análisis sintáctico Casi siempre el análisis sintáctico está compuesto de dos partes: Un componente de bajo nivel llamado analizador léxico (matemáticamente, un autómata finito basado en una gramática regular) Un componente de alto nivel llamado analizador sintáctico, o parser (matemáticamente, un autómata de pila basado en una gramática independiente del contexto, o BNF) 1-4
5 Usar BNF para describir la sintaxis Provee una descripción sintáctica clara y precisa El analizador sintáctico puede estar basado directamente en el BNF Los analizadores sintácticos basados en BNF son fáciles de mantener 1-5
6 Razones para separar el análisis léxico del análisis sintáctico Simplicidad enfoques menos complejos pueden ser usados para analizar léxicamente; separarlos simplica el parser Eficiencia la separación permite la optimización del analizador léxico Portabilidad partes de un analizador léxico pueden no ser portables pero el parser siempre es portable 1-6
7 Análisis léxico Un analizador léxico busca coincidencias de patrones en cadenas de caracteres Un analizador léxico es un front-end para el parser Identifica subcadenas del programa fuente - lexemes Los lexemas son cadenas que coinciden con un patrón, el cual está asociado a una categoría conocida como token sum es un lexema; su token podría ser IDENT 1-7
8 Análisis léxico (continuación) El analizador léxico es usualmente una función que es llamada por el parser cuando éste necesita el siguiente token Existen tres enfoques para construir un analizador léxico: Escribir una descripción formal de los tokens y usar una herramienta computacional que construya una tabla dada su descripción Diseñar un diagrama de estado que describa los tokens y escribir un programa que implemente dicho diagrama Diseñar un diagrama de estados que describa los tokens y construir una tabla manualmente de su descripción 1-8
9 Diseño del diagrama de estados Un diagrama de estados simple tendría una transición de cada estado de cada caracter en el código fuente - dicho diagrama sería muy largo 1-9
10 Análisis léxico (cont.) En muchos casos las transiciones pueden ser combinadas para simplificar el diagrama de estados Cuando se reconozca una literal entera, todos los dígitos son equivalentes usar una clase de dígito 1-10
11 Análisis léxico (cont.) Palabras reservadas e identificadores pueden ser reconocidos juntos (en lugar de tener una parte del diagrama para cada palabra reservada) Usar una tabla de búsqueda para determinar si un identificador es en realidad una palabra reservada. 1-11
12 Análisis léxico (cont.) Subprogramas utilizados convenientemente: getchar obtiene el siguiente caracter, y lo coloca en nextchar, determina su clase y la coloca en charclass addchar copia el caracter de nextchar en el lugar donde el lexema está siendo acumulado, lexema lookup determina si la cadena en lexeme es una palabra reservada (regresa un código) 1-12
13 Diagrama de estados 1-13
14 Análisis léxico (cont.) Implementación: int lex() { getchar(); switch (charclass) { case LETTER: addchar(); getchar(); while (charclass == LETTER charclass == DIGIT) { addchar(); getchar(); } return lookup(lexeme); break; 1-14
15 Análisis léxico (cont.) case DIGIT: addchar(); getchar(); while (charclass == DIGIT) { addchar(); getchar(); } return INT_LIT; break; } /* End of switch */ } /* End of function lex */ 1-15
16 El problema de analizar sintácticamente Objetivos del parser dado un programa de entrada: Encontrar todos los errores de sintáxis; de cada cada uno, producir un mensaje de diagnóstico apropiado Producir un árbol de sintáxis 1-16
17 El problema de analizar sintácticamente (cont.) Hay dos categorías de analizadores Top down produce el árbol de sintáxis comenzando por la raíz Su orden de derivación por la derecha Construye un árbol en preorden Bottom up produce el árbol de sintaxis comenzando por las hojas Sigue un orden de derivación invertida: por la izquierda Los analizadores buscan sólamente un token hacia adelante 1-17
18 El problema de analizar sintácticamente (cont.) Analizador sintáctico Top-down Dada una forma sentencial, xaα, el analizador debe escoger la A-regla correcta para obtener la siguiente forma sentencial en la derivación por la izquierda, usando sólamente el primer token producido por A Los analizadores síntacticos top-down más comunes: Descendente recursivo Analizadores sintácticos LL (Left to right Leftmost derivation) implementación basada en tablas 1-18
19 El problema de analizar sintácticamente (cont.) Analizadores Bottom-up Dada una forma sentencial, α, determinar que subcadena de es la parte derecha de la regla en la gramática que debe ser reducida para producir la forma sentencial previa en la derivación derecha El analizador sintáctico bottom-up más común se encuentran en la familia LR (Left to right Right most derivation). 1-19
20 El problema de analizar sintácticamente (cont.) La complejidad del análisis Los analizadores que trabajan para cualquier gramática no-ambigua son complejos e ineficientes ( O(n 3 ), donde n es la longitud de la entrada ) Los compiladores usan analizadores que sólamente trabajan para un subconjnto de todas las gramáticas no-ambiguas, pero lo hacen en tiempo lineal ( O(n), donde n es la longitud de la entrada ) 1-20
21 Analizador descendente recursivo Hay un subprograma para cada noterminal que puede analizar las sentencias que pueden ser generadas por dicho no-terminal EBNF es ideal para ser usado por una analizador descendente recursivo porque éste minimiza el número de no-terminales 1-21
22 Analizador descendente recursivo (cont.) Una gramática para expresiones simples: <expr> <term> {(+ -) <term>} <term> <factor> {(* /) <factor>} <factor> id ( <expr> ) 1-22
23 Analizador descendente recursivo(cont.) Asumamos que tenemos un analizador léxico llamado lex, el cual copia el siguiente token en nexttoken El proceso de codificación cuando hay sólamente un RHS: Para cada símbolo terminal en el RHS, se compara con el siguiente token; si coinciden, se continua, en caso contrario hay un error Para cada símbolo no-terminal en el RHS, llama a su programa analizador asociado. 1-23
24 Analizador descendente recursivo (cont.) /* Function expr Parses strings in the language generated by the rule: <expr> <term> {(+ -) <term>} */ void expr() { /* Parse the first term */ term(); 1-24
25 Analizador descendente recursivo(cont.) /* As long as the next token is + or -, call lex to get the next token, and parse the next term */ while (nexttoken == PLUS_CODE nexttoken == MINUS_CODE){ lex(); term(); } } Esta rutina particular no detecta errores Convención: Cada rutina del analizador deja el próximo token en nexttoken 1-25
26 Analizador descendente recursivo (cont.) Un no terminal que tiene más de una RHS requiere un proceso inicial para determinar cual RHS está analizando El correcto RHS es escogido con base al siguiente token (el lookahead) El próximo token es comparado con el primer token que puede ser generado por cada RHS hasta que se encuentre una coincidencia Si no se encuentran coincidencias, entonces existe un error 1-26
27 Analizador descendentes recursivos(cont.) /* Function factor Parses strings in the language generated by the rule: <factor> -> id (<expr>) */ void factor() { /* Determine which RHS */ if (nexttoken) == ID_CODE) /* For the RHS id, just call lex */ lex(); 1-27
28 Analizador descendente recursivo (cont.) /* If the RHS is (<expr>) call lex to pass over the left parenthesis, call expr, and check for the right parenthesis */ else if (nexttoken == LEFT_PAREN_CODE) { lex(); expr(); if (nexttoken == RIGHT_PAREN_CODE) lex(); else error(); } /* End of else if (nexttoken ==... */ } else error(); /* Neither RHS matches */ 1-28
29 Analizador descendente recursivo (cont.) La clase gramatical LL El problema de la recursión por la izquierda Si una gramática tiene recursión por la izquierda, ya sea directa o indirectamente, no puede ser la base para un analizador top-down Se puede modificar una gramática para remover la recursión por la izquierda 1-29
30 Analizador descendente recursivo(cont.) La otra característica de las gramáticas que impide un análisis top-down es la falta de emparejamiento. La inhabilidad para determinar el RHS correcto de acuerdo a la base de un token de lookahead 1-30
31 Analizador descendente recursivo(cont.) La prueba del emparejamiento: Para cada no terminal, A, en la gramática tiene más de un RHS, para cada par de reglas, A α i y A α j, debe ser verdad que FIRST(α i ) diferente a FIRST(α j ) φ Examples: A a bb cab A a ab (Factorización por la izquierda) 1-31
32 Analizador Bottom-up El problema de analizar sintáticamente es encontrar la correcta RHS en una forma sentencial derecha para reducir y obtener la forma sentencial derecha previa en la derivación 1-32
33 Analizador Bottom-up (cont.) Shift-Reduce Algorithms Reduce es la acción de reemplazar el manejador que está en la cima de la pila con su correspondientelhs Desplaza es la accioń de mover el siguiente token a la cima de la pila 1-33
34 Analizador Bottom-up (cont.) Ventajas de los parsers LR Trabajan con casi cualquier gramática. Además son igual de eficientes que los bottom-up Pueden detectar errores rápidamente. Las clases de gramáticas LR son un superconjunto de las clases de analizables sintácticamente por los parsers LL. 1-34
35 Analizador Bottom-up (cont.) Los parsers LR deben ser construidos con una herramienta: YACC, BISON, ANTLR, etc 1-35
36 Analizador Bottom-up (cont.) Una configuración LR guarda el estado de un parser LR, mientras que para construir un LL, se necesita muchísima memoria. (S 0 X 1 S 1 X 2 S 2 X m S m, a i a i +1 a n $) 1-36
37 Analizador Bottom-up (cont.) Los parsers LR están basados en tablas, donde la tablas tiene dos componentes, una tabla ACCIÓN y una tabla GOTO La tabla ACCIÓN especifica la acción a realizar, a partir de un estado dado y el siguiente token Los renglones son los nombres de estado y las columnas las terminales La tabla GOTO especifica cuál estado será puesto en la cima de la pila después que una reducción sea hecha. Los renglones son los nombres del estado y las columnas los no terminales. 1-37
38 Estructura de un Analizador LR 1-38
39 Analizador Bottom-up (cont.) Configuración Inicial: (S 0, a 1 a n $) Acciones del parser: If ACTION[S m, a i ] = Desplaza S, la próxima configuración es: (S 0 X 1 S 1 X 2 S 2 X m S m a i S, a i+1 a n $) If ACTION[S m, a i ] = Reduce A β y S = GOTO[S m-r, A], realizado r = la longitud de β, la próxima configuración es (S 0 X 1 S 1 X 2 S 2 X m- rs m-r AS, a i a i+1 a n $) 1-39
40 Analizador Bottom-up (cont.) Acciones del parser (cont.): If ACTION[S m, a i ] = Acepta, el análisis está completo y se encontraron errores. If ACTION[S m, a i ] = Error, el parser llama a una rutina para manejar errores. 1-40
41 Analizador Bottom-up (cont.) Una tabla de un parser puede ser generada desde una herramienta para manejar gramáticas, e.g., yacc 1-41
42 Resumen La sintaxis es algo usual al momento de implementar lenguajes Un analizador léxico analizador de similitudes que aisla las pequeñas partes de un programa Detecta errores Produce un arbol de análisis. Un parser recursivo descendente es del tipo LL EBNF El problema de analizar sintáticamente parsers bottom-up: encontrar la subcadena de la forma sentenciales actual. La familia LR de parsers shift-reduce son más comunes que los enfoques basados en bottomup. 1-42
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 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 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 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 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 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 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 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 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 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 detallesANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO
1 UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE COMPUTACIÓN ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO Elaborado el Martes 12 de Octubre de 2004 I.- INTRODUCCIÓN Es posible realizar
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 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 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 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 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 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 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 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 detallesCompiladores: Parsing ascendente
Compiladores: Parsing ascendente Francisco J Ballesteros LSUB, URJC Page 1 of 64 Parsing ascendente Normalmente utilizaremos parsers descendentes para problemas pequeños cuando podemos escribir uno predictivo
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 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 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 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 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 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 detalles8- LEX-Expresiones regulares
8- LEX-Expresiones regulares Objetivos: Utilizar la herramienta KEX para trabajar con expresiones regulares Recursos: Maquina virtual Linux distribución Bodhi LXterminal y FLEX Introducción Flex le permite
Más detallesLenguajes y Compiladores Análisis Léxico
Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Léxico 1 Análisis léxico La tarea del análisis léxico es reconocer símbolos dentro de la cadena de caracteres que es el programa fuente.
Más detallesCompiladores: Análisis Léxico. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V.
Compiladores: Análisis Léxico Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. Análisis Léxico Programa Lenguaje Fuente Análisis Léxico (Token, Lexema)
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 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 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 detallesCompiladores e intérpretes Análisis Léxico I. Análisis Léxico I
Análisis Léxico I Profesor: Eridan Otto Análisis Léxico I Introducción Funciones Tokens,Patrones y Lexemas Reconocimiento de tokens Implementación de un AL 1 Análisis léxico: Introducción En esta unidad
Más detallesAnalizador De léxico. V A R i : I N T E G E R ; \n...
UNIDAD III Analisis de Lexico 3.1 Analizador de Lexico La tarea del análisis de léxico es reconocer símbolos en un flujo de caracteres y presentarlos en una representación mas util para el análisis sintáctico.
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 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 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 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 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 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 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 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 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 detallesAnálisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática
Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis léxico Formalización y desarrollo Javier Vélez Reyes jvelez@lsi.uned.es
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 detallesApuntes de compiladores
Apuntes de compiladores Tomás Barros 4 de septiembre de 2008 1. Introducción Un compilador es simplemente un programa que puede leer un programa en un lenguaje y traducirlo a otro lenguaje programa fuente
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 detallesSintaxis y Semántica. Un repaso
Sintaxis y Semántica Un repaso Definición: Alfabeto Un conjunto finito de símbolos: {a,b,c,d} {0,1,2,34,5,6,7,8,9} {identificador, número, +,-,*, /} {while, if, {, }, >, >=,
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 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 detallesProcesadores de Lenguajes. Aná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 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 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 detallesEl proceso del Análisis Léxico
El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente
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 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 detallesNOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN
NOTAS PARA LA MATERIA LENGUAJES DE PROGRAMACIÓN G r a m á t i c a s UNIVERSIDAD DE SONORA DEPARTAMENTO DE MATEMÁTICAS LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN Dra. María de Guadalupe Cota Ortiz Lenguaje
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 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 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 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 detallesTema: Generación de analizadores con YACC
Compiladores. Guía 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Generación de analizadores con YACC Contenido En esta guía se expondrá la forma de generar el analizador
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 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 detallesSSL Guia de Ejercicios
1 SSL Guia de Ejercicios INTRODUCCIÓN A LENGUAJES FORMALES 1. Dado el alfabeto = {a, b, c}, escriba las palabras del lenguaje L = {x / x }. 2. Cuál es la cardinalidad del lenguaje L = {, a, aa, aaa}? 3.
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 detallesLenguajes y Compiladores Introducción. Compiladores 1
Facultad de Ingeniería de Sistemas Lenguajes y Introducción 1 Objetivos Conocer los fundamentos de construcción de en todas sus fases, presentando los conceptos básicos, definiciones formales, técnicas
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 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 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 / 22 Fundamentos del análisis
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 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 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 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 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 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 detallesUniversidad Tecnológica Nacional Facultad Regional Buenos Aires Grupo de Inteligencia Artificial y Robótica. Seminario IA y R
Página 1 de 8 3 Parser/Intérprete para plataforma PMIR Leandro Tozzi Resumen: Se describe la implementación mediante ANTLR y C# de un intérprete de instrucciones para automatizar y programar acciones 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 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 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 detallesNombre de la asignatura: Lenguajes y Autómatas I. Créditos: Aportación al perfil
Nombre de la asignatura: Lenguajes y Autómatas I Créditos: 2 3 5 Aportación al perfil Desarrollar, implementar y administrar software de sistemas o de aplicación que cumpla con los estándares de calidad
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 detallesTema: Análisis Sintáctico
Compiladores. Guía 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis
Más detallesAgenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.
Agenda BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar. JLEX y JCUP Breve descripción del las herramientas para generar el parser o analizador sintáctico.
Más detallesSintaxis y Semántica del Lenguaje
Gramáticas y Autómatas Wilo Carpio Cáceres 110813 1 Sintaxis y Semántica del Lenguaje Wilo Carpio Cáceres 2013 Gramáticas y Autómatas Wilo Carpio Cáceres 110813 2 INTRODUCCION A LOS COMPILADORES Wilo Carpio
Más detallesDesarrollo de lenguajes y Compiladores [MII-771] Capítulo 1: Lenguajes y Gramáticas Formales
Desarrollo de lenguajes y Compiladores [MII-771] Capítulo 1: Lenguajes y Gramáticas Formales Dr. Ricardo Soto [ricardo.soto@ucv.cl] [http://www.inf.ucv.cl/ rsoto] Escuela de Ingeniería Informática Pontificia
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 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 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 detallesANÁLISIS SINTÁCTICO I ANÁLISIS SINTÁCTICO DESCENDENTE LL(1)
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 detallesTEORÍA. definition TAG. PROPERTIES ID expr EXTENDS ID FIN_TAG. DELAYED : expr
Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Septiembre de 2004 3 er Curso de I.T. Informática de Sistemas. Apellidos, Nombre: Calificación: TEORÍA 1.- Escribir una gramática
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 detallestoken siguiente! Tabla de símbolos
TEMA 3 3.1 LA FUNCIÓN DEL ANALIZADOR SINTÁCTICO Como ya se indicó en la introducción, la principal tarea del analizador sintáctico (o parser) no es comprobar que la sintaxis del programa fuente sea correcta,
Más detalles