ANALIZADOR SINTACTICO

Slides:



Advertisements
Presentaciones similares
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico.
Advertisements

ANALIZADOR SINTACTICO
GRAMATICA LIBRE DE CONTEXTO
Análisis Sintáctico Ascendente
Análisis Sintáctico Capítulo 4.
Análisis Sintáctico Predictivo No Recursivo
Análisis Sintáctico Descendente
INSTITUTO TECNOLÓGICO DE MINATITLÁN
Filminas Segunda semana
Filminas Octava Semana CI-1322 Autómatas y Compiladores Elaborado por: Sergio Pastrana Espinoza A33888.
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes
Compiladores e intérpretes Análisis Sintáctico III
Gramáticas Libres de Contexto
Gramáticas.
Procesadores de Lenguaje
Análisis sintáctico (Look ahead LR)
Organización de Lenguajes y Compiladores 1
Analizadores Sintácticos Descendentes Predictivos
Unidad 3. Análisis Sintáctico
Analizador Léxico. 4 scanners:
Tema 1.- Lenguajes. Gramáticas
Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007
Traducción dirigida por la Sintaxis
ANALISIS SINTACTICO DESCENDENTE
2º curso Ingeniería Técnica en Informática de Sistemas UNED
Definición del lenguaje XML mediante una gramática
Tema 4. Gramáticas y Análisis Sintáctico PARSER
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Analizador sintáctico Prácticas EDI - © Juan Ramón Pérez1.
Teoría de lenguajes y compiladores
Analizador Sintáctico Descendente
Tema 1.- Lenguajes. Gramáticas
Tema 2 Lenguajes Formales.
Algoritmos para calcular el Conjunto Primero y el Conjunto Siguiente
Análisis sintáctico LR: SLR (LR simple)
Instituto Tecnologico de Durango Programacion de Sistemas II
Procesadores del Lenguaje
Lenguajes Independientes del Contexto
M.C. Juan Carlos Olivares Rojas
ANALISIS SINTACTICO Parte I
Diseño y análisis de algoritmos
Clasificación de Gramáticas y Manejo de Errores
Diseño y análisis de algoritmos
ANALISIS SINTACTICO ASCENDENTE
Teoría de lenguajes y compiladores
Todo traductor esta basado en una gramática para el lenguaje fuente. Todo traductor esta basado en una gramática para el lenguaje fuente. Una gramática.
Introducción al Análisis Sintáctico
Teoría de lenguajes y compiladores Analizadores lexicográficos
Compiladores e intérpretes Análisis Sintáctico III
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
(1+5*5)+(3*2); El análisis semántico en ANTLR se hace de forma descendente, por ello se va desarrollando el árbol completo desde el inicio para su explicación.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Programación de Sistemas
Compiladores e intérpretes
Analizadores LR(1) y LALR()
Autómatas de Pila (Pushdown Automatón)
Programación de Sistemas FEI – 2008
UNIVERSIDAD LATINA (UNILA)
1 Sebastián Argüello A60490 semana 3 Autómatas y compiladores CI-1322.
Teoría de lenguajes y compiladores
Autómatas y Compiladores Novena Semana. Ricardo Vargas Del Valle A35469.
Teoría de lenguajes y compiladores
Teoría de lenguajes y compiladores
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Semana #8 Kathryn Jones Pérez A Analizadores sintácticos LR Existen tres técnicas para construir tablas de análisis sintáctico LR para una gramática.
Programación de Sistemas
Autómatas y Compiladores Semana 13. Ricardo Vargas Del Valle A35469.
REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION SUPERIOR UNIVERSIDAD VALLE DEL MOMBOY CARVAJAL EDO. TRUJILLO ENERO 2014.
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Superior Universidad Valle del Momboy Carvajal, Trujillo Alumnas Luzmila.
Transcripción de la presentación:

ANALIZADOR SINTACTICO

Analizador Sintáctico Recursivo Descendente No Recursivo Analizador Sintáctico LR(1) SLR(1) Ascendente LALR(1)

Analizador Sintactico Descendente ¿Qué es el análisis descendente? El análisis sintáctico descendente es una técnica de análisis sintáctico que intenta comprobar si una cadena x pertenece al lenguaje definido por una gramática L(G) aplicando los siguientes criterios Partir del axioma de la gramática Escoger reglas gramaticales estratégicamente Hacer derivaciones por la izquierda (Left Most Derivation) Procesar la entrada de izquierda a derecha Obtener el árbol de análisis sintáctico o error

Analizador Sintáctico Descendente Cadena de derivación En cada paso de derivación se transforma siempre el no terminal más a la izquierda de la forma de frase E → E + E → n + E → n + E * E → n + n * E → n + n * n Árbol de análisis sintáctico Se parte del axioma gramatical y se van aplicando reglas estratégi-camente hasta alcanzar la frase X como nodos hojas del árbol E + n *

