Introducción (1) Introducción (2) El papel del analizador sintáctico (1)

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Introducción (1) Introducción (2) El papel del analizador sintáctico (1)"

Transcripción

1 Introducción (1) odo lenguaje de programación tiene reglas que prescriben la estructura sintáctica de programas bien formados. El uso de gramáticas para describir dicha estructura ofrecen ventajas significativas: Dan una especificación sintáctica precisa y fácil de entender de un lenguaje de programación. partir de ellas se puede construir automáticamente un analizador sintáctico eficiente que determine si un programa fuente está sintácticamente bien formado. demás, durante ese proceso es posible detectar ambigüedades sintácticas y otras construcciones difíciles de analizar que de otro modo podrían pasar desapercibidas. La estructura que imponen es útil para la traducción de programas fuente a código objeto correcto y para la detección de errores. Las nuevas construcciones fruto de la evolución del lenguaje se pueden añadir fácilmente cuando existe una aplicación basada en una descripción gramatical del lenguaje. PL. nálisis sintáctico 2 Introducción (2) Conviene tener claros los siguientes conceptos: Gramática independiente del contexto. ímbolo terminal y no terminal y axioma. ímbolo anulable, no alcanzable y no terminable. Producción épsilon, no generativa, recursiva a izquierda o derecha. Derivación, forma sentencial, frase o sentencia y lenguaje generado por una gramática. Derivación más a la izda/dcha y árbol de análisis sintáctico. mbigüedad PL. nálisis sintáctico 3 El papel del analizador sintáctico (1) De momento se asume que la salida del analizador sintáctico es una representación del árbol de análisis sintáctico para la cadena de componentes léxicos producida por el analizador léxico. Existen tres tipos generales de analizadores sintácticos para gramáticas Los métodos universales de análisis sintáctico ej. algoritmo de Cocke-Younger-Kasami on demasiados ineficientes Los métodos descendentes nálisis recursivo descendente Los métodos ascendentes nálisis sintáctico por precedencia de operadores. nálisis sintáctico LR PL. nálisis sintáctico 4

2 El papel del analizador sintáctico (2) expresiones regulares nalizador léxico componente léxico obtén sig. comp. lex. abla de símbolos errores nalizador sintáctico Árbol de análisis sintáctico Resto etapa inicial usa gramáticas para determinar la estructura sintáctica de la secuencia de componentes léxicos. produce un árbol de análisis sintáctico. detecta y se recupera de errores sintácticos. reconoce las secuencias sintácticamente correctas. informa de los errores. Representación intermedia técnicamente parte del análisis sintáctico incluye la recolección de información adicional para los componentes léxicos, la comprobación de tipos y el análisis semántico nálisis descendente La idea es generar una forma sentencial a partir del axioma, reconstruyendo una derivación más a la izquierda en orden directo. l* w engo dos elementos de juicio: La porción de entrada por leer. En general se consideran los k primeros caracteres por leer. El no terminal más a la izquierda de la forma sentencial. Es como construir el árbol sintáctico empezando por la raíz (análisis LL(k) o top-down). w PL. nálisis sintáctico 5 PL. nálisis sintáctico 6 nálisis ascendente La idea es generar una forma sentencial a partir del axioma, reconstruyendo una derivación más a la derecha en orden inverso. r* w engo dos elementos de juicio: La porción de entrada por leer. En general se consideran los k primeros caracteres por leer. El asidero de la forma sentencial. Es como si se construyera el árbol sintáctico w empezando por las hojas (análisis LR(k) o botton-up). PL. nálisis sintáctico 7 Manejo de errores sintácticos (1) i un compilador tuviera que procesar sólo programas correctos su diseño se simplificaría mucho. e sabe que los programas pueden tener errores de muy diversos tipos: Léxicos, como escribir mal un identificador, palabra clave u operador. intácticos, como una expresión aritmética con paréntesis no equilibrados emánticos, como un operador aplicado a un operando incompatible o el acceso a una posición de un array más allá de su límite Lógicos, como una llamada infinitamente recursiva o un bucle cuya condición de terminación nunca se cumple y además no hay instrucciones de salida del mismo. PL. nálisis sintáctico 8

