Procesadores de Lenguaje

Documentos relacionados
Procesadores de Lenguaje

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

Autómatas de Pila y Lenguajes Incontextuales

AUTÓMATAS DE PILA Y LENGUAJES INDEPENDIENTES DEL CONTEXTO

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

Las Etapas de la Compilación

Unidad 4. Autómatas de Pila

GRAMATICAS LIBRES DEL CONTEXTO

Equivalencia Entre PDA y CFL

5 Autómatas de pila 5.1 Descripción informal. 5.2 Definiciones

Tema: Autómata de Pila

El Autómata con Pila: Transiciones

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

Expresiones Regulares y Derivadas Formales

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

Inducción en definiciones y demostraciones AUTÓMATAS Y LENGUAJES FORMALES PRELIMINARES MATEMÁTICOS. Números naturales. Inducción matemática

Un autómata con pila no determinista (APND) es una septupla Q A B F en la que

El Autómata con Pila

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Interrogación 2. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003

Autómatas de Pila. Descripciones instantáneas o IDs. El Lenguaje de PDA. Equivalencia entre PDAs y CFGs INAOE (INAOE) 1 / 50

Autómatas Finitos Deterministicos (DFA)

Construcción de tablas de análisis sintáctico LL(1)

Autómatas Mínimos. Encontrar el autómata mínimo. Universidad de Cantabria. Introducción Minimización de Autómatas Deterministas Resultados Algoritmo

Compiladores: Parsing ascendente

Gramáticas independientes del contexto. Tema 3: Lenguajes independientes del contexto. Derivaciones. Árbol de derivación

Tema 5 Lenguajes independientes del contexto. Sintaxis

Lenguajes y Gramáticas

Tema 3. Análisis sintáctico descendente

INAOE. Gramáticas Libres de Contexto. Definición formal de CFGs. Derivaciones usando. Derivaciones. izquierda y. derecha.

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

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

Computabilidad y Lenguajes Formales: Autómatas de Pila

Paso 1: Autómata. A 1 sin estados inútiles, que reconoce el lenguaje denotado por a a* b*

Autómatas Deterministas. Ivan Olmos Pineda

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Expresiones regulares, gramáticas regulares

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

Ingeniería en Computación. Autómatas y Lenguajes Formales. Unidad de competencia IV: Conocer, utilizar y diseñar gramáticas de libre contexto

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

Teoría de Lenguajes y Autómatas Conceptos y teoremas fundamentales

Nivel del ejercicio : ( ) básico, ( ) medio, ( ) avanzado.

Computabilidad y Lenguajes Formales: Autómatas Finitos

Gramáticas independientes del contexto AUTÓMATAS Y LENGUAJES FORMALES LENGUAJES INDEPENDIENTES DEL CONTEXTO Y AUTÓMATAS DE PILA. Otras definiciones I

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

3. Determinantes. Propiedades. Depto. de Álgebra, curso

Clase 17: Autómatas de pila

Teoría de Lenguajes. Clase Teórica 7 Autómatas de Pila y Lenguajes Independientes del Contexto Primer cuartimestre 2014

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales

Sumario: Teoría de Autómatas y Lenguajes Formales. Capítulo 2: Lenguajes Formales. Capítulo 2: Lenguajes Formales

Modelos Computacionales

LENGUAJES FORMALES Y AUTÓMATAS

Pregunta 1 [40 puntos] Diga si las siguientes afirmaciones son verdaderas o falsas, demostrando su respuesta.

PROGRAMA INSTRUCCIONAL AUTOMATAS Y LENGUAJES FORMALES

Temas. Objetivo. Que el estudiante logre: 1) Identificar conceptos constructivos de la Teoría de la Computabilidad. 2) Definir autómatas de pila.

RESOLUCIÓN DE SISTEMAS MEDIANTE DETERMINANTES

6. Autómatas a Pila. Grado Ingeniería InformáDca Teoría de Autómatas y Lenguajes Formales

Recopilación de ejercicios sobre expresiones regulares en exámenes de Compiladores e intérpretes

Espacios Vectoriales

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Teoría de Autómatas y Lenguajes Formales. Laura M. Castro Souto

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Práctica 3

Matemáticas. ticas Discretas. Lenguajes y Gramáticas. Tenemos dos clases de lenguaje: Lenguaje Formal

