Está en la página 1de 16

Anlisis Sintctico

Organizacin de Lenguajes y Compiladores 1 USAC

Guatemala, 2013

Anlisis Sintctico
Es la fase del analizador que se encarga de chequear el texto de entrada en base a una gramtica dada. Y en caso de que el programa de entrada sea vlido, suministra el rbol sintctico que lo reconoce.

Anlisis Sintctico
La tarea de este analizador es determinar si la entrada que recibi el analizador lxico puede ser derivada desde el smbolo inicial usando las reglas de una gramtica formal. En resumen es una funcin que toma como entrada la secuencia de tokens y salida el rbol sintctico.

Anlisis Sintctico

Tipos
Anlisis Sintctico Descendente Top-Down-Parser El rbol se construye partiendo de la raz. Anlisis Sintctico Ascendente

Bottom-Up-Parser
El rbol se genera partiendo de las hojas hasta alcanzar la raz.

Arboles de anlisis sintctico

Gramticas libres de contexto


Jerarqua de Chomsky:
G0 G1 G2

G3

L(G0)= Lenguajes recursivamente numerables o sin restricciones. L(G1)= Lenguajes sensibles al contexto. L(G2)= Lenguajes libres de contexto. L(G3)= Lenguajes regulares.

Gramticas libres de contexto


Son capaces de generar los lenguajes libres o independientes del contexto.

Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por un autmata de pila determinstico o no determinstico.

Gramticas libres de contexto


Como toda gramtica se definen mediante una cudrupla G = (N, T, P, S), siendo:
N es un conjunto finito de smbolos no terminales T es un conjunto finito de smbolos terminales

NT=
P es un conjunto finito de producciones

S es el smbolo inicial de la gramtica S (N T)

Gramticas libres de contexto


En una gramtica libre del contexto, cada produccin de P tiene la forma:
A N {S}

(N T)*- {}

Ejemplo
Gramtica que reconoce las operaciones aritmticas + y * .

Entrada: 3 + (2*6) + (2+5) * 8

Derivaciones
Derivacin por la izquierda: Derivacin donde solo el no terminal de ms a la izquierda de cualquier forma de frase se sustituye en cada paso. Derivacin por la derecha: Derivacin donde el no terminal ms a la derecha se sustituye en cada paso.

Ejemplo
Por ejemplo, para reconocer la cadena aabb. S AB |A A aAa |

B Bb
|b

Ambigedad
Una gramtica es ambigua si permite construir dos o ms rboles de derivacin distintos para la misma cadena. Por lo tanto, para demostrar que una gramtica es ambigua lo nico que se necesita es encontrar una cadena que tenga ms de un rbol de derivacin.

Manejo de errores
Ignorar el problema (Panic mode ): Consiste en ignorar el resto de la entrada hasta llegar a una condicin de seguridad. Recuperacin a nivel de frase: Intenta recuperar el error una vez descubierto.

Manejo de errores
Reglas de produccin adicionales para el control de errores: La gramtica se puede aumentar con las reglas que reconocen los errores ms comunes. Correccin Global : Dada una secuencia completa de tokens a ser reconocida, si hay algn error por el que no se puede reconocer, consiste en encontrar la secuencia completa ms parecida que s se pueda reconocer.

También podría gustarte