3 Manejo de errores sintácticos (2) La mayor parte de los errores se detecta en el análisis sintáctico: Es el que se da cuenta de errores arrastrados del análisis léxico. La detección de errores semánticos y lógicos en el momento de la compilación es muy difícil. El manejador de errores en un analizador sintáctico debe: Informar de la presencia de errores con claridad y exactitud. Recuperarse de cada error con la suficiente rapidez como para detectar errores posteriores No debe aumentar el tiempo de procesamiento de los programas correctos. PL. nálisis sintáctico 9 Estrategias de recuperación de errores (1) Recuperación en modo pánico e desechan símbolos hasta que encuentra un símbolo de sincronización (ej. delimitadores) Omite una cantidad importante de entrada sin comprobar la presencia de errores pero es sencillo, no entra en bucles infinitos y puede ser utilizado con la mayoría de métodos de análisis sintáctico. Recuperación a nivel de frase e realizan correcciones locales de la entrada restante (ej. sustituir el prefijo de la entrada por una cadena que permita continuar el análisis) Puede haber bucles infinitos si la inserción es por delante de la entrada y es problemática si el error se ha producido antes del punto de detección. PL. nálisis sintáctico 10 Estrategias de recuperación de errores (2) Producciones de error i se tiene idea de los errores comunes se puede aumentar la gramática con producciones que generen construcciones erróneas. i se usa una producción de error se emite un mensaje informando de la construcción errónea. Corrección global e intenta determinar el mínimo número de cambios para hacer un programa correcto. Demasiado costosa, la corrección realizada puede modificar la intención del programador. Expr. regulares, o gramáticas independientes del contexto Por qué utilizar expresiones regulares para definir la sintaxis lexicográfica de un lenguaje? Las reglas lexicográficas de un lenguaje a menudo son bastante sencillas, y para describirlas no se necesita una notación tan poderosa como las gramáticas. Las e. r. por lo general proporcionan una notación más concisa y fácil de entender para los componentes léxicos que una gramática. e pueden construir automáticamente analizadores léxicos más eficientes a partir de e. r. que a partir de gramáticas. eparar la estructura sintáctica de un lenguaje en partes léxicas y no léxicas proporciona una forma conveniente de modularizar la etapa inicial de un compilador en dos componentes de tamaño razonable. PL. nálisis sintáctico 11 PL. nálisis sintáctico 12

4 Eliminación de recurs. izda. 1 Una gramática G es recursiva a izquierdas si existe un no terminal para el cual + α. Recursividad directa β α β α ε β α α β α α i hay más de dos producciones Estratificación: α 1 α 2... α m β 1 β 2... β n Reescritura: β 1 β 2... β n α 1 α 2... α m ε ε Eliminación de recurs. izda. 2 Recursividad indirecta La recursividad se alcanza a través de varias producciones. Bα α B Cβ β C γ γ G=(Σ,N,P,) sin producciones ε y sin ciclos G =(Σ,N,P,) no recursiva con L(G)=L(G ) 1Indexar los no terminales: 1, 2,..., n 2for i:=1 to n do for j:=1 to i-1 do a sustituir cada producción de la forma i j γ por las producciones i δ 1 γ δ 2 γ... δ k γ donde j δ 1 δ 2... δ k son todas las producciones actuales de j b eliminar la recursividad directa por la izquierda de i PL. nálisis sintáctico 13 PL. nálisis sintáctico 14 Factorización por la izquierda Idea: cuando no esta claro cuál de dos producciones alternativas utilizar para ampliar un no terminal, se pueden reescribir las producciones de para retrasar la decisión hasta haber visto suficiente entrada. G=(Σ,N,P,) G =(Σ,N,P,) factorizada con L(G)=L(G ) 1Para cada no terminal, encontrar el prefijo α más largo común a dos o más de sus alternativas 2i α ε (es decir, existe un prefijo) transformar αβ 1 αβ 2 αβ n γ (γ: alternativas que no comienzan por α) en α γ β 1 β 2 β n PL. nálisis sintáctico 15 Construcción de lenguajes no independientes del contexto Unas cuantas construcciones sintácticas de muchos lenguajes de programación no se pueden especificar utilizando tan sólo gramáticas. declaración de identificadores antes de su uso, que tiene una estructura similar a la del lenguaje: L 1 ={wcw: w está en (a b)*} comprobación de que el número de parámetros actuales en un uso de un procedimiento coincide con el número de parámetros formales en la declaración de ese procedimiento, que tiene una estructura similar a: L 2 ={a n b m c n d m : n 1 y m 1 } En un compilador para lenguajes de este tipo la fase de análisis semántico comprobará la información almacenada en la tabla de símbolos. PL. nálisis sintáctico 16

