Está en la página 1de 33

Escuela de Ingeniería de Sistemas

CURSO: TEORÍA DE LENGUAJES Y


COMPILADORES
SESIÓN 17:
ANÁLISIS SINTÁCTICO LR SIMPLE

Mg. Julissa Reyna González


Email: jreyna@unheval.du.pe
ANÁLISIS SINTACTICO
FUNCIÓN DEL ANALIZADOR
SINTACTICO
ANÁLISIS SINTACTICO

Es el proceso de reconocer una cadena de entrada y asignarle una


estructura sintáctica. Para poder realizarlo es necesario especificar
algoritmos que utilicen las gramáticas de contexto libre para producir
árboles sintácticos. Se parte del símbolo inicial S, que se puede considerar
como un nodo del árbol de análisis, por debajo del cual el verbo principal
de S tiene todos sus argumentos.
SITUACIÓN EN EL MODELO DEL
COMPILADOR
CRITERIOS A CUMPLIR
IMPLEMENTACIÓN
EJEMPLO DE ANALIZADOR
SINTACTICO
El análisis como búsqueda

Un analizador sintáctico explora todos los posibles árboles de análisis, con el


objetivo de encontrar el árbol sintáctico correcto para una frase determinada. La
forma más simple de describir cómo en una gramática se puede derivar una
cadena es listar las cadenas de símbolos consecutivas, comenzando por el símbolo
inicial S y finalizando con la cadena y las reglas que se han aplicado para
obtenerla.
El análisis como búsqueda
El análisis como búsqueda
El análisis como búsqueda
EJEMPLO
Análisis top-down ( De arriba a abajo)

Este tipo de análisis construye el árbol En cada nivel o capa del espacio de
desde el nodo raíz hacia las hojas. búsqueda se utiliza el lado derecho
de las reglas para proporcionar
Comenzando en S, el algoritmo busca
nuevos conjuntos de posibles
todas las reglas gramaticales que tienen constituyentes, que se utilizan
a S en el lado izquierdo y construye sus recursivamente para generar el
árboles. resto de árboles.

Los árboles crecen hacia abajo hasta que se llega a las categorías
gramaticales que están en la parte inferior. Los árboles cuyas hojas
no se adapten a todas las palabras de la entrada se rechazan,
dejando sólo los árboles que representan un análisis correcto.
Análisis top-down ( De arriba a abajo)
ANÁLISIS Bottom-Up ( De abajo a arriba)

El analizador comienza con las El análisis comienza construyendo árboles


palabras de la entrada, y parciales con la categoría gramatical de
construye árboles a partir de ellas cada palabra. Si una palabra es
hacia arriba, aplicando una regla ambigua, el analizador debe considerar
cada vez. El análisis tiene éxito si todas las etiquetas gramaticales que se le
el analizador puede construir un puedan asignar.
árbol cuya raíz es el símbolo inicial
S y contiene todas las palabras de
la entrada Cada árbol del segundo nivel se expande buscando lugares en
el proceso de análisis dónde podría encajar la parte derecha
de una regla, al contrario que en el top-down, que expande los
árboles aplicando reglas cuando sus partes izquierdas encajan
con un no terminal que aún no se ha expandido
ANÁLISIS Bottom-Up ( De abajo a arriba)
ANÁLISIS Bottom-Up ( De abajo a arriba)
AMBIGÜEDAD

En las estructuras sintácticas que se utilizan en el análisis


se plantea un nuevo tipo de ambigüedad, la estructural.
Esta aparece cuando la gramática asigna más de un
posible análisis a una frase. Las dos formas más comunes
de este tipo de ambigüedad son la adjunta y la de
coordinación

Una frase tiene ambigüedad adjunta si uno de sus


constituyentes se puede adjuntar al árbol de análisis
sintáctico en más de un lugar. En la ambigüedad de
coordinación, se pueden unir distintos conjuntos de frases
mediante una conjunción como y.
AMBIGÜEDAD
Ejemplo Ambigüedad
AMBIGÜEDAD
AMBIGÜEDAD
AMBIGÜEDAD
AMBIGÜEDAD
AMBIGÜEDAD
Buscar en la superficie de la ambigüedad

Este enfoque de retroceso


Explorar todos los posibles árboles de análisis
expande el espacio de
en paralelo requeriría una cantidad de
búsqueda incrementalmente, a
memoria inimaginable para almacenarlos. Una
través de la exploración de un
posible alternativa a la exploración de espacios
estado cada vez. La elección del
de búsqueda complejos es utilizar una
estado a expandir se puede
estrategia de retroceso basada en agenda,
hacer con métodos como primero
similar a la que se utiliza en los transductores.
en profundidad o primero en
anchura, o con métodos más
complejos que utilizan
procedimientos probabilísticos o
semánticos.
Métodos de análisis de programación dinámica

Estos métodos resuelven el problema de la ambigüedad gracias a los algoritmos de


Minimum Edit Distance, Viterbi y Forward

Su eficiencia radica en que estos sub-árboles se


descubren una sola vez, se almacenan, y
después se utilizan en todos los análisis en los
que aparezca ese constituyente. Los tres
métodos más utilizados son el algoritmo Cocke-
Kasami-Younger (CKY), el algoritmo de Earley y
el análisis gráfico
REFORZANDO EL TEMA DE HOY

http://arantxa.ii.uam.es/~alfonsec/docs/compila4.htm
ACTIVIDAD ASINCRÓNICA
LECTURA ASINCRONICA:
TRABAJO GRUPAL:
ELABORA UN ORGANIZADOR GRÁFICO SOBRE LA LECTURA ANÁLISIS SINTACTICO
COMPARTE EL ENLACE DE TU TRABAJO EN EL AULA VIRTUAL.
FECHA DE PRESENTACIÓN: 09/06/2021
REFERENCIAS

Aho, Lam, Sethy, Ullman (2008). Compiladores principios, técnicas y herramientas.


Kenneth C. Louden (2004). Construcción de compiladores. Alfonseca.
Ortega, Pulido (2006). Compiladores e intérpretes.
Brookshear J.(1989). Teoría de la computación, lenguajes formales, autómatas y
complejidad.
Augusto Cortez Vásquez.(2005). Lenguajes y traductores.

También podría gustarte