You are on page 1of 5

UNIVERSIDAD TCNICA DEL NORTE

FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS


C. INGENIERA EN SISTEMAS COMPUTACIONALES

Analizador Sintctico Descendente


Recursivo (ASDR)
Matango Wilman, Maritza Paspuezan, Ponce Erika

Ibarra, 18 diciembre 2017

Universidad Tcnica del Norte

Introduccin

El anlisis sintctico descendente con retroceso provee encontrar entre las


producciones de la gramtica, la derivacin por la izquierda, el smbolo inicial para
una cadena de entrada. Tambin se puede considerar como un intento de
construir un rbol de anlisis sintctico para la entrada comenzando desde la raz
y creando los nodos del rbol en orden previo.

Objetivos

Conocer el funcionamiento de un analizador sintctico y examinar los


conceptos del mismo en una gramtica libre de contexto.
Estudiar el anlisis descendente y qu mtodos podemos aplicar
dependiendo de la gramtica dada.
Identificar los posibles inconvenientes de usar el anlisis descendente.

Marco terico.

El anlisis sintctico descendente es un proceso dentro de la fase de


anlisis sintctico de un compilador, este anlisis se compone de los siguientes
tipos, enfocndonos en el analizador sintctico recursivo:
Tipos de analizadores sintcticos
Descendentes (Top-Down): Parten del axioma y emplean las reglas de la
gramtica hasta llegar a secuencia de smbolos terminales (tokens):
Analizadores LL(1)
Analizadores recursivos
UNIVERSIDAD TCNICA DEL NORTE
FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS
C. INGENIERA EN SISTEMAS COMPUTACIONALES

Ascendentes (Bottom-Up): Parten de las hojas (conjunto de tokens) para llegar a


la raz (axioma de la gramtica):
Analizadores de Precedencia de Operador
Analizadores LR(1)
Es un mtodo de anlisis sintctico descendente que analiza cadena o
tokens de entrada mediante bsqueda de los pasos en una derivacin por la
izquierda. Denominndose descendente debido a la forma en que se construye el
rbol gramatical desde la raz hacia las hojas.[1]
Son un tipo especial de ASDP y por tanto slo pueden analizar gramticas LL (1).
Se trata de implementar tantas funciones recursivas como no terminales de la
gramtica. Para cada no terminal se crea una funcin recursiva. Construyen
rboles de anlisis sintctico de arriba (raz) hacia abajo (hojas). [2]

Gramticas LL (1).
Una gramtica independiente del contexto G(N, T, P, S) se denomina gramtica
LL (1) si tiene las siguientes caractersticas:
C1) Para cada produccin
A 1 | 2 | 3 | | n
Se requiere: Primero (i) Primero (i) = Para todo i <> j
C2) si puede derivarse la cadena vaca () de un smbolo no terminal X,

Se requiere que: Primero(X) Siguiente(X) =


Una gramtica cuya tabla de anlisis sintctico no tiene entradas con definiciones
mltiples se define como LL (1).
Un recurso es transformar la gramtica eliminando la recursin por la izquierda y
factorizando por la izquierda siempre que sea posible, con la esperanza de
producir una gramtica para la cual la tabla de anlisis sintctico no tenga
entradas con mltiples definiciones. [3]

La primera L significa que la entrada ser leda de izquierda a derecha y la


segunda L indica derivaciones por la izquierda.
Smbolo de preanlisis
Esta metodologa es aplicable a las gramticas LL (1) es porque basta ver
un nico token para saber qu hacer. Ese token se llama smbolo de preanlisis
o LookAhead y ser pedido al analizador lxico cada vez que se necesite. Este
token el que se busque en los conjuntos de prediccin.
UNIVERSIDAD TCNICA DEL NORTE
FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS
C. INGENIERA EN SISTEMAS COMPUTACIONALES

Funcin de emparejamiento (Match)