5 nálisis sintáctico por descenso recursivo Es una forma general de análisis sintáctico descendente que puede incluir retrocesos (es decir varios exámenes de la entrada). Ejemplo: cd, ab a, w=cad cad cad c c a b d Este tipo de análisis no es adecuado para gramáticas recursivas a izquierdas. d cad cad c c d a b Problema: retroceso a d l regresar a se restablece el valor del apuntador de la entrada cad c a d PL. nálisis sintáctico 17 nalizadores sintácticos predictivos En muchos casos, diseñando con cuidado la gramática, eliminando su recursión por la izquierda y factorizando por la izquierda la gramática resultante, se puede obtener una gramática analizable con un analizador recursivo descendente que no necesita retroceso. Uno analizador de este tipo, dado un símbolo a de la entrada y el no terminal a expandir debe poder determinar cuál de las alternativas de producción α 1 α 2... α n es la única alternativa que da lugar a la cadena que empiece por a. PL. nálisis sintáctico 18 Diagramas de transición para analizadores sintácticos predictivos (1) e caracterizan por lo siguiente: Existe un diagrama para cada no terminal. Las etiquetas de las aristas son componentes léxicos y no terminales: Una transición con un componente léxico supone que se debe tomar dicha transición si ese componente léxico es el siguiente de la entrada. Una transición etiquetada con un no terminal se traduce como una llamada al procedimiento para. Para construirlos a partir de una gramática: a) Eliminar la recursión a izquierdas b) Factorizar c) Para cada no terminal 1. Estado inicial y estado final de retorno 2. Para cada producción X 1 X 2... X n camino del estado inicial al final con aristas etiquetada con X 1, X 2,..., X n. PL. nálisis sintáctico 19 Diagramas de transición para analizadores sintácticos predictivos (2) Ejemplo E E' E' + E' E: E ' E ' E ': : F ' ' * F ' F ' * F ' ' : ( E ) F: id F ( E ) id Comportamiento: i s a t y entrada a entonces cambia delantero y el estado a t i : s r t u entonces cambiar estado a r si llega a u vuelve a t ( leído) PL. nálisis sintáctico 20

6 Diagramas de transición para analizadores sintácticos predictivos (3) implificación + E ': E ': E: E: 0 3 E ' E ' 6 E ': E: PL. nálisis sintáctico 21 nálisis sintáctico predictivo no recursivo e puede construir un analizador sintáctico predictivo no recursivo explícitamente manteniendo una pila, en lugar de hacerlo implícitamente mediante llamadas recursivas. El problema clave durante el análisis sintáctico predictivo es determinar la producción que debe aplicarse a un no terminal. El analizador sintáctico no recursivo busca la producción que debe aplicarse en una tabla de análisis sintáctico predictivo P. ímbolo de pila vacía Pila erminales y no terminales de la gramática X Y Z a + b Programa para análisis sintáctico predictivo abla de análisis sintáctico predictivo M[a,] entrada (cadena + finalizador) Output PD cciones que deben llevarse a cabo en función del tope de pila y el siguiente símbolo de entrada PL. nálisis sintáctico 22 Uso de la P Las acciones del PD en función de la entrada y de la pila son: i X=a=, cadena reconocida y se finaliza el análisis. i X=a, hacemos un pop en la pila y llamamos al analizador léxico para obtener un nuevo token. i X a, se ha producido un error, llamar a la rutina de recuperación de errores y emitir un mensaje del tipo se esperaba un X pero se encontró un a En cualquier otro caso se consulta la entrada de la tabla M[a, X] debe aparecer una producción de la forma X Y 1 Y 2... Y n. e hace un pop de X y se reemplaza por Y 1 Y 2... Y n con Y 1 en el tope de la pila. i la entrada de tabla esta vacía llamar a la rutina de recuperación de error y emitir un mensaje como X no puede comenzar por a PL. nálisis sintáctico 23 Conjuntos FIR y FOLLOW Para construir la P es necesario el cálculo de los conjuntos FIR y FOLLOW FIR k : (Σ N) * Σ i k los primeros k símbolos de una casi forma sentencial FIR k (w)={x:w * xy, xyσ * (si xy k y=ε sino x =k} FOLLOW k : N Σ i k símbolos que siguen a en las diferentes formas sentenciales FOLLOW k ()={x: * wy xfir k (y)} FIR 1 (α): conjunto de terminales que inician las cadenas derivadas de α. FOLLOW 1 (): conjunto de terminales a que pueden aparecer inmediatamente a la derecha del no terminal en alguna forma sentencial, es decir, el conjunto de terminales a tal que haya una derivación de la forma *αaβ para algún α y β. PL. nálisis sintáctico 24

