Sie sind auf Seite 1von 17

FACULTAD DE INGENIERIA DE TRANSPORTE Y SOFTWARE ESCUELA PROFESIONAL DE INGENIERIA DE SOFTWARE

MATEMTICA DISCRETA II
Gramticas LL(1) sin reglas vacas

PROFESOR
INTEGRANTES

: De Souza Ferreira Llaque, Carlos Anbal


: Isla Chau, Fabriccio Pariona Alanya, Percy Sotelo Castamn, Jean Pierre : MAANA : IV : A504

TURNO CICLO AULA

2009

Procedimiento para analizar sintcticamente una gramtica LL1


Conjunto de producciones Determinacin de la Gramtica Funcin analizadora para la una gramtica LL1 Rastreo o traza de un anlisis sintctico para una cadena dada

Programa

Cdigo

Estructura Funcional del Programa


main()

tabla() NuevaGramatica() verGramatica()

NuevaCadena()

tabla() rastreo()

buscar()

ordenar()
verGramatica()

Determinar()

buscar()
concatenar()

BuscarCadena()

buscar() verGramatica()

eliCima()

Funcin Main()
Es la funcin principal, la cual contiene un men con cinco opciones diferentes. Desde esta funcin se llama a las dems funciones auxiliares que permiten realzar el anlisis sintctico. 1. Ingresar Gramtica LL(1) Esta opcin llama a la funcin NuevaGramatica() 2. Mostrar Gramtica LL(1) Esta opcin llama a la funcin verGramatica(). 3. Mostrar Funcin analizadora Esta opcin llama a la funcin tabla(). 4. Realizar Anlisis sintctico Esta opcin llama a la funcin NuevaCadena(). 5. Salir Esta opcin finaliza la aplicacin.

Cdigo

Funcin NuevaGramatica()

Esta funcin se utiliza para ingresar una nueva gramtica, eliminando cualquier otra gramtica ingresada con anterioridad. La funcin solicitar ingresar el nmero de producciones. As como tambin las producciones, las cuales quedarn almacenadas en los vectores der e izq, que almacenan las partes de la derecha e izquierda de las producciones respectivamente.

Cdigo

Funcin Buscar()

Esta funcin tipo booleana (devuelven true o false) determina si tanto los terminales y los no terminales ingresados ya existen. En el caso que no existan, se les agrega a un vector auxiliar.

Cdigo

Funcin Ordenar()

Esta funcin ordena los vectores que contienen los terminales y no terminales

Cdigo

Funcin Determinar()

Esta funcin se encarga de separar los terminales y no terminales en dos vectores Ter y NoTer.

Cdigo

Funcin BuscarCadena()

Esta funcin de tipo booleana y determina si el Terminal o no Terminal ingresado ya existe o no en el vector correspondiente. En caso no exista devuelve el valor de false (falso) y entonces la funcin determinar lo agrega al vector correspondiente.

Cdigo

Funcin VerGramatica()

Esta funcin muestra el nmero de producciones ingresadas, as como tambin las producciones ingresadas.

Cdigo

Funcin Tabla()

Esta funcin muestra las producciones llamando a la funcin verGramatica(). Luego utilizando la funcin buscar() coloca en una tabla los resultados de las derivaciones entre cada expresin ingresada.

Cdigo

Funcin NuevaCadena()

Esta funcin muestra las producciones y la tabla de la funcin analizadora llamando a las funciones verGramatica() y tabla() respectivamente. Luego se solicita el ingreso de una cadena y se llama a la funcin rastreo().

Cdigo

Funcin Rastreo()

Esta funcin realiza la traza del anlisis sintctico de la cadena ingresada. Para ello llama a la funcin buscar(), mediante la cual se determina aquella produccin que hace que el primer elemento de la pila sea igual al de la cadena de entrada.

Cdigo

Funcin Concatenar()

Esta funcin junta la pila y las derivaciones obtenidas.

Cdigo

Funcin EliCima()

Esta funcin se utiliza para eliminar la cima. Luego se repite el proceso hasta que en la cadena de entrada y en la pila quede el smbolo #.

Cdigo

Cdigo Fuente del Programa


Ir al Programa Ir al Cdigo

NuevaGramatica() Buscar()

Tabla() NuevaCadena()

Ordenar()
Determinar() BuscarCadena()

Rastreo() Concatenar()

EliCima()

VerGramatica()

Das könnte Ihnen auch gefallen