Se comprueba si el smbolo de preanlisis coincide con el terminal de la
gramtica que, de acuerdo con los elementos de la produccin escogida debera
aparecer en esa posicin. Tambin se encarga de la peticin del siguiente token
al analizador lxico si se da la coincidencia o invoca a la funcin de error en caso
contrario.
Para poder implementar un ASDR, es necesario que el lenguaje de
implementacin admita la recursin.
En un ASDR, se debe disear una funcin para cada no terminal de la gramtica
Se utiliza una funcin auxiliar para emparejar terminales Cuando se tiene que
derivar un no terminal, se llama a la funcin asociada a ese no terminal, y es la
funcin la que se encarga de analizar el sublenguaje generado por dicho no
terminal.[1]

Estructura de un analizador sintctico descendente recursivo.


Se asocia un procedimiento a cada no terminal de la gramtica.
El rbol sintctico esta dado implcitamente por la secuencia de llamadas a
procedimientos.[1]

Algoritmo para construir un ASDR


En los siguientes puntos se describir como como construir un ASDR:[4]
1. Escribir una funcin por cada smbolo no terminal de la gramtica. Cada
una llevar a cabo el anlisis de las producciones de dicho no terminal.
2. Cuando este no terminal tenga distintas alternativas, para decidir durante
su ejecucin cul de las producciones utilizar, se optar por aquella
alternativa a cuyo conjunto de prediccin pertenezca el token de
preanlisis.
EN CASO DE QUE Preanlisis PERTENEZCA A
PREDICT (a1): ... proceder segn alternativa a1...
PREDICT (a2): ... proceder segn alternativa a2...
FIN

Si el token de preanlisis no pertenece a ninguno de los PREDICT,


entonces se considerar error sintctico.
UNIVERSIDAD TCNICA DEL NORTE
FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS
C. INGENIERA EN SISTEMAS COMPUTACIONALES

3. Si una de las alternativas para el no terminal que se est analizando es la


cadena vaca (A ), en ese caso no se har nada.
4. Para analizar cada alternativa, se aplican distintas metodologas a los
smbolos de la parte derecha de la produccin, en el mismo orden en el que
aparecen, segn si son terminales o no: - Para cada A N hacemos una
llamada a su funcin correspondiente. - Para cada a T hacemos una
llamada a la funcin Emparejar con a como parmetro.
5. La invocacin o puesta en marcha del ASDR se realiza mediante una
llamada al smbolo inicial de la gramtica. Para hacer esa llamada se
supone que el token de preanlisis habr sido inicializado por una llamada
previa al analizador lxico.

Ejemplo

Desarrollar una aplicacin (ASDR) en Java para que reconozca los lenguajes
con gramticas independientes del contexto
Gramtica 1
S->zMNz
M->aMa|z
N->bNb|z
Gramtica 2
S->X|Y|LAMNDA
X->xX|x
Y->xYy|xy
Gramtica 3
S->xSz|ySz| lamnda

Conclusiones

En este informe se argumenta el funcionamiento de un analizador sintctico


usando el anlisis descendente.
Observamos que el anlisis descendente tiene algunos mtodos que
podemos aplicar dependiendo de la gramtica dada como por ejemplo: el
Anlisis descendente con retroceso, el Anlisis descendente de gramticas
LL (1).
Se concluye que al usar este tipo de anlisis se pueden encontrar ciertos
inconvenientes en el caso de que exista recursividad.
UNIVERSIDAD TCNICA DEL NORTE
FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS
C. INGENIERA EN SISTEMAS COMPUTACIONALES

Bibliografa
[1] notasCompiladores.pdf. .
[2] Anlisis sintctico descendente - Apuntes - Construccin de compiladores - Parte1. [En lnea]. Disponible en:
https://www.docsity.com/es/analisis-sintactico-descendente-apuntes-construccion-de-compiladores-
parte1/332332/. [Accedido: 18-dic-2017].
[3] Jacinto Ruiz Cataln, COMPILADORES Teora e implementacin. Madrid: Grupo Ramrez Cogollor, S.L. (Grupo
RC).
[4] tictema1.pdf. .

You might also like