You are on page 1of 4

ANÁLISIS SINTÁCTICO DESCENDENTE Y ANÁLISIS SINTÁCTICO ASCENDENTE

ANÁLISIS DESCENDENTE: EL AUTÓMATA PREDICE/CONCUERDA

El análisis sintáctico descendente (ASD) intenta encontrar entre las producciones de la gramática la
derivación por la izquierda del símbolo inicial para una cadena de entrada.

ANÁLISIS ASCENDENTE: EL AUTÓMATA DESPLAZA/REDUCE

Analisis ascendente: se construye el árbol de analisis sintáctico de la cadena de entrada desde las hojas hasta
la raíz. En las hojas tenemos la cadena a analizar (los símbolos terminales) que se intentan reducir al axioma,
que se encontrara en la raíz, si la cadena es correcta sintácticamente.

¿Cómo construir el árbol?

Se trata de desplazarse en la entrada hasta encontrar una subcadena de símbolos que represente la parte
derecha de una producción, en ese momento sustituimos esa subcadena por el no-terminal de la parte izquierda
correspondiente de la producción, la reducimos.

Ejemplo: Supongamos la siguiente gramatica que permite generar expresiones aritméticas donde aparece el
operador suma y potencia y combinar números e identificadores.

EE + E

EE^E

Eid

Enum

Para la entrada id + id + id
Nos restringimos al caso de métodos deterministas (no hay vuelta atrás) analizando un solo símbolo de pre
análisis sabemos exactamente en todo momento que acción realizar: bien desplazarnos en la entrada o bien
aplicar una reducción. En el caso de una reducción debemos saber de forma única que producción aplicar.

Los métodos ascendentes se caracterizan porque analizan la cadena de componentes léxicos de izquierda a
derecha, obtienen la derivación mas a la derecha y el árbol de derivación se construye desde la raíz hasta las
hojas.

Diferencia entre Análisis Sintáctico Descendente, Análisis Sintáctico Ascendente:

Descendente: En este tipo de analisis, se va recorriendo el árbol sintáctico desde la raíz hasta las hojas,
llegando a generar la sentencia que se está analizando. La raíz representa el símbolo inicial de la gramatica.

Ejemplo:

 “cad”, se toma la primera producción.

Gramática
Sc A d
Aa b
Aa

 “Cad”, se toma la segunda producción.


 Siguiente hoja del árbol A, cabd
Gramática
Sc A d
Aa b
Aa

 “Cad”, se compara con la siguiente hoja del árbol etiquetada con b . Como no concuerda,
se indica el error y se vuelve a A para ver si hay otra alternativa no intentada.
Gramática
Sc A d
Aa b
Aa

 “cad”, se toma la siguiente alternativa que comienza por a.


 siguiente hoja del árbol A,cad

Gramática
Sc A d
Aa b
Aa

 “cad”, coincide d con d  análisis exitoso


Gramática
Sc A d
Aa b
Aa

Ascendente: Se parte de las hojas y se intenta construir el árbol hacia arriba asta llegar al símbolo inicial de la
gramatica

Por ejemplo, si quisiéramos reconocer “id + id + id”, partiendo de la gramática del cuadro se comenzaría a
construir el árbol sintáctico a partir del árbol vacío (α = ε) y con toda la cadena de entrada por consumir (β =
id + id + id):

y tras consumir el primer token:

y ahora podemos aplicar la regla 5 hacia atrás, con lo que α es F:

a lo que ahora se puede aplicar la regla 4, produciendo:

a lo que ahora se puede aplicar la regla 4, produciendo:

Así, poco a poco se va construyendo el árbol:


Como puede verse, á representa al árbol sintáctico visto desde arriba conforme se va construyendo
ascendentemente: α es una forma sentencial ascendente

BIBLIOGRAFIA

Analisis sintáctico ascendente [en línea]


[http://informatica.uv.es/docencia/iiguia/asignatu/2000/PL/2007/tema5.pdf]

Análisis sintáctico descendente [en línea]


[http://www2.uah.es/jcaceres/uploaded/teoria/LenguajesProgramacion/tema4.pdf]

You might also like