Texto: Hopcroft, J. E., Motwani, R., Ullman, J.D., Introduction to Automata Theory, Languajes, and Computation. 3rd Edition. Addison Wesley, 2007.

Capítulo 5: Traducción Dirigida por Sintaxis

Escribir la expresión regular de un número entero que no acepte que el primer dígito sea cero salvo el número 0. Solución: 0 [1-9][0-9]*

Cálculo numérico. Sistemas de ecuaciones lineales.

Capítulo 7: Expresiones Regulares

Introducción a Autómatas Finitos

PRÁCTICAS DE OPENOFFICE CALC

Minería de Datos. Árboles de Decisión. Fac. Ciencias Ing. Informática Otoño de Dept. Matesco, Universidad de Cantabria

Divisibilidad de un número real entre otro

2do. Parcial. Todos los ejercicios se entregarán en hojas separadas. El examen tipo test cuenta hasta 2 puntos sobre la nota total.

Tema 3: Análisis sintáctico descendente. Cómo funciona el analizador sintáctico?

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Grado en Ingeniería Informática Online, Curso Universidad Rey Juan Carlos

13.3. MT para reconocer lenguajes

Sistemas de ecuaciones lineales dependientes de un parámetro

Sistemas de ecuaciones lineales

4 o Ingeniería Informática

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

Teoría de Lenguajes. Gramáticas incontextuales

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

ANGULOS. La unidad de medida es el grado sexagesimal. La "circunferencia completa " mide 360º (grados sexagesimales). Además considere que.

Apéndice sobre ecuaciones diferenciales lineales

TEMA 1: GEOMETRÍA EN EL ESPACIO

1. (F, +) es un grupo abeliano, denominado el grupo aditivo del campo.

GENERADOR DE COMPILADORES BASADO EN

Matrices y determinantes. Sistemas de ecuaciones lineales

Superficies cuádricas

Unidad I: Análisis semántico

Alonso Ramírez Manzanares Computación y Algoritmos 10.03

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Transcripción:

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 Los analizadores descendentes: Corresponden a un autómata con pila determinista. Construyen un árbol sintáctico de la raíz hacia las hojas (del símbolo inicial hacia los símbolos terminales). Por ejemplo: el analizador LL o predictivo lee los datos de izquierda a derecha (Left to right) y construye la derivación izquierda (Leftmost). Emplea una pila para mantener un resumen de lo que espera ver a continuación hasta el final de los datos. La recursividad izquierda les puede causar problemas. Los analizadores ascendentes (shift-reduce): Corresponden a un autómata con pila determinista. Construyen un árbol sintáctico de las hojas hacia la raíz (de los terminales hacia el símbolo inicial de la gramática). Por ejemplo: los analizadores LR leen los datos de izquierda a derecha (Left to right) y construyen la derivación derecha (Rightmost). ( al revés ) Emplean una pila para mantener un resumen de lo que llevan visto hasta el momento. Son más eficientes con recursividad izquierda.

Planteamiento Suponemos que un analizador léxico nos proporciona el siguiente token cuando pedimos leer uno, o un token nulo (representado por $) en caso de fin de datos. (Algunas referencias incluyen también un nuevo símbolo inicial que deriva en el símbolo inicial seguido del marcador de fin de datos: S S $.) Idea clave: La entrada se deriva del símbolo inicial si y sólo si lo que queda por leer se deriva de lo que hay en la pila.

Herramientas conceptuales auxiliares Tres nociones importantes Sobre palabras formadas por símbolos de la gramática, tanto terminales como no terminales. Anulabilidad de una palabra, FIRST de una palabra (terminales por los que puede empezar una parte de la entrada que derive de esa palabra), FOLLOW de una palabra (terminales que pueden aparecer en una entrada válida justo a continuación de una parte de la entrada que derive de esa palabra).

AnulabilidadFIRSTFOLLOWUn ejemplo (Anulabilidad, FIRST y FOLLOW) Es decir, capacidad para desaparecer Una palabra es anulable si puede derivar en la palabra vacía. Palabras que contienen algún símbolo terminal: Nunca pueden derivar en la palabra vacía, porque un símbolo terminal que participa en una derivación ya no puede desaparecer de ella. Palabras que sólo contienen símbolos no terminales: λ es anulable; si α y β son anulables, αβ son anulables; si la gramática contiene una regla X α y α es anulable, X es anulable. Lo calculamos de manera iterativa, alternativamente para símbolos no terminales y para partes derechas de las reglas: nada es anulable hasta que se demuestra lo contrario. FIRST(α) = {a α puede derivar en aγ}, donde a es un símbolo terminal y α y γ son palabras formadas por símbolos terminales o no terminales.