7 Propiedades del FIR y el FOLLOW FIR k (aw) = a FIR k-1 (w) aσ w(σ N ) * FIR k (ε) = {ε} FIR k (xy)=fir k (FIR k (x)fir k (y)) =FIR k (x FIR k (y)) x,y(σ N ) * =FIR k (FIR k (x) y) i tengo una regla de producción w FIR k (w) FIR k () i tengo una regla xxy XN x,y(σ N ) * FIR k (y FOLLOW k ()) FOLLOW k (X) eoremas del FIR y el FOLLOW 1 ea G:(Σ,N,P,), una CFG, G es LL(k) sii wx,wσ *, u, v se cumple que FIR k (ux) FIR k (vx)= 2 ea G:(Σ,N,P,) una CFG sin ε-reglas, G es LL(k) sii u, v se cumple que FIR k (u) FIR k (v)= 3 ea G:(Σ,N,P,) una CFG cualquiera, G es LL(1) sii u, v se cumple que FIR 1 (u FOLLOW 1 ()) FIR 1 (v FOLLOW 1 ())= PL. nálisis sintáctico 25 PL. nálisis sintáctico 26 Cálculo del FIR 1i X es un terminal FIR(X)={X} 2i X ε es una producción εfir(x) 3i X Y 1 Y 2...Y n es una producción afir(y 1 ) FIR(X) bi εfir(y k ) k<i FIR(Y i ) FIR(X) ci εfir(y k ) i n εfir(x) Cálculo del FOLLOW 1i es el axioma FOLLOW() 2i αbβ es una producción FIR(β)-{ε} FOLLOW(B) 3i hay una producción αb o αbβ con εfir(β) FOLLOW() FOLLOW(B) PL. nálisis sintáctico 27 PL. nálisis sintáctico 28

8 Construcción de la P la vista del tope de pila y del símbolo nos dice que acción llevar a cabo. Esta compuesta por entradas de la forma M[a, X]=(X w) afir(wfollow(x)) N Σ Σ σ 1. a. σ t N 1... X... N n σ 1...a... σ t P... error P : pop R n P... R n : regla n error P X w PL. nálisis sintáctico 29 lgoritmo de análisis sintáctico predictivo no recursivo apuntar ae al primer símbolo de w; repeat sea X el símbolo de la cima de la pila y a el símbolo apuntado por ae if X es un terminal o then if X=a then extraer (pop) X de la pila y avanzar ae else error() else /* X es un no terminal */ if M[X,a] = X Y 1 Y 2 Y k then begin extraer X de la pila; meter (push) Y k, Y k-1,, Y 1 emitir la producción X Y 1 Y 2 Y k end else error() until X= /* la pila está vacía */ en la pila, con Y 1 en la cima; Puntero a la entrada e puede también ejecutar código que dependa de la producción utilizada PL. nálisis sintáctico 30 ea la gramática: E E E + E E ε F * F ε F (E) F id Ejemplo 1 FIR E E F id + id * id ( ε ( ε ( -{ε} -{ε} FOLLOW E E F + + * ) ) + ) ) ) NO ERMINL E E' ' F Ejemplo 2 P ÍMBOLO DE ENRD id + * ( ) E E' E E' E' +E' E' ε E' ε F' F' ' ε ' *F' ' ε ' ε F id F (E) PL. nálisis sintáctico 31 PL. nálisis sintáctico 32

