You are on page 1of 5

INFORME PROYECTO ANALIZADOR SINTACTICO

PROFESOR

AUTOMATAS GRAMATICALES

INGENIERA DE SISTEMAS
IX SEMESTRE

FUNDACIN UNIVERSITARIA TECNOLGICO COMFENALCO


CARTAGENA

INFORME PROYECTO ANALIZADOR SINTACTICO

MARCO TERICO DEL ANLISIS LXICO

El compilador es un programa que se encarga de leer un archivo de


determinado lenguaje de programacin y "traducirlo" al lenguaje mquina que
es el conjunto de instrucciones (en el caso de las computadoras, el lenguaje
binario)

que

la

computadora

soporte

"interpreta".

Al leerse nuestro cdigo fuente, el compilador comienza 3 procesos de anlisis


como lo son el Anlisis Lxico; supongamos que mi sistema o programa es
para automatizar la ventilacin de una habitacin; algo sencillo. Las acciones
del ducto de ventilacin son: abrir y cerrar. No se puede decir slo abrir o
cerrar ya que la ventilacin (en ste caso) incluye un aire acondicionado
(dejmoslo

en ventilador)

que

debe

encenderse

apagarse

independientemente de si nuestra ventilacin est abierta o cerrada. Nuestras


"palabras reservadas", que son nicamente las palabras que entiende nuestro
compilador sern: abrir, cerrar, encender, apagar, ventilador y ventilacin.
El anlisis lxico buscar entonces que esas palabras estn dentro de nuestro
"cdigo fuente". Si queremos crear una estructura para el cdigo fuente, como
en HTML o cualquier lenguaje, el programa debe determinar si la estructura se
cumple. En caso contrario, no compilar. El segundo proceso es el Anlisis
Semntico; Tenemos entonces dos variables a resaltar: una accin y un
accionado. El accionado es la parte de la accin sobre la que sta se
encuentra realizando sus operaciones; es el que realiza la operacin por as
llamarlo. Vindolo desde ste punto, nos encontramos que las acciones son:
encender, apagar, abrir, cerrar. Y los accionados sern: ventilador y ventilacin.
Nuestro

anlisis

semntico

deber

determinar

si

se

cumple

la

condicin Accin-Accionado, en caso contrario, el programa no compilar.


Y por ltimo el Anlisis Sintctico; An cuando la lgica de Accin Accionado haya sido satisfactoria, no hay como la lgica de lo que se puede y
lo que no. ste anlisis revisa que las palabras cumplan con una lgica de si
se puede o no. Un ventilador puede encenderse y apagarse pero no abrirse ni
cerrarse. Las ventilaciones no pueden apagarse ni prenderse, slo abrirse y
cerrarse. Simplemente, buscamos que haya sta lgica dentro del programa.

JUSTIFICACIN DE LA ELECCIN DEL LENGUAJE DE


PROGRAMACIN

Principalmente se escoge Java como lenguaje de programacin porque fue el


lenguaje con el que hemos trabajado durante todo este proceso de aprendizaje
como estudiantes de Ingeniera de Sistemas. Adems de esto se tuvo en
cuenta que Java ofrece una cantidad ilimitada de funciones que logran la
facilidad a la hora de programar, estas son unas de las principales
caractersticas que este nos ofrece:
Multiplataforma, posee una lista de libreras que a diario satisfacen las
necesidades de los programadores, tambin cuenta con la instalacin de su
mquina virtual, su entorno de desarrollo o la facilidad de conectarse con bases
de datos, desarrollar aplicacin de escritorio, aplicaciones distribuidas,
aplicacin de web, etc.
Por todos estos puntos mencionados anteriormente tambin decidimos trabajar
con este Lenguaje de Programacin Orientado a Objetos.

FUNCIN DE CADA ESTRUCTURA DE DATOS UTILIZADA

Array List: la funcin de esta estructura de datos que se implementa en


el cdigo de este programa es principalmente ordenar y contener objetos
de manera similar a un vector, pero a diferencia de este el array es de
tamao dinmico de manera que crecer a medida que se le inserten
elementos y adems tiene la ventaja de que se ejecuta de forma mas
rpida. De manera mas especifica en este cdigo se utilizan los array
para almacenar partes de cdigo en su correspondiente tipo de lista, es
decir, se tiene una lista para las palabras declaradas, otra para las
palabras reservadas, y de igual manera con el resto de componentes.

OBJETIVO DE CADA PROCEDIMIENTO Y FUNCIN

Limpiar listas: el objetivo de esta funcin es limpiar el contenido de los


Array List y de esta manera evitar posibles errores en prximas
ejecuciones o en la misma ejecucin.
Recorrer archivo: por medio de esta funcin listamos el pseudocdigo
compilado sin comentarios, y sin saltos de lneas.
Crear archivo HTML: en esta funcin capturamos los datos que se
escribieron sobre el rea de texto y los convertimos en un archivo con la
extensin .HTML y luego concatenamos la parte del encabezado en
donde se encuentra almacenado los respectivos datos iniciales que
debe contener este archivo.
abrirHTML: mediante esta funcin logramos identificar la ubicacin en
donde se cre nuestro archivo .html y mediante la API de java (Desktop)
la abrimos con el navegador por defecto.
expresionRegular: por medio de esta funcin recibimos la expresin y
el patrn de busque y lo analizamos en cada uno de los mtodos en los
que necesitamos evaluar las expresiones.
Obtener cdigo por lnea: lo que hacemos en esta funcin es crear
saltos de lneas para lograr dividir el cdigo y luego asi mandarle el
cdigo partido en lneas a las funciones que se encargaran de validar las
expresiones regulares utilizadas.
recorrerArchivo: realizamos principalmente la creacin del archivo .txt
o archivo plano el cual va a ser utilizado para la verificacin y validacin
de las expresiones regulares.
recorrerListas: recorremos y llenamos las listas (listPalabrasRes,
listVariablesDec,

listVariablesInv,

listVariablesNoDec)

con

sus

respectivos datos cada uno de sus listas correspondientes, es decir que


las palabras reservadas utilizadas en un cdigo se guardaran
especficamente en la lista de palabras reservadas, esto adems nos
facilita listar los datos que se encuentren dentro de ella.

DIFICULTADES Y SOLUCIONES
Algunas de las dificultades se presentaron al momento de definir con qu
tipo de estructura de datos se iba a trabajar debido a que se necesitaba
controlar el cdigo que fuera escrito para poderlo analizar y generar un
correcto resultado. Tambin se presento una dificultad con el manejo de las

expresiones regulares a este nivel en lo que respecta a la definicin e


implementacin de esta; este inconveniente fue solucionado investigando
un poco y con la ayuda de unas libreras de Java destinadas al manejo de
expresiones regulares.

You might also like