Gramáticas y lenguajes LL(1) Definición Una gramática libre de contexto G = (V, Σ, S, P) es LL(1) si S lm wx γ wαγ lm wu, S lm wx δ wβδ lm wv, FIRST (u) = FIRST (v) implican α = β, donde u, v, w Σ y X V. Se dice sobre un lenguaje que es LL(1) si se puede generar con una gramática LL(1).

Ejemplos Gramáticas LL(1) G = ({S}, {(, )}, S, P = {S (S) λ}) En esta gramática es obvio que la primera producción se usa cuando aparece un paréntesis abierto y la segunda cuando aparece el primer paréntesis cerrado. G = ({S}, {a, b}, S, P = {S aab b, A asaa b}) Una gramática LL(2) que no es LL(1) G = ({S}, {a, b}, S, P = {S absba aa}) Ejemplo de lenguaje que no es LL(k) para ningún k L = {a n cb n n 1} {a n db 2n n 1}

El analizador LL descendente El analizador LL está utilizando: un buffer para la entrada una pila, con símbolos terminales y no terminales una tabla de análisis En cada paso, el analizador lee un símbolo del buffer y el símbolo que está en la cima de la pila. si coinciden, el analizador los elimina del buffer y de la pila si en la cima de la pila hay un símbolo terminal distinto, devuelve ERROR (la palabra no está aceptada) si en la cima de la pila hay un símbolo no terminal X, el analizador mira la tabla para ver que regla se debe aplicar, y substituye X por la parte derecha de esa regla. Al principio la pila contiene el símbolo inicial S y el símbolo especial $ (el fondo de la pila).

Ejemplo G = ({S, F }, {a, (, )}, S, P) con P dado por las reglas siguientes: 1. S F 2. S (S + F ) 3. F a Table: FIRST y FOLLOW Anulable FIRST FOLLOW S no a, ( +, $ F no a +, ), $ Table: Tabla de análisis ( ) a + $ S 2-1 - - F - - 3 - - Entrada: w = (a + a)

Tabla de análisis Para cada símbolo no terminal X y cada símbolo terminal a, añadimos la regla X α si: a FIRST(α), o α es anulable y a FOLLOW(X ) Si la tabla contiene a lo sumo una regla para cada una de sus celdas, entonces el analizador siempre sabe que regla se debe utilizar en cada momento.

La tabla de análisis es un autómata con pila Mode de acceptación: estado final Sea G = (V, Σ, S, P) una gramática LL(1). A = (Q, Σ {$}, Γ, δ, q 0, $, F ) Q = {q 0, q e, q f } {q x x Σ} Γ = V Σ {$} F = {q f } δ(q 0, x, x) = (q 0, λ) para todo x Σ δ(q 0, $, $) = (q f, λ) δ(q 0, x, y) = (q e, λ) para todo x, y Σ {$} con x y δ(q e, x, X ) = (q e, X ) para todo x Σ {$}, X Γ δ(q 0, x, X ) = (q x, α) si X α está en la fila X y columna x δ(q x, λ, X ) = δ(q 0, x, X ) para todo X Γ, x Σ

Conflictos FIRST/FIRST conflict (dos alternativas empiezan igual) A XB A X α X β B α β FIRST/FOLLOW conflict (el FIRST y el FOLLOW de un símbolo no terminal anulable tienen algo en común) S Aab S aab ab A a λ Recursividad izquierda E TZ E E + T T Z +TZ λ

Conflictos (II)

Recursividad Izquierda La bendición del análisis ascendente La maldición del análisis descendente: el recursivo entra en bucle. Garantiza ambigüedad en la tabla LL(1). Frecuentemente se puede resolver el problema cambiando un poco la gramática: E E α 1 E α 2... E α k E β 1 β 2... β m (donde las β no pueden derivar en nada que empiece por E) E es: (β 1 β 2... β m )(α 1 α 2... α k )* Z α 1 Z α 2 Z... α k Z λ E β 1 Z β 2 Z... β m Z