Você está na página 1de 6

U.C.

Analizador Sintctico predictivo no recursivo

Alumnos: Carolina Villasanti

Hctor Escurra

2012
Anlisis Sintctico Predictivo
no Recursivo

Se puede construir un analizador sintctico predictivo no recursivo sin


llamadas recursivas a procedimientos, sino que se utiliza una pila auxiliar de
smbolos terminales y no-terminales. Para determinar qu produccin debe
aplicarse en cada momento se busca en una tabla de anlisis sintctico
(parsing table) en funcin del smbolo de preanlisis que se est observando
en ese momento y del smbolo en la cima de la pila se decide la accin a
realizar.

Utilizan una pila en lugar de llamadas recursivas

Guiado por una tabla

Las tablas se construyen directamente slo para ciertos tipos de


gramticas

Inicialmente:

Buffer: cadena de entrada finalizada con el smbolo $

Pila: smbolo $ y en la cima el smbolo inicial de la gramtica

Tabla M: Si A es un no terminal y a un terminal, M[A,a] contiene una


regla de produccin de la gramtica

X: Cima de la pila

A: smbolo de la entrada (preanlisis)


Lista de Terminales usados

[a-z] todas las letras minsculas

[0-9] todos los nmeros

, la coma

() los parntesis

+*/- Operadores

Lista de No Terminales

[A-Z] todas las letras maysculas

=> Asignacin

>mayor

=Guion

*Problemas para entender la herramienta cup y jlex

*No sabamos si como generaba las clases yylex ,sym, y parser

*despus de que se gener no sabamos cmo implementarlo

*Haba errores en la gramtica y no sabamos cmo resolverlo

*una vez que la gramtica estaba correcta el problema era como implementarlo

*El problema era como rescatar usando el cup los terminales y no terminales
de la gramtica de entrada.

*Al tener todos los terminales y no terminales, smbolo inicial el problema era
como realizar la tabla de anlisis sintctico.
*queramos mostrar en una jtabla de swing pero no sabamos cmo al tener
todos los datos para la tabla colocarle a cada no terminal / terminal la
produccin correspondiente.

*al poder armar la tabla correctamente nos tiraba error de java al comprobar la
cadena w y este era el error ( java.lang.ArrayIndexOutOfBoundsException:
Array index out of range: 0)

*el problema era que al cargar la pila y antes de imprimir el mensaje de


correcto o no vaciamos totalmente la pila.

*Problemas con la deteccin de errores, detectaba el error sintctico y paraba


inmediatamente.

*Al conseguir que siga despus de un error sintctico, no sabamos cmo


conseguir la lnea y columna donde se produjo ese error.

*Modificar la gramtica de una forma que se detecte errores sintcticos.

Para conseguir solucionar todos estos problemas enfatizamos en la gramtica


a que este correcta y que a la hora de leer la gramtica de entrada pueda ir
rescatando todos los terminales y no terminales que usaremos en la tabla de
anlisis sintctico , prevemos en la gramtica los errores que pueden aparecer
e implementamos un mtodo de control de errores en el cual al encontrar un
error ponemos la palabra error en la gramtica y nos redirecciona al mtodo
imprimiendo la lnea y la columna en el cual apareci.

Errores Sintcticos manejados por el analizador sintctico predictivo no


recursivo

*Error de Asignacin es decir que no este los smbolos de asignacin o no est


completo

*Error despus del Or o smbolo de O maneja la lnea y columna donde se


produjo el error

Errores Lxicos
*Error en caso de que aparezca un smbolo que no est adecuadamente
declarado.

*Indica la lnea y columna del error junto con el carcter no reconocido.

Errores de Entrada de cadena w

*controla si falta operador


El trabajo realizado Analizador Sintctico predictivo no recursivo , nos trajo
experiencias inolvidables en su elaboracin , la gran ventaja de realizar este
compilador es que utilizamos libreras jlex y cup para su funcionamiento y tales
libreras son una maravilla quedamos asombrados por cmo trabajan ya que
ellos nos ayudaron a crear las clases Lexer para el anlisis lxico y las clases
java parser y sym para el anlisis sintctico , para el manejo de errores nos
quedamos sorprendidos de cmo solamente al poner error en nuestra
gramtica el cundo encuentra un error sintctico va al mtodo de errores que
colocamos en el parser code dentro de nuestra gramtica.

Podemos rescatar de toda esta experiencia que las herramientas jlex y cup
para la elaboracin de compiladores son muy poderosas y que han facilitado
mucho el trabajo a la hora de programar, tales herramientas son para java.

El analizador sintctico predictivo no recursivo nos ayud como grupo a


entender bien el funcionamiento de las tablas y a la elaboracin de los
algoritmos primero y siguiente, una vez realizado todo rescatamos nuestras
capacidades de trabajo en grupo, esperamos una nota favorable de parte del
profesor.

Você também pode gostar