ANÁLISIS SINTÁCTICO

4
ANÁLISIS SINTÁCTICO DESCENDENTE En éste analizador las entradas son de izquierda a derecha, y construcciones de derivaciones por la izquierda de una sentencia o enunciado. CARÁCTERISTICAS 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. Parte del axioma de la gramática. Procesa la entrada de izquierda a derecha. Escoge reglas gramaticales. Bueno primeramente para trabajar el análisis sintáctico descendente se debe realizar primeramente algunas operaciones para que la gramática sea LL1 las cuales son: – ELIMINAR AMBIGUEDAD: Para eliminar la ambigüedad se debe reescribir la gramática. – ELIMINAR RECURSIVIDAD POR LA IZQUIERDA: Una gramática es recursiva por la izquierda si tiene un nodo Terminal a tal que existe una derivación A->Aα para alguna cadena . Es decir por simple observación podemos identificar. Para eliminar la recursividad por la izquierda se utiliza la siguiente formula. – Factorizar: Se trata de rescribir las producciones de la gramática con igual comienzo para retrasar la decisión hasta haber visto lo suficiente de la entrada como para elegir la opción correcta.

description

analizador sintactico ascendente y descendente

Transcript of ANÁLISIS SINTÁCTICO

ANLISIS SINTCTICO DESCENDENTEEn ste analizador las entradas son de izquierda a derecha, y construcciones de derivaciones por la izquierda de una sentencia o enunciado.CARCTERISTICASEl anlisis sintctico descendente (ASD) intenta encontrar entre las producciones de la gramtica la derivacin por la izquierda del smbolo inicial para una cadena de entrada.Parte del axioma de la gramtica.Procesa la entrada de izquierda a derecha.Escoge reglas gramaticales.Bueno primeramente para trabajar el anlisis sintctico descendente se debe realizar primeramente algunas operaciones para que la gramtica sea LL1 las cuales son: ELIMINAR AMBIGUEDAD: Para eliminar la ambigedad se debe reescribir la gramtica. ELIMINAR RECURSIVIDAD POR LA IZQUIERDA: Una gramtica es recursiva por la izquierda si tiene un nodo Terminal a tal que existe una derivacin A->A para alguna cadena . Es decir por simple observacin podemos identificar.Para eliminar la recursividad por la izquierda se utiliza la siguiente formula.

Factorizar: Se trata de rescribir las producciones de la gramtica con igual comienzo para retrasar la decisin hasta haber visto lo suficiente de la entrada como para elegir la opcin correcta.

Ejemplo:

Anlisis Sintctico Descendente Con Retroceso.El mtodo parte del axioma inicial y aplica todas las posibles reglas al no terminal ms a la izquierda. Se usa el retroceso para resolver la incertidumbre. Sencillo de implementar. Muy eficiente.Ejemplo:

Anlisis Sintctico Descendente Predictivo (Asdp)El analizador debe realizar la previsin de la regla a aplicar slo con ver el primer smbolo que produce para que el algoritmo tenga una complejidad lineal.Las gramticas que son susceptibles de ser analizadas sintcticamente de forma descendente mediante un anlisis predictivo y consultando un nicamente un smbolo de entrada pertenecen al grupo LL(1).A partir de gramticas LL(1) se pueden construir analizadores sintcticos descendentes predictivos (ASDP), que son ASD sin retroceso.Ejemplo:

ANLISIS SINTCTICO ASCENDENTEEl objetivo de un anlisis ascendente consiste en construir el rbol sintctico desde abajo hacia arriba, esto es, desde los tokens hacia el axioma inicial, lo cual disminuye el nmero de reglas mal aplicadas con respecto al caso descendente (si hablamos del caso con retroceso) o ampla el nmero de gramticas susceptibles de ser analizadas (si hablamos del caso LL(1)). Anlisis ascendente con retrocesoAl igual que ocurra con el caso descendente, este tipo de anlisis intenta probar todas las posibles operaciones (reducciones y desplazamientos) mediante un mtodo de fuerza bruta, hasta llegar al rbol sintctico, o bien agotar todas las opciones, en cuyo caso la cadena se rechaza.En el anlisis con retroceso no se permiten las reglas , puesto que estas se podrn aplicar de forma indefinida. Anlisis Ascendente sin Retroceso El anlisis ascendente sin retroceso busca una derivacin derecha de la cadena de entrada de forma determinista. Este se sustenta en su aplicacin a las gramticas LR(K). La L viene de la lectura de la cadena de entrada de izquierda a derecha. La R de producir un rbol de derivacin derecho. La k indica el nmero de smbolos que es necesario leer a la entrada para tomar la decisin de qu produccin emplear. Un parser del tipo shift-reduce puede verse como un autmata de pila determinista extendido que realiza el anlisis de abajo hacia arriba. Dada una cadena de entrada w, simula una derivacin ms a la derecha.Cul es su diferencia? En el anlisis sintctico descendente: se construye el rbol sintctico arriba hacia abajo y se utiliza ms reglas. En el anlisis sintctico ascendente: se construye el rbol sintctico de abajo hacia arriba, lo cual disminuye el nmero de reglas mal aplicadas con respecto al caso descendente.