INFORME PROYECTO ANALIZADOR SINTACTICO
PROFESOR
AUTOMATA AUTOMATAS GRAMATICALES
INGENIERÍA DE SISTEMAS IX SEMESTRE
FUNDACIÓN UNIVERSITARIA UNIVERSITARIA TECNOLÓGICO COMFENALCO CARTAGENA
INFORME PROYECTO ANALIZADOR SINTACTICO
MARCO TEÓRICO DEL ANÁLISIS LÉXICO El compilador es un programa que se encarga de leer un archivo de determinado lenguaje de programación y "traducirlo" al lenguaje máquina que es el conjunto de instrucciones (en el caso de las computadoras, el lenguaje binario)
que
la
computadora
soporte
o
"interpreta".
Al leerse nuestro código uente, el compilador comien!a procesos de análisis como lo son el Análisis Léi!"# supongamos que mi sistema o programa es para automati!ar la ventilación de una habitación# algo sencillo. $as acciones del ducto de ventilación son% #$%i% y !&%%#% . &o se puede decir sólo abrir o cerrar ya que la ventilación (en 'ste caso) incluye un aire acondicionado (dej'moslo
en ventilador)
que
debe
encenderse
o
apagarse
independientemente de si nuestra ventilación está abierta o cerrada. &uestras "palabras reservadas", que son nicamente las palabras que entiende nuestro compilador serán% #$%i%' !&%%#%' &n!&n(&%' #)#*#%' +&n,il#("% - +&n,il#!i.n . El análisis l'ico buscará entonces que esas palabras est'n dentro de nuestro "código uente". *i queremos crear una estructura para el código uente, como en +-$ o cualquier lenguaje, el programa debe determinar si la estructura se cumple. En caso contrario, no compilará. El segundo proceso es el Análisis
S&/án,i!"# enemos entonces dos variables a resaltar% una #!!i.n - 0n #!!i"n#(". El accionado es la parte de la acción sobre la que 'sta se encuentra reali!ando sus operaciones# es el que reali!a la operación por as llamarlo. /i'ndolo desde 'ste punto, nos encontramos que las acciones son% encender, apagar, abrir, cerrar. 0 los accionados serán% ventilador y ventilación. &uestro
análisis
semántico
deberá
determinar
si
se
cumple
la
condición A!!i.n1A!!i"n#(", en caso contrario, el programa no compilará. 0 por ltimo el Análisis Sin,á!,i!"# An cuando la lógica de Acción 1 Accionado haya sido satisactoria, no hay como la lógica de l" 20& s& )0&(& -
l" 20& n". 2ste análisis revisa que las palabras cumplan con una lógica de si se puede o no. 3n ventilador puede encenderse y apagarse pero no abrirse ni cerrarse. $as ventilaciones no pueden apagarse ni prenderse, sólo abrirse y cerrarse. *implemente, buscamos que haya 'sta lógica dentro del programa.
3USTIFICACIÓN DE LA ELECCIÓN DEL LENGUA3E DE PROGRAMACIÓN 4rincipalmente se escoge 5ava como lenguaje de programación porque ue el lenguaje con el que hemos trabajado durante todo este proceso de aprendi!aje como estudiantes de 6ngeniera de *istemas. Además de esto se tuvo en cuenta que 5ava orece una cantidad ilimitada de unciones que logran la acilidad a la hora de programar, estas son unas de las principales caractersticas que este nos orece% -ultiplataorma, posee una lista de libreras que a diario satisacen las necesidades de los programadores, tambi'n cuenta con la instalación de su máquina virtual, su entorno de desarrollo o la acilidad de conectarse con bases de datos, desarrollar aplicación de escritorio, aplicaciones distribuidas, aplicación de 7eb, etc. 4or todos estos puntos mencionados anteriormente tambi'n decidimos trabajar con este $enguaje de 4rogramación 8rientado a 8bjetos.
FUNCIÓN DE CADA ESTRUCTURA DE DATOS UTILIZADA •
Array $ist% la unción de esta estructura de datos que se implementa en el código de este programa es principalmente ordenar y contener objetos de manera similar a un vector, pero a dierencia de este el array es de tama9o dinámico de manera que crecerá a medida que se le inserten elementos y además tiene la ventaja de que se ejecuta de orma mas rápida. :e manera mas especiica en este código se utili!an los array para almacenar partes de código 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.
O43ETIVO DE CADA PROCEDIMIENTO Y FUNCIÓN
Limpiar listas5 el objetivo de esta unción es limpiar el contenido de los
Array $ist y de esta manera evitar posibles errores en próimas ejecuciones o en la misma ejecución. Recorrer archivo % por medio de esta unción listamos el pseudocódigo compilado sin comentarios, y sin saltos de lneas. Crear archivo HTML % en esta unción capturamos los datos que se escribieron sobre el área de teto y los convertimos en un archivo con la etensión .+-$ y luego concatenamos la parte del encabe!ado en donde se encuentra almacenado los respectivos datos iniciales que debe contener este archivo. abrirHTML% mediante esta unción logramos identiicar la ubicación en donde se creó nuestro archivo .html y mediante la A46 de java (:es;top) la abrimos con el navegador por deecto. &)%&si"nR&*0l#% % por medio de esta unción recibimos la epresión y el patrón de busque y lo anali!amos en cada uno de los m'todos en los que necesitamos evaluar las epresiones. Obtener código por línea 5 lo que hacemos en esta unción es crear saltos de lneas para lograr dividir el código y luego asi mandarle el código partido en lneas a las unciones que se encargaran de validar las epresiones regulares utili!adas. recorrerArchivo: realizamos principalmente la creación del archivo .txt o archivo plano el cual va a ser utilizado para la verificación y validación de las expresiones regulares . recorrerListas% recorremos y llenamos las listas (list4alabras
list/ariables:ec,
list/ariables6nv,
list/ariables&o:ec)
con
sus
respectivos datos cada uno de sus listas correspondientes, es decir que las palabras reservadas utili!adas en un código se guardaran especicamente en la lista de palabras reservadas, esto además nos acilita listar los datos que se encuentren dentro de ella.
DIFICULTADES Y SOLUCIONES Algunas de las diicultades se presentaron al momento de deinir con qu' tipo de estructura de datos se iba a trabajar debido a que se necesitaba controlar el código que uera escrito para poderlo anali!ar y generar un correcto resultado. ambi'n se presento una diicultad con el manejo de las
epresiones regulares a este nivel en lo que respecta a la deinición e implementación de esta# este inconveniente ue solucionado investigando un poco y con la ayuda de unas libreras de 5ava destinadas al manejo de epresiones regulares.