Está en la página 1de 5

Análisis sintáctico descendente

Es del tipo LL1 porque empezamos a derivando por la izquierda, y los carácteres son
leidos de izquierda a derecha, el 1 por que se lee 1 solo elemento de entrada.
También se puede considerar como un intento de construir un árbol de análisis
sintáctico para la entrada comenzando desde la raíz y creando los nodos del árbol en
orden previa.
Bueno primeramente para trabajar el análisis sintáctico descendente se debe realizar
primeramente algunas operaciones para que la gramática sea LL1 las cuales son:
- Eliminar Ambiguedad
- Eliminar Recursividad por la Izquierda
- Factorizar
- Primeros y siguientes
 Ambigüedad
Una gramática es ambigua cuando genera más de un árbol de derivación.
Para eliminar la ambigüedad se debe reescribir la gramática.

 Recursividad por la Izquierda
Una gramática es recursiva por la izquierda si tiene un no Terminal A tal que existe una
derivación A->Aα para alguna cadena . Es decir por simple observación podemos
identificar.

Para eliminar la recursividad por la izquierda se utiliza la siguiente formula.

Ejemplo:
Gramática Recursiva

 Ejemplo:

Prop => if Expr then Prop Else Prop

| while Expr do Prop

| begin lista_props end

 ¿Cómo elegir cuál usar?

 Se puede usar predictivo en cualquier gramática?

 Puede ser necesario hacer correcciones


 Eliminar recursión izquierda

 Factorizar por la izquierda

 Agrupar todos los prefijos comunes

 Prop => if Expr then Prop Else Prop

 | if Expr then Prop

 Con la gramática lista

 Para cada no terminal:

 Crear estado inicial y final

 Para cada producción A => X1X2...Xn

 Crear camino desde inicial hasta final

 Aristas X1, X2, ..., Xn

Análisis sintáctico Ascendente.

Parte de la cadena de entrada para construir la inversa de una derivación por la


derecha. Genera el árbol de análisis sintáctico partiendo de las hojas hasta alcanzar el
axioma

¿Cuando puede reducirse por una parte izquierda lo que parece ser la parte derecha
de una regla?

„ Puede haber partes derechas comunes

„ Puede haber producciones ε

R1. E := E + E

R2. E := id

id + id

id + id <- E + id <- E + E <- E

r2 r2 r13
„

También podría gustarte