Sei sulla pagina 1di 3

PONTIFICIA UNIVERSIDAD CATOLICA DEL ECUADOR SEDE-IBARRA CARLOS RIVADENEIRA PROANO

COMPILADORES ANALIZADOR SINTCTICO ASCENDENTE Y DESCENDENTE ANLISIS SINTCTICO DESCENDENTE En ste analizador las entradas son de izquierda a derecha, y construcciones de derivaciones por la izquierda de una sentencia o enunciado. CARCTERISTICAS El 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. ANLISIS SINTCTICO ASCENDENTE El 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)). EL PAPEL DEL ANALIZADOR SINTCTICO En este modelo de compilador, el analizador sintctico obtiene una cadena de componentes lxicos del analizador lxico, y comprueba si la cadena puede ser generada por la gramtica del lenguaje fuente. Se supone que el analizador sintctico informar de cualquier error de sintaxis de manera inteligible. Tambin debera recuperarse de los errores que ocurren frecuentemente para poder continuar procesando el resto de su entrada. Los mtodos empleados generalmente en los compiladores se clasifican como descendentes o ascendentes. TRATAMIENTO DE ERRORES Correccin de errores: exige que el programa pueda ejecutarse. Suele utilizarse en sistemas que generan .EXE directamente, pues ahorra tiempo (permite encontrar errores de ejecucin a la vez que los de compilacin). Recuperacin de errores: slo trata de evitar que el nmero de mensajes de error sea demasiado grande y que el compilador/intrprete pueda seguir ejecutndose correctamente en instrucciones sucesivas. Correccin ortogrfica Errores ortogrficos tpicos:

Correccin de errores sintcticos Si se detecta al analizar la cadena xUy Donde x,y en A* y U en A es el prximo smbolo a analizar, podemos intentar lo siguiente:

poniendo z en la pila (si es anlisis bottom-up).

Recuperacin de errores de compilacin Conviene tener una sola rutina de recuperacin de errores separada del resto del compilador. Evitar que un solo error produzca varios mensajes. Ejemplo: A[i1,i2,...,i3], donde A no es un "array". Al abrir el corchete nos dar un error: "A no es un array". Al cerrar el corchete podra dar otro: "El nmero de ndices no coincide con el rango de A". Si se ha dado el primero, el segundo es innecesario. Una solucin: detectado el primer error, se sustituye la referencia a A por una referencia a un identificador "fantasma". La rutina de recuperacin de errores podra ignorar los mensajes que se refieren al identificador fantasma
Recuperacin de errores en un intrprete Hay que sealar el error y detener la ejecucin, permitiendo al programador riables

Y asegurarse de que todo sigue correctamente. En lenguaje simblico se puede manipular la pila de ejecucin, salir automticamente de rutinas pendientes, sin continuar la ejecucin, etc.

RBOLES SINTCTICOS rbol sintctico, para una oracin compuesta (el nio que me salud me odia) en la que la oracin subordinada es una oracin de relativo. Dada una oracin o construccin compleja esta puede dividirse en constituyentes sintcticos, cada uno de los cuales a su vez podra ser divisible o analizable en otros constituyentes. El conjunto de constituyentes sintcticos admite con la relacin binaria de inclusin (o "ser parte de") es un conjunto parcialmente ordenado. Un rbol sintctico es una representacin de las relaciones jerrquicas entre los constituyentes sintcticos. Ms formalmente, un rbol sintctico es una grafo que representa esta relacin de orden parcial.

Cuando en una construccin un constituyente X es parte de un constituyente inmediato de otro constitiyente ms grande Y, el rbol sintctico correspondiente tendr una lnea entre el nodo que representa a X y en nodo que representa a Y. Actualmente se acepta que toda lengua admite una anlisis mediante rboles sintcticos binarios. En los rboles grficos los ncleos sintcticos se suelen representar con una letra, por ejemplo X, seguida de un subndice (por ejemplo ), mientras que las estructuras ms complejas se sealan mediante una o dos barras superpuestas o mediante primas (por ejemplo, ) y si se trata de proyecciones mximas de un ncleo mediante la letras S antecediendo a la letra que designa al ncleo (por ejemplo SX)

Potrebbero piacerti anche