Analizador Lexico - Proyecto
Short Description
Download Analizador Lexico - Proyecto...
Description
ANALIZADOR LÉXICO UTILIZANDO LEX Y C++ INTEGRANTES:
CASTRO DEL CARPIO CRISTIAN
- 101655
HUALLPARIMACHI GARCIA JHONY LUCIA
- 093166
UNIVERSIDAD NACIONAL SAN ANTONIO ABADCUSCO DE CUSCO MAYO – 2014 FACUL ACULT TAD DE D E CIENCIAS CI ENCIAS QUÍMICAS, FÍSICAS Y MATEMÁTICAS
INTRODUCCIÓN Un compilador es una herramienta que permite interpretar lenguajes de alto nivel. Los componentes de un compilador son los analizadores lexico, sintactico y semantico. La primera fase del analisis de un codigo fuente es el analisis lexico, el cual tiene como principal objetivo leer el flujo de caracteres de entrada y convertirlo en una serie de “ tokens” o componentes lexicos, que son las unidades mí nimas de cada lenguaje de programacio n y son estos los que usa el analizador sinta ctico. Tambien, el analizador lexico es capaz de eliminar aquellos elementos que no son necesarios, como los espacios en blanco, las tabulaciones, los saltos de línea y los comentarios. Para construir un analizador lexico se pueden utilizar diferentes herramientas, como son los mismos lenguajes de alto nivel, sin embargo, estos no proporcionan sentencias de facil construccion y complican el codigo, es por ello que se utilizan algunas herramientas de construccion como son flex, lex, yacc, Jflex, etc. El presente informe presenta el desarrollo de un analizador lexico dirigido al lenguaje HTML con características restringidas, utilizando la herramienta flex integrada en un entorno de C++. Se desarrollo en la plataforma Ubuntu de 32 bits, y con el compilador nativo de C para UNIX: gcc.
OBJETIVO 1.
General Construir un aplicativo que pueda realizar las funciones de un analizador lexico para el lenguaje HTML restringido.
2.
Específicos a.
b.
Desarrollar expresiones regulares que incorporen el HTML, y que puedan ser programadas en Lex. Desarrollar una aplicacion que integre a las reglas desarrolladas anteriormente, para poder utilizarlas en el analisis lexico.
MARCO TEÓRICO Para poder desarrollar el analizador lexico, definiremos brevemente el lenguaje HTML restringido que utilizara la aplicacion. Las sentencias que reconocera el analizador son las siguientes: -
y : etiquetas de codigo html. y : etiquetas de cabecera. y : etiquetas de título de pagina. y : etiquetas de cuerpo de pagina. y : etiqueta. y : etiqueta de cabecera mayor de pagina. y : etiqueta de parrafo. y : etiqueta de lista no ordenada. y : etiqueta de elemento de lista : comentario
Así mismo, reconocera el texto introducido fuera de las etiquetas. Para la construccion del analizador lexico, se utilizara la herramienta Lex, cuya principal funcion es la de generar un archivo lex.yy.c, el cual sirve de apoyo al aplicativo principal.
FLEX.- Flex es ampliamente conocido como el rapido generador de analisis lexico, es de codigo abierto, 100% gratis y una aplicacion de lí nea de comandos multiplataforma escrito en los lenguajes C/C++. Flex ha sido disenado de tal
manera que puede generar un archivo en codigo C llamado " lex.yy.c" que puede definir la funcion yylex(). Funciona bien tanto en los sistemas operativos Linux y BSD. Cabe mencionar que el flex no es la mejor herramienta para la construccion de este analizador, siendo el yacc la mejor opcion por tener en cuenta las reglas ma s complicadas del analisis le xico.
HTML.- El HTML, Hyper Text Markup Language (Lenguaje de marcacion de Hipertexto) es el lenguaje de marcas de texto utilizado normalmente en la www (World Wide Web). HTML no es propiamente un lenguaje de programacion como C++, Visual Basic, etc., sino un sistema de etiquetas. HTML no presenta ningun compilador, por lo tanto algun error de sintaxis que se presente este no lo detectara y se visualizara en la forma como este lo entienda.
DESARROLLO DEL PROYECTO I PARTE: Instalación del Flex Para iniciar, se debe instalar el flex , en este proyecto se utilizo la version de flex para el Sistema Operativo Ubuntu 13.04 de 32 bits. Se puede instalar el flex de dos maneras, la primera abriendo una terminal y escribiendo los siguientes comandos: ~$ sudo apt -get update ~$ sudo apt -get install flex De otra forma, se puede instalar el flex haciendo una busqueda en el Centro de Software de Ubuntu, te rmino clave: flex.
Ilustración 1. Flex en el Centro de Software de Ubuntu.
Una vez instalado el flex , ya es sencilla la creacion del aplicativo, solamente debemos considerar las tres secciones que debe tener siempre un archivo lex : la cabecera, donde va el codigo en C++ que se utiliza en las reglas, las reglas son las expresiones regulares que definen al analizador lexico y finalmente tenemos la tercera seccion donde tambien se agrega codigo en C++ que sera de soporte para el aplicativo. Para este proyecto solo utilizamos las dos primeras secciones, las cuales pasaremos a detallar.
NOTA: Se utiliza la tercera seccion para definir al metodo yywrap() el cual es de uso esencial en la generacion del archivo lex.yy.c .
II PARTE: Construcción de la librería de cabecera Esta es la seccion mas sencilla del aplicativo. Primeramente, se creo un archivo denominado Tipos.h, el cual contiene algunos valores predefinidos y estaticos que seran los que devuelva el analizador le xico. Ejemplo: #define INICIO 1.
III PARTE: Construcción del archivo flex , desarrollo de las expresiones regulares Seguidamente se pasa a construir el archivo en codigo lex ; definamos la estructura de un archivo lex : ---------------------------------
PRIMERA PARTE (en codigo C++) %% expresio n_regular ACCIO N %% TERCERA PARTE (igual en co digo C++) ---------------------------------
Para la primera parte se debe hacer referencia al archivo creado anteriomente: Tipos.h. %{ #include “Tipos.h” %} %option nounput yylineno La cuarta línea nos crea una variable global que almacenara el nu mero de lí nea. En la segunda parte definimos las expresiones regulares que conforman el analizador del HTML restringido, el cual llamaremos AnalizadorHTML.l. Para el proyecto se dividio en dos secciones a las expresiones regulares, en la primera seccion incluimos reglas que definan valores, como la regla: inicio “
View more...
Comments