9 E E E F E id E E E + E E F E id E E F* E F E id E E Ejemplo 3 PIL ENRD LID id + id * id id + id * id id + id * id id + id * id + id * id + id * id + id * id id * id id * id id * id * id * id id id E E F F id ε E +E F F id *F F id ε E ε PL. nálisis sintáctico 33 Gramáticas LL(1) La construcción de la P se puede aplicar a cualquier gramática, pero para algunas puede tener entradas con definiciones múltiples (ej. recursivas a izda, ambiguas). Una gramática cuya P no tiene entradas es LL(1). Propiedades de las gramáticas LL(1) 1.i G es LL(1), G no es ambigua. 2.i G es LL(1), G no tiene recursividad a izquierda. 3.i G es LL(1), para cada par de producciones α y β de un no terminal a.para ningún a, α y β derivan cadenas que empiecen por a. b. lo sumo una de α y β derivan la cadena vacía. c.i β *ε, α no deriva ninguna cadena que comience por FOLLOW(). PL. nálisis sintáctico 34 Recuperación de errores en el análisis sintáctico predictivo Durante este tipo de análisis se detecta un error: cuando el terminal de la cima de pila no concuerda con el siguiente símbolo de la entrada, cuando el no terminal esta en la cima de pila, a es el siguiente símbolo de entrada y M[a, ] es vacía. En cuanto a la recuperación de errores se integran muy bien con este tipo de análisis La recuperación en modo pánico La recuperación a nivel de frase PL. nálisis sintáctico 35 Recuperación en modo pánico e aumenta la P con acciones que pretenden realinear o sincronizar la secuencia de componentes léxicos con la entrada esperada. lgunas técnicas heurísticas de sincronización: 1. ímbolos en el FOLLOW(), para descartar el no terminal y continuar el análisis. 2. Para los no terminales de las construcciones de menor jerarquía los símbolos que inician las construcciones de mayor jerarquía (begin/end, while/do, repeat/until, function). 3. ímbolos del FIR() para continuar el análisis según. 4. i el no terminal es anulable usar ε como alternativa por omisión. e pospone la detección del error. 5. i el terminal de la cima de pila no concuerda con la entrada se descarta (conjunto de sincronización formado por todos los otros terminales de la gramática). PL. nálisis sintáctico 36

10 Recuperación a nivel de frase e llenan las entradas vacías de la P con apuntadores a rutinas de error, que pueden: cambiar, insertar o eliminar símbolos en la entrada. emitir mensajes de error modificar, insertar o eliminar no terminales del tope de pila En cualquier caso, se debe estar seguro de que no puede haber un lazo infinito y que las derivaciones obtenidas se correspondan con palabras del lenguaje. Puede usarse en conjunto con la recuperación en modo de pánica para hacer un tratamiento más exhaustivo de la detección de errores. NO ERMINL E E' ' F Ejemplo 4 P ÍMBOLO DE ENRD id + * ( ) E E' E E' sinc sinc E' +E' E' ε E' ε F' sinc F' sinc sinc ' ε ' *F' ' ε ' ε F id sinc F (E) sinc sinc descartar el no terminal del tope de pila saltar el símbolo de entrada PL. nálisis sintáctico 37 PL. nálisis sintáctico 38 Ejemplo 5 PIL ENRD LID E E E E F E id E E F* E F E E E + E E F E id E E + id * + id id * + id id * + id id * + id id * + id * + id * + id + id + id + id + id id id id error, saltar + id está en FIR(E) error, M[F,+]=sinc F ha sido extraido de la pila PL. nálisis sintáctico 39 PL. nálisis sintáctico 40

Tipos de análisis deterministas. Análisis descendente. Tipos de análisis deterministas. Análisis ascendente. Análisis descendente

Tipos 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 detalles

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

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion 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 detalles

ANÁLISIS SINTÁCTICO I ANALIZADORES SINTÁCTICOS

ANÁ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 detalles

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

18 Análisis sintáctico III Compiladores - Profr. Edgardo Adrián Franco Martínez. Clasificación de métodos de análisis sintáctico Análisis descendente 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 detalles

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

Lenguajes 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 detalles

ANÁLISIS SINTÁCTICO. Comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática Generar el árbol sintáctico

ANÁ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

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

Definició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 detalles

Compiladores. 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 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 detalles