Analizador Sintáctico Descendente ¿Como se selecciona la regla de producción en cada paso de derivación? ¿Como se selecciona el siguiente no terminal a derivar? Analizadores con retroceso Se hace una búsqueda en profundidad con retroceso para garantizar que se encuentra la frase. Coste O (kn) Analizadores descendentes Se parte del axioma y se aplica una cadena de derivaciones para construir un árbol sintáctico Analizadores predictivos LL (1) Determinan que regla de producción aplicar en cada paso en función de token que se encuentra en cada momento en la cabeza de lectura Analizadores predictivos Se determina qué regla aplicara partir de un análisis de los primeros tokens a la entrada ANALIZADORES DETERMINISTAS Analizadores predictivos LL (k) Determinan que regla de producción aplicar en cada paso en función de los k primeros tokens que se encuentra en cada momento en la cabeza de lectura Analizadores ascendentes Se parte de los terminales y se construye la inversa de una derivación para intentar alcanzar el axioma

Análisis sintáctico descendente con retroceso En el análisis sintáctico con retroceso se van probando una por una todas las reglas candidatas a ser aplicadas para construir el árbol de análisis sintáctico. Cuando una regla seleccionada falla, entonces se retrocede y se prueba con la siguiente regla: Se selecciona un nuevo no terminal a derivar por la estrategia Left Most Derivation Se selecciona el conjunto de todas las reglas con antecedente igual al no terminal Se ordena el conjunto de reglas arbitrariamente Se selecciona una regla Se extrae la regla del conjunto Se aplica la derivación por dicha regla Si la regla encaja volver a 1 sino retroceder la derivación y volver a 4

Análisis sintáctico descendente predictivo Los analizadores sintácticos predictivos son capaces de decidir qué regla de producción aplicara cada paso en función de los elementos terminales que encuentran en la cabeza de lectura de la cadena de entrada. Como consecuencia se consigue un proceso de análisis con complejidad lineal O(n) con respecto al tamaño del problema. Estos analizadores son llamados genéricamente analizadores LL(K)

Análisis sintáctico descendente predictivo Analizadores predictivos LL (1) Determinan que regla de producción aplicar en cada paso en función de token que se encuentra en cada momento en la cabeza de lectura Analizadores predictivos Se determina qué regla aplicar a partir de un análisis de los primeros tokens a la entrada Analizadores predictivos LL (k) Determinan que regla de producción aplicar en cada paso en función de los k primeros tokens que se encuentra en cada momento en la cabeza de lectura

Análisis sintáctico descendente predictivo Conjuntos de predicción Para aplicar el análisis descendente predictivo LL(1) es necesario asociar a cada regla de producción un conjunto de predicción El conjunto de predicción de una regla está formado por la colección de todos los posibles terminales que es necesario encontrar en la cabeza de lectura para poder aplicar dicha regla De todas las reglas candidatas para el no terminal en curso se escoge aquella que contiene en su conjunto de predicción el terminal a la entrada

Análisis sintáctico descendente predictivo Condiciones LL (1) Para poder aplicar el análisis descendente predictivo LL(1) es necesario que se cumplan las condiciones LL(1) que garanticen la predictibilidad absoluta a la hora de seleccionar una regla de producción: Para poder aplicar el análisis predictivo LL (1) es necesario que los conjuntos de predicción de todas las reglas con un mismo antecedente sean disjuntas entre sí

Análisis sintáctico descendente predictivo Condiciones LL (1) Para cumplir las condiciones LL(1) la gramática debe satisfacer necesariamente 3 requisitos: No ambigua Factorizada por la izquierda No recursiva a izquierdas

Análisis sintáctico descendente predictivo Construcción de los conjuntos de predicción La construcción de los conjuntos de predicción de una regla A::=α se apoya en el uso de dos conjuntos asociados respectivamente a la parte derecha e izquierda de la regla: Devuelve el conjunto de todos los terminales que se pueden encontrar a la cabeza de cualquier derivación de la frase α Primeros (α) Devuelve el conjunto de todos los terminales que se pueden encontrar siguiendo a A en cualquier derivación posible Siguientes (A)

Análisis sintáctico descendente predictivo Conjuntos primeros Si α es una forma de frase compuesta por una concatenación de símbolos Primeros (α) es el conjunto de terminales incluyendo potencialmente que pueden aparecer iniciando las cadenas que derivan de α

Análisis sintáctico descendente predictivo Conjuntos Siguientes Si A es un símbolo no terminal de la gramática SIG(A) es el conjunto de terminales potencialmente incluyendo $1 que pueden aparecer a continuación de A en alguna forma de frase derivada del axioma

Calculo del Primero y Siguiente Reglas Generales Cálculo Primero: Si x es un terminal y esta al inicio de una producción Primero(α)={x} Si xλ, se añade λ al Primero(x) Si A UYZ, donde U es un No terminal, añadir Primero(U)=Primero(A) Cálculo Siguiente: Si S es el símbolo inicial de la gramática, $ (símbolo terminación de cadena) Siguiente =($) Si A  αBβ, Siguiente(B), se añade todo el Primero( β) , excepto λ Si A  αB o A  αBβ , donde β  λ,o Primero (β) contiene λ entonces Siguiente(B), se agrega el Siguiente(A)

Análisis sintáctico descendente predictivo Ejercicio Calcular el conjunto Primeros y conjunto Siguiente para todas las reglas de la siguiente gramática