Pila semántica en analizador sintáctico
La pila juega un papel fundamental en el desarrollo de cualquier analizador semántico. Dentro de cada elemento de la pila se guardan los valores que pueden tener una expresión.
Un analizador sintáctico ascendente utiliza una pila para guardar información acerca de los sub-árboles que ya han sido analizados.
Se pueden utilizar campos adicionales en la pila del analizador para guardar los valores de los atributos sintetizados. Tómese en cuenta un ejemplo de la pila de un analizador sintáctico con espacio para un valor de atributo. Sup-óngase que, la pila implanta mediante un par de matrices de estado y val. Cada entrada de estado es un apuntado (o índice) a una tabla de análisis sintáctico.
El tope en curso de la pila se indica con el apuntador tope. Se supone que los atributos sintetizados se evalúan justo antes de cada reducción.
El diseño ascendente se refiere a la identificación de aquellos procesos que necesitan computarizarse con forme vayan apareciendo, su análisis como sistema y su codificación, o bien, la adquisición de paquetes de software para satisfacer el problema inmediato.
Pila semántica
• Los problemas de integración entre los sub-sistemas son sumamente costosos y muchos de ellos no se solucionan hasta que la programación alcanza la fecha límite para la integración total del sistema.
• Se necesita una memoria auxiliar que nos permita guardar los datos intermedios para poder hacer la comparación.
Análisis Sintáctico
Analiza el símbolo,
la pila y el estado del autómata, produce las estructuras necesarias para la
siguiente etapa y en el caso de compilación dirigida por la sintaxis invoca
llamadas directas al analizador semántico y al generador de código. Escribe
mensajes de errores y trata de limitar el efecto de estos errores.
"Reconoce la estructura de una
cadena de componentes léxicos"
VENTAJAS
· Es posible el uso de la recursividad. La variable que llama al mismo procedimiento en el que está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacándolas, esto es posible a la implementación de pilas.
· Simplifican ciertas operaciones de programación. Se pueden implementar mediante arrays o listas enlazadas.
DESVENTAJAS
· Se tiene la limitación de que se debe reservar el espacio en memoria con anticipación. Una vez dado un máximo de capacidad a la pila no es posible insertar un número de elementos mayor que el máximo establecido.
· Si esto ocurre, en otras palabras si la pila está llena y se intenta insertar un nuevo elemento, se producirá un error conocido como desbordamiento-overflow.
· Se deben definir pilas de gran tamaño, pero esto resultará ineficiente y costoso.
· No siempre es viable saber con exactitud el número de elementos a tratar, y siempre existe la posibilidad de que ocurra el error de desbordamiento.
· Es posible el uso de la recursividad. La variable que llama al mismo procedimiento en el que está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacándolas, esto es posible a la implementación de pilas.
· Simplifican ciertas operaciones de programación. Se pueden implementar mediante arrays o listas enlazadas.
DESVENTAJAS
· Se tiene la limitación de que se debe reservar el espacio en memoria con anticipación. Una vez dado un máximo de capacidad a la pila no es posible insertar un número de elementos mayor que el máximo establecido.
· Si esto ocurre, en otras palabras si la pila está llena y se intenta insertar un nuevo elemento, se producirá un error conocido como desbordamiento-overflow.
· Se deben definir pilas de gran tamaño, pero esto resultará ineficiente y costoso.
· No siempre es viable saber con exactitud el número de elementos a tratar, y siempre existe la posibilidad de que ocurra el error de desbordamiento.
EJEMPLOS DE CÓMO TRABAJA LA
PILA SEMÁNTICA CON LAS EXPRESIONES REGULARES
Este ejemplo tendrá que aceptar cualquier fecha del
año 2011, esta fecha tendrá que ser válida (que lleve relación el mes con el
día)
No hay comentarios.:
Publicar un comentario