Análisis sintáctico Analizadores descendentes

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 detalles

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

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. UNIVERIDAD NACIONAL DE EDUCACIÓN A DITANCIA Escuela Técnica uperior de Ingeniería Informática Procesadores de Lenguajes Tema 3 Parte II Análisis intáctico Descendente Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Temas. Objetivo. Analizador Sintáctico: funciones y tipos. Analizador Sintáctico Descendente. Analizador Sintáctico Ascendente

Temas. 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 detalles

Recuperación de Errores

Recuperación de Errores Recuperación de rrores 1 Rutinas de Manejo de rrores Ocupan gran parte de los compiladores Objetivos Informar con claridad, exactitud Recuperación rápida recuperación no es corrección No debe retrasar

Más detalles

Se pueden agrupar las reglas que tienen la misma parte izquierda:

Se pueden agrupar las reglas que tienen la misma parte izquierda: GRAMÁTICA DE CONTEXTO LIBRE Gramática de contexto libre G = (V N, V T, P, S) que genera oraciones copulativas: V N = { , , , , V T = {el, la, hombre, niña,

Más detalles

Procesadores de Lenguaje

Procesadores 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 detalles

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

UNIVERSIDAD 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 detalles

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

Procesadores 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 detalles

Conceptos básicos sobre gramáticas

Conceptos 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 detalles

Analizadores sintácticos LR(0) y SLR

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 detalles

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas

Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas Clase 16: GLC s recursivas y no factorizadas Solicitado: Ejercicios 13: Recursividad y factorización de gramáticas M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom

Más detalles

Compiladores e Intérpretes Análisis Sintáctico

Compiladores 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 detalles

Proyecto Intermedio Algoritmo de Earley

Proyecto 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 detalles

Procesadores de Lenguaje

Procesadores 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 detalles

Compiladores: 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. 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 detalles

Tema 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 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 detalles

Tema 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 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 detalles

UNIVERSIDAD 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 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 detalles

Compiladores: 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. 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 detalles

Analizador Sintáctico Ascendente

Analizador 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 detalles

Lenguajes y Compiladores Análisis Sintáctico Parte II

Lenguajes 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 detalles

ANÁLISIS SINTÁCTICO PREDICTIVO NO RECURSIVO

ANÁ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 detalles

Analizador Léxico. Programación II Margarita Álvarez. Analizador Léxico - Funciones

Analizador 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 detalles

Parsing Top Down (Descendente)

Parsing 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 detalles

Análisis Sintáctico Descendente

Análisis Sintáctico Descendente Análisis Sintáctico Descendente p.1/65 Análisis Sintáctico Descendente Tema 4 Juan A. Botía Blaya juanbot@um.es http://ants.dif.um.es/staff/juanbot/traductores/traductores.html Departamento de Ingeniería

Más detalles

Unidad I: Análisis semántico

Unidad I: Análisis semántico Unidad I: Análisis semántico 1.1 Arboles de expresiones Los árboles de expresiones representan el código de nivel del lenguaje en forma de datos. Los datos se almacenan en una estructura con forma de árbol.

Más detalles

16 Análisis sintáctico I

16 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

Diseño de Compiladores I. Estructura General de un Compilador

Diseñ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 detalles

Objetivos Que el estudiante logre conocer, comprender y manejar conceptos y técnicas vinculados con el Analizador Léxico, para lo cual debe:

Objetivos 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 detalles

Compiladores: 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. 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 detalles

Tema 5. Análisis sintáctico ascendente

Tema 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 detalles

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Lenguajes 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 detalles

Tema 1: Introducción

Tema 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 detalles

Agenda. 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 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 detalles

ANÁLISIS SINTÁCTICO I GRAMÁTICAS

ANÁLISIS SINTÁCTICO I GRAMÁTICAS 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 detalles

Análisis sintáctico Analizadores ascendentes

Aná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 detalles

Tema 3. Análisis sintáctico descendente

Tema 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 detalles

FACULTAD 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 detalles

22, 23 y 24 Análisis sintáctico V Compiladores - Profr. Edgardo Adrián Franco Martínez

22, 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 detalles

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

17 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 detalles

Ciencias de la Computación I

Ciencias 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 detalles

TRADUCTORES E INTERPRETADORES

TRADUCTORES 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 detalles

Tema 1. Introducción

Tema 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 detalles

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

Á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 detalles

Generación de Código Intermedio

Generació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 detalles

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

El 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 detalles

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES LENGUAJES FORMALES

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES LENGUAJES FORMALES 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 detalles

Procesadores de lenguaje

Procesadores 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 detalles

UNIVERSIDAD DE GUADALAJARA

UNIVERSIDAD 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 detalles

Análisis Sintáctico Descendente

Análisis Sintáctico Descendente Análisis Sintáctico Descendente CI4721 Lenguajes de Programación II Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Análisis Sintáctico Descendente

Más detalles

TEMA 5 ANÁLISIS SINTÁCTICO DESCENDENTE

TEMA 5 ANÁLISIS SINTÁCTICO DESCENDENTE Universidad de Oviedo - Departamento de Informática Escuela Politécnica Superior de Ingeniería ANÁLISIS SINTÁCTICO EN PROCESADORES DE LENGUAJE TEMA 5 ANÁLISIS SINTÁCTICO DESCENDENTE Página 1 Objetivos

Más detalles

Análisis sintáctico 1

Aná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 detalles

Tema: Autómata de Pila

Tema: Autómata de Pila Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores 1 Tema: Autómata de Pila Contenido La presente guía aborda los autómatas de pila, y se enfoca en la aplicación que se le puede dar a estas

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

PROGRAMA DE LABORATORIO POS-REQUISITO: Primer Semestre 2019 Ing. Mario José Bautista Fuentes AUXILIAR: Nery Galvez

PROGRAMA DE LABORATORIO POS-REQUISITO: Primer Semestre 2019 Ing. Mario José Bautista Fuentes AUXILIAR: Nery Galvez UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 Organización de NOMBRE CURSO: Lenguajes y SECCIÓN: A Compiladores 1 ESCUELA:

Más detalles

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES 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 detalles

Procesadores de Lenguajes. Análisis sintáctico. Analizadores descendentes

Procesadores 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 detalles

Teoría de autómatas. Un enfoque práctico. Recortables. Thelma Cantú María Gpe. Mendoza

Teoría de autómatas. Un enfoque práctico. Recortables. Thelma Cantú María Gpe. Mendoza Teoría de autómatas. Un enfoque práctico Recortables Thelma Cantú María Gpe. Mendoza 1.1 Búsqueda de lenguajes Alumno: 1 Nombre del lenguaje Alfabeto: Dónde se utiliza? Cuál es el beneficio para la humanidad?

Más detalles

UNIVERSIDAD 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. 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 detalles

Procesadores de lenguaje Tema Análisis sintáctico (Parte II)

Procesadores 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 detalles

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores 18:55 1 2 Temas Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores Objetivo Que el estudiante logre conocer, comprender y manejar conceptos y técnicas

Más detalles

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

Más detalles

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

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores

Más detalles

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

ANÁ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 detalles

Ciencias de la Computación I

Ciencias 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 detalles

Introducción. El proceso de traducción

Introducción. El proceso de traducción Toda compilación es un proceso de transformación paulatina que convierte un programa escrito en un lenguaje fuente de alto nivel en otro programa escrito en un lenguaje objeto de bajo nivel. Ese proceso

Más detalles

Alfabetos y cadenas (1) Alfabetos y cadenas (2) Lenguajes. Propiedades de la concatenación:

Alfabetos y cadenas (1) Alfabetos y cadenas (2) Lenguajes. Propiedades de la concatenación: Alfabetos y cadenas (1) 0 b b 0 1 Alfabeto: Un alfabeto Σ es un conjunto finito y no vacío de símbolos. Cadena sobre un alfabeto Σ: Es una sucesión de caracteres tomados de Σ. Cadena vacía: Cadena sin

Más detalles

Gramáticas independientes del contexto TEORÍA DE LA COMPUTACIÓN LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

Gramáticas independientes del contexto TEORÍA DE LA COMPUTACIÓN LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I Gramáticas independientes del contexto TEORÍ DE L COMPUTCIÓN LENGUJES INDEPENDIENTES DEL CONTEXTO Y UTÓMTS DE PIL Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNM E-mail:

Más detalles

Sea G = (V N, V T, S, P) una gramática libre de contexto, un árbol es un árbol de derivación para G si:

Sea G = (V N, V T, S, P) una gramática libre de contexto, un árbol es un árbol de derivación para G si: 09:50 1 Temas Gramáticas libres de contexto Árbol de derivación Derivación más a la izquierda y más a la derecha Ambigüedad Factorización a izquierda Gramáticas propias Expresiones Regulares Objetivo Que

Más detalles

Las Gramáticas LL. Gramáticas con Parsing Eficiente. Universidad de Cantabria

Las Gramáticas LL. Gramáticas con Parsing Eficiente. Universidad de Cantabria Las (k) Las Gramáticas con Parsing Eficiente Universidad de Cantabria Outline Las (k) 1 Las (k) 2 3 Las (k) Formalizalización del Concepto LL Definición Una gramática libre de contexto G = (V, Σ, Q 0,

Más detalles

YACC (Yet Another Compiler Compiler) LALR(1) Parser Generator

YACC (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 detalles

AMBIENTES DE COMPILACION

AMBIENTES DE COMPILACION AMBIENTES DE COMPILACION Los compiladores a menudo producen como resultado del análisis semántico, una forma de representación intermedia del código fuente. Hoy en día, es cada vez más común que, en ambientes

Más detalles

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

CÓ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 detalles

ANÁLISIS SINTÁCTICO II LR1

ANÁ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 detalles

Unidad IV Análisis Sintáctico. M.C. Juan Carlos Olivares Rojas

Unidad 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 detalles

Universidad Nacional del Santa Facultad de Ingeniería E.A.P. de Ingeniería de Sistemas e Informática TEORIA DE COMPILADORES ANALISIS SINTACTICO

Universidad 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 detalles

Unidad 4. Autómatas de Pila

Unidad 4. Autómatas de Pila Unidad 4. Autómatas de Pila Una de las limitaciones de los AF es que no pueden reconocer el lenguaje {0n1n} debido a que no se puede registrar para todo n con un número finito de estados. Otro lenguaje

Más detalles

Más sobre gramáticas independientes de contexto o incontextuales

Má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 detalles

Compiladores e intérpretes Introducción

Compiladores e intérpretes Introducción Introducción Profesor: Eridan Otto Introducción Perspectiva histórica Motivación Definiciones Componentes y fases de un compilador 1 Introducción Definiciónes básicas Traductor: desde un punto de vista

Más detalles

LR(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 (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 detalles

Teoría de Autómatas y Lenguajes Formales Práctica 4

Teoría de Autómatas y Lenguajes Formales Práctica 4 Departamento de Tecnologías de la Información Área de Ciencias de la Computación e Inteligencia Artificial Teoría de Autómatas y Lenguajes Formales Práctica 4 1.- OBJETIVOS El objetivo de esta práctica

Más detalles

Aná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 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 detalles

Gramáticas Libres de Contexto

Gramáticas Libres de Contexto Gramáticas Libres de Contexto Pedro J. Álvarez Pérez-Aradros Rubén Béjar Hernández Departamento de Informática e Ingeniería de Sistemas C.P.S. Universidad de Zaragoza GramáticasLibresContrxto.ppt 29/03/2004

Más detalles

Aná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á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 detalles

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores

Lenguajes y Compiladores Aspectos Formales (Parte 1) Compiladores Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 1) 1 Aspectos Formales Los compiladores traducen lenguajes que están formalmente definidos a través de reglas que permiten escribir

Más detalles

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

Aná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 detalles

Horas teóricas: Horas practicas: Área de conocimiento a la que pertenece

Horas teóricas: Horas practicas: Área de conocimiento a la que pertenece PROGRAMA DE ESTUDIOS Área de formación a la que pertenece: TRADUCTORES DE ALTO NIVEL CARRERA LT Sustantiva Profesional Horas teóricas: Horas practicas: 2 2 Créditos: 6 Clave: F0353 Área de conocimiento

Más detalles

Analizador De léxico. V A R i : I N T E G E R ; \n...

Analizador 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 detalles

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA El objetivo de la práctica es desarrollar un compilador utilizando las herramientas flex y bison y el lenguaje

Más detalles

INTRODUCCIÓN A LOS LENGUAJES

INTRODUCCIÓN A LOS LENGUAJES INTRODUCCIÓN A LOS LENGUAJES 1 Definición de lenguaje 2 Lenguajes formales 2.1 Requisitos 2.2 Aplicaciones 2.3 Especificación 2.4 Gramáticas 2.4.1 Definición y Ejemplos 2.4.2 Ambigüedad 2.4.3 Clasificación

Más detalles