Anda di halaman 1dari 11

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Tema 5 Anlisis Sintctico Ascendente


5.1 Estrategia Ascendente y Mtodos de Anlisis Ascendente. 5.2 Mtodo de Reduccin y Desplazamiento. 5.3 Anlisis Ascendente Predictivo de Precedencia de Operador. 5.3.1 Lenguajes de Precedencia de Operador. 5.3.2 Tabla de Precedencia de Operador. 5.3.3 Mtodos para Obtener la Relacin de Precedencia de Operador. 5.4 Anlisis Ascendente Predictivo de Precedencia Simple. 5.4.1 Concepto de Pivote y Relacin de Precedencia. 5.4.2 Tabla de Precedencia Simple. 5.5 Tratamiento de Errores en Anlisis de Precedencia.

Contenidos

12/02/2009

Lenguajes y Sistemas Informticos

Pgina 1

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.1 Estrategia Ascendente y Mtodos de Anlisis Ascendente


Objetivo: Comprobar si una secuencia de smbolos pertenece a un lenguaje L(G), aplicando reducciones sobre la cadena de entrada en base a las producciones de la gramtica hasta alcanzar el smbolo inicial de la gramtica.
S


secuencia de smbolos

Mtodos de Anlisis Ascendente:


Mtodo de Reduccin-Desplazamiento (no predictivo). Mtodos Predictivos: Anlisis de Precedencia de Operador. Anlisis de Precedencia Simple. Anlisis LR.

Lenguajes y Sistemas Informticos

Pgina 2

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.2 Mtodo de Reduccin y Desplazamiento


Se basa en una mquina de pila donde: El alfabeto de la pila est formado por los smbolos terminales y no terminales. El alfabeto de entrada est formado por los smbolos terminales. La funcin de transicin se define en base a las siguientes acciones sobre la pila: { Desplazar, Reducir, Aceptar, Error } Parte de la secuencia de smbolos de la entrada. El proceso de anlisis consiste en ir explorando el tope de la pila y los elementos siguientes en la pila hasta encontrar una subcadena que coincida con la parte derecha de una produccin dada A . Si se encuentra en la pila, entonces se sustituye por A en el tope de la pila. A este proceso se le denomina reduccin. Y el proceso de pasar smbolos de entrada al tope de la pila se llama desplazamiento. Problemas: Que existe ms de una produccin para aplicar reduccin (conflicto reduce/reduce). Incertidumbre si es posible aplicar desplazamiento en vez de reduccin (conflicto desplaza/reduce). Siempre es posible aplicar desplazamiento, ampliando las posibles subcadenas en el tope de la pila suceptibles de ser reducidas en base a un mayor nmero de producciones. Qu accin es la ms apropiada?.
Lenguajes y Sistemas Informticos

Pgina 3

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Descripcin Funcional del Mtodo de Reduccin y Desplazamiento (1)

Descripcin funcional: Sea D la descripcin instantnea de la mquina de pila representada por la terna que forman el estado de la pila, la secuencia de entrada y las producciones aplicadas.

Lenguajes y Sistemas Informticos

Pgina 4

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Descripcin Funcional del Mtodo de Reduccin y Desplazamiento (2)


Si representamos las acciones de la siguiente forma, tenemos las siguientes situaciones:

Lenguajes y Sistemas Informticos

Pgina 5

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Ejemplo 5.1: Sea G una gramtica definida por las producciones siguientes:

Y sea la cadena de entrada id+id*id, el anlisis sintctico ascendente segn el mtodo general de reduccin y desplazamiento es el siguiente: Entrada

PROBLEMA: CUANDO PODEMOS APLICAR MS DE UNA ACCIN ANTE UN SMBOLO DE ENTRADA Y NO SE ALCANZA EL SMBOLO INICIAL DE LA GRAMTICA, ENTONCES PUEDE SER NECESARIO APLICAR VUELTA ATRS (RETROCESO).

Lenguajes y Sistemas Informticos

Pgina 6

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.3 Anlisis Ascendente Predictivo de Precedencia de Operador


Resuelve la accin alternativa (ante posibles conflictos desplaza/reduce) en base a criterios de precedencia entre operadores. El anlisis de precedencia de operador es aplicable a lenguajes definidos por gramticas con las siguientes restricciones: 1. No podrn aparecer dos smbolos no terminales consecutivos en las producciones. 2. No podrn existir producciones a la cadena vaca. 3. Las relaciones de precedencia deben ser disjuntas. La tabla de anlisis de precedencia de operador est formada nicamente por smbolos terminales puestos de la siguiente forma:

Lenguajes y Sistemas Informticos

Pgina 7

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.3.3 Mtodo para Obtener las Relaciones de Precedencia de Operador (1)

Lenguajes y Sistemas Informticos

Pgina 8

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.3.3 Mtodo para Obtener las Relaciones de Precedencia de Operador (2)


Algoritmo para Obtener las Relaciones de Precedencia de Operador

Lenguajes y Sistemas Informticos

Pgina 9

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Algoritmo de Anlisis de Precedencia de Operador


Algoritmo de Anlisis de Precedencia de Operador

Lenguajes y Sistemas Informticos

Pgina 10

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Ejemplo 5.2: Sea G una gramtica definida por las producciones siguientes:

Basndonos en relaciones de precedencia obtenidas bajo premisas establecidas (mtodo intuitivo), la tabla de precedencia de operador y el anlisis de la secuencia de entrada id+id*id son respectivamente:

TABLA DE PRECEDENCIA

Lenguajes y Sistemas Informticos

Pgina 11

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Otros Mtodos para Obtener las Relaciones de Precedencia de Operador


1. Mtodo Intuitivo: Basado en el sentido comn y asociado con las reglas del clculo en donde se aplica una precedencia de clculo segn una precedencia de operadores. Se conoce el lenguaje en virtud de la gramtica y es sencillo extraer las relaciones de precedencias.

2. Mtodo Deductivo: Basado en el anlisis de las gramticas mediante el desarrollo de los rboles de anlisis. Como requisito, las gramticas deben ser no ambiguas. til cuando la gramtica no permite determinar las precedencias.

3. Mtodo Asociativo: Basado en la asociatividad de los operadores y en las reglas de precedencia de operadores para el clculo [Aho90]. Mtodo general de resolucin de conflictos en base a precedencia y asociatividad.

Lenguajes y Sistemas Informticos

Pgina 12

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Generacin de la Tabla de Precedencia

Lenguajes y Sistemas Informticos

Pgina 13

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.4 Anlisis Ascendente Predictivo de Precedencia Simple (1)


Propuesta por Wirth y Weber en 1966 como generalizacin de la precedencia de operador. Observaron que determinados smbolos terminales aparecen siempre adyacentes dependiendo de las producciones de la gramtica, de tal forma que se puede establecer relaciones de precedencia entre smbolos terminales y no terminales. Esta relacin nos puede servir para determinar la subcadena de entrada que debe ser reducida o desplazada. Se definen tres relaciones de precedencia entre smbolos terminales y no terminales en base a su disposicin en el rbol de anlisis:

Lenguajes y Sistemas Informticos

Pgina 14

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.4 Anlisis Ascendente Predictivo de Precedencia Simple (2)

Lenguajes y Sistemas Informticos

Pgina 15

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.4.1 Concepto de Pivote y Relacin de Precedencia


PIVOTE: Subcadena susceptible de ser reducida. El anlisis de precedencia simple es aplicable a lenguajes definidos por gramticas con las siguientes restricciones: 1. No podrn existir producciones cuya parte derecha sea la misma. 2. No podrn existir producciones a la cadena vaca. 3. Las relaciones de precedencia deben ser disjuntas. Proceso para determinar el pivote: Dada una secuencia de entrada, para determinar el pivote se obtiene la relacin de precedencia entre los smbolos adyacentes y, cuando detectemos un cambio de precedencia de menor/igual a mayor, entonces los smbolos comprendidos entre las relaciones de menor y mayor precedencia formarn el pivote por el que se debe reducir.

Lenguajes y Sistemas Informticos

Pgina 16

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.4.2 Tabla de Precedencia Simple


La tabla de anlisis de precedencia simple est formada por smbolos terminales y no terminales puestos de la siguiente forma:

Lenguajes y Sistemas Informticos

Pgina 17

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Ejemplo 5.3: Dada la gramtica definida por las producciones:

las relaciones de precedencia simple estudiadas son las siguientes: La tabla de precedencia simple es la siguiente: Supongamos la secuencia de entrada abccda, el proceso de anlisis sera el siguiente:

Lenguajes y Sistemas Informticos

Pgina 18

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

Mtodo de Clculo de las Relaciones de Precedencia Simple


Al igual que en precedencia de operador, se extienden los conceptos de PRIMERO y LTIMO en los siguientes trminos:

PRIMERO+ (A) = { / A + VN entonces PRIMERO+() PRIMERO+(A) } ULTIMO+ (A) = { / A + VN entonces ULTIMO+() ULTIMO+(A) }

Lenguajes y Sistemas Informticos

Pgina 19

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.5 Tratamiento de Errores en Anlisis de Precedencia (1)


Deteccin del Error: 1. Cuando no est definida la relacin de precedencia entre dos smbolos adyacentes de entrada: Error de precedencia. 2. Cuando se ha obtenido un pivote para aplicar reduccin y no existe ninguna produccin con idntica parte derecha al pivote: Error de reduccin. Manejo del Error durante la Reduccin: Ante el error se actuar sacando el smbolo de la pila y notificar el error. Se distinguen dos casos: Cuando el pivote no casa pero alguna subsecuencia si. Cuando falte algn smbolo para poder aplicar con xito la reduccin. No es trivial obtener un mensaje certero en anlisis de precedencia. Cuando se detecta este tipo de error hay que decidir qu smbolos de la pila hay que sacar. Aho propone un sistema simple consistente en sacar todos los smbolos con igual precedencia en el orden en el que fueron introducidos hasta que se alcance un < o > con el smbolo inicial.

Lenguajes y Sistemas Informticos

Pgina 20

Procesadores de Lenguajes

Tema 5. Anlisis Sintctico Ascendente

Ingeniero en Informtica 4 Curso / 2 Cuatrimestre

5.5 Tratamiento de Errores en Anlisis de Precedencia (2)


Tambin, Aho [Aho90] propone otro mtodo basado en el sentido comn.
Ejemplo 6.4: Dada la gramtica definida por las producciones: Se emite los mensajes: Si se reduce + o * y no hay smbolo terminal o no terminal a la derecha o a la izquierda, Operando Omitido. Si los smbolos ( y ) son reducidos y no hay smbolo terminal, Expresin sin parntesis.

Manejo de Errores cuando no hay Relacin de Precedencia (Error de Precedencia). Se estudian los smbolos cercanos al tope de la pila, pudindose dar los casos siguientes: a) Saltar el smbolo de la entrada. b) Saltar el smbolo en el tope de la pila o ambos (entrada y pila). c) Insertar un smbolo en la pila. d) Insertar un smbolo en la entrada. Problema: Se puede alcanzar un LAZO INFINITO en el algoritmo de anlisis ya que podemos estar realizando alguna de estas acciones de forma indefinida sin detectar alguna precedencia correcta.

Lenguajes y Sistemas Informticos

Pgina 21