Вы находитесь на странице: 1из 10

ANLISIS SINTCTICO Y

MATRIZ PREDICTIVA
Avila Surez Lucero de Grecia
Contreras Garca Irvin Geovanni
Ledezma Alvarado Diego Osvaldo
Torres Martnez Moiss Jonathan

ANLISIS SINTCTICO DESCENDENTE

Es la construccin de un rbol de anlisis sintctico para la cadena de entrada,


partiendo desde la raz y creando los nodos del rbol de anlisis sintctico
Este es considerado como la bsqueda de una derivacin por la izquierda para
una cadena de entrada.

En cada paso de un anlisis sintctico descendente, el


problema clave es el de determinar la produccin que debe
aplicarse para un no terminal, por decir A
Esta seccin empieza con una forma general del anlisis
sintctico descendente, conocida como anlisis sintctico
de descenso recursivo, la cual puede requerir de un rastreo
hacia atrs para encontrar la produccin A correcta que
debe aplicarse

ANLISIS SINTCTICO DE DESCENSO


RECURSIVO

Consiste en un conjunto de procedimientos, uno para cada no terminal.


El descenso recursivo general puede requerir de un rastreo hacia atrs; es decir,
tal vez requiera exploraciones repetidas sobre la entrada. Sin embargo, raras
veces se necesita el rastreo hacia atrs para analizar las construcciones de un
lenguaje de programacin, por lo que los analizadores sintcticos con ste no se
ven con frecuencia. Incluso para situaciones como el anlisis sintctico de un
lenguaje natural, el rastreo hacia atrs no es muy eficiente, por lo cual se
prefieren mtodos tabulares como el algoritmo de programacin dinmico

Ahora expandimos A mediante la primera alternativa A a b para obtener el.


Al regresar a A, debemos restablecer el apuntador de entrada a la posicin 2, la
posicin que tena cuando llegamos por primera vez a A, lo cual significa que el
procedimiento para A debe almacenar el apuntador de entrada en una variable
local.

PRIMERO Y SIGUIENTE (FIRST FOLLOW).

La construccin de los analizadores sintcticos descendentes y


ascendentes es auxiliada por dos funciones, PRIMERO y SIGUIENTE,
asociadas con la gramtica G. Durante el anlisis sintctico
descendente, PRIMERO y SIGUIENTE nos permiten elegir la
produccin que vamos a aplicar, con base en el siguiente smbolo de
entrada.

PRIMERO

PRIMERO (), en donde es cualquier cadena de


smbolos gramaticales, como el conjunto de
terminales que empiezan las cadenas derivadas a
partir de . Si lm _, entonces _ tambin se
encuentra en PRIMERO (). Por ejemplo, en la figura
4.15, A lm c, por lo que c est en PRIMERO(A).

SIGUIENTE

SIGUIENTE (A), para l no terminal A, como el conjunto de terminales a que pueden aparecer
de inmediato a la derecha de A en cierta forma de frase; es decir, el conjunto de terminales
A de tal forma que exista una derivacin de la forma S Aa, para algunas y
Para calcular PRIMERO(X) para todos los smbolos gramaticales X, aplicamos las siguientes
reglas hasta que no pueden agregarse ms terminales o a ningn conjunto PRIMERO.

1. Si X es un terminal, entonces PRIMERO(X) = {X}.

2. Si X es un no terminal y X Y1Y2 Yk es una produccin para cierta k 1, entonces se


coloca a en PRIMERO(X) si para cierta i, a est en PRIMERO(Yi), y est en todas las
funciones PRIMERO(Y1), , PRIMERO(Yi1); es decir, Y1 Yi1 . Si _ est en
PRIMERO(Y j ) para todas las j = 1, 2, , k, entonces se agrega _ a PRIMERO(X). Por ejemplo,
todo lo que hay en PRIMERO(Y1) se encuentra sin duda en PRIMERO(X). Si Y1 no deriva a _,
entonces no agregamos nada ms a PRIMERO(X), pero si Y1 , entonces agregamos
PRIMERO(Y2), y as sucesivamente.

3. Si X es una produccin, entonces se agrega a PRIMERO(X).

MANEJO DE LOS ERRORES SINTCTICOS

El resto de esta seccin considera la naturaleza de los errores sintcticos y las


estrategias generales para recuperarse de ellos. Dos de estas estrategias,
conocidas como recuperaciones en modo de pnico y a nivel de frase, se
describirn con ms detalle junto con los mtodos especficos de anlisis sintctico.

Si un compilador tuviera que procesar slo programas correctos, su diseo e


implementacin se simplificara en forma considerable. No obstante, se espera que
un compilador ayude al programador a localizar y rastrear los errores que, de
manera inevitable, se infiltran en los programas, a pesar de los mejores esfuerzos
del programador.

Los errores sintcticos incluyen la colocacin incorrecta de los signos de punto y


coma, adems de llaves adicionales o faltantes; es decir, { o }. Como otro
ejemplo, en C o Java, la aparicin de una instruccin case sin una instruccin switch
que la encierre es un error sintctico (sin embargo, por lo general, esta situacin la
acepta el analizador sintctico y se atrapa ms adelante en el procesamiento,
cuando el compilador intenta generar cdigo).

Вам также может понравиться