Você está na página 1de 7

La siguiente fase en la construccin del analizador es la fase de

anlisis sintctico. Esta toma como entrada el flujo de terminales y


construye como salida el rbol de anlisis sintctico abstracto. El rbol
de anlisis sintctico abstracto es una representacin compactada del
rbol de anlisis sintctico concreto que contiene la misma informacin
que ste.
Existen diferentes mtodos de anlisis sintctico. La mayora caen en
una de dos categoras: ascendentes y descendentes.

Los ascendentes construyen el rbol desde las hojas hacia la raz.
Los descendentes lo hacen en modo inverso. El que describiremos
aqu es uno de los mas sencillos: se denomina mtodo de anlisis
descendente recursivo.

La idea del anlisis sintctico descendente es muy simple. observamos la
regla gramatical para un no terminal A como un definicin para un
procedimiento que reconocer una A. El lado derecho de la regla gramatical
para A especifica la estructura del cdigo para este procedimiento: la
secuencia de terminales y no terminales es una seleccin corresponde a
concordancias de la entrada y llamadas a otros procedimientos, mientras
que las selecciones corresponden a las alternativas(sentencias case o ir)
dentro del cdigo.
Como primer ejemplo consideramos la gramtica siguiente:

exp exp opsuma term| term
opsuma + | -
term term opmult factor| factor
opmult *
factor (exp) | nmero
Un programa de anlisis sintctico descendente recursivo
consiste en un conjunto de procedimientos, uno para cada no
terminal. La ejecucin empieza con el procedimiento para el
smbolo inicial, que se detiene y anuncia que tuvo xito si el
cuerpo de su procedimiento explora toda la cadena completa
de entrada.

se puede considerar el dar como un intento de encontrar una
derivacin por la izquierda 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.


Cada smbolo no terminal genera una funcin

En esta funcin se selecciona la regla de
produccin a ejecutar en funcin del valor del
siguiente token.

La pila se sustituye implcitamente por la pila de
llamadas

Este Analizador Sintctico Recursivo Descendente
realiza las siguientes acciones:

Establece la produccin a utilizar analizando el
smbolo terminal de entrada.
Para cada no terminal, se llama a un mtodo que
esta relacionado con este.
Una gramtica recursiva por la izquierda puede
hacer que un analizador sintctico descendente
recesivo, incluso uno con retroceso, entre en un
lazo infinito. Es decir, cuando se intenta expedir a,
puede que de nuevo se est intentando expandir
a sin hacer consumido ningn smbolo de entrada.

Você também pode gostar