Analizador Lexico - Proyecto

May 22, 2019 | Author: Xtian Castro Del Carpio | Category: Compiler, Html, Programming Language, Markup Language, C++
Share Embed Donate


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 lexico, sintactico y semantico. La primera fase del analisis de un codigo fuente es el analisis lexico, el cual tiene como principal objetivo leer el flujo de caracteres de entrada y convertirlo en una serie de “ tokens” o componentes lexicos, que son las unidades mí nimas de cada lenguaje de programacio n y son estos los que usa el analizador sinta ctico. Tambien, el analizador lexico 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 lexico se pueden utilizar diferentes herramientas, como son los mismos lenguajes de alto nivel, sin embargo, estos no proporcionan sentencias de facil construccion y complican el codigo, es por ello que se utilizan algunas herramientas de construccion como son flex, lex, yacc, Jflex, etc. El presente informe presenta el desarrollo de un analizador lexico 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 lexico 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 aplicacion que integre a las reglas desarrolladas anteriormente, para poder utilizarlas en el analisis lexico.

MARCO TEÓRICO Para poder desarrollar el analizador lexico, definiremos brevemente el lenguaje HTML restringido que utilizara la aplicacion. Las sentencias que reconocera el analizador son las siguientes: -

y : etiquetas de codigo html. y : etiquetas de cabecera. y : etiquetas de título de pagina. y : etiquetas de cuerpo de pagina. y : etiqueta. y : etiqueta de cabecera mayor de pagina. y : etiqueta de parrafo. 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 construccion del analizador lexico, se utilizara la herramienta Lex, cuya principal funcion es la de generar un archivo lex.yy.c, el cual sirve de apoyo al aplicativo principal.

FLEX.-  Flex es ampliamente conocido como el rapido generador de analisis lexico, es de codigo abierto, 100% gratis y una aplicacion de lí nea de comandos multiplataforma escrito en los lenguajes C/C++. Flex ha sido disenado de tal

manera que puede generar un archivo en codigo C llamado " lex.yy.c" que puede definir la funcion  yylex(). Funciona bien tanto en los sistemas operativos Linux y BSD. Cabe mencionar que el  flex   no es la mejor herramienta para la construccion de este analizador, siendo el  yacc  la mejor opcion por tener en cuenta las reglas ma s complicadas del analisis le xico.

HTML.-  El HTML, Hyper Text Markup Language  (Lenguaje de marcacion de Hipertexto) es el lenguaje de marcas de texto utilizado normalmente en la www (World Wide Web). HTML no es propiamente un lenguaje de programacion como C++, Visual Basic, etc., sino un sistema de etiquetas. HTML no presenta ningun compilador, por lo tanto algun error de sintaxis que se presente este no lo detectara y se visualizara en la forma como este lo entienda.

DESARROLLO DEL PROYECTO I PARTE: Instalación del Flex Para iniciar, se debe instalar el  flex , en este proyecto se utilizo la version 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 busqueda 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 creacion del aplicativo, solamente debemos considerar las tres secciones que debe tener siempre un archivo lex : la cabecera, donde va el codigo en C++ que se utiliza en las reglas, las reglas son las expresiones regulares que definen al analizador lexico y finalmente tenemos la tercera seccion donde tambien se agrega codigo en C++ que sera de soporte para el aplicativo. Para este proyecto solo utilizamos las dos primeras secciones, las cuales pasaremos a detallar.

NOTA: Se utiliza la tercera seccion para definir al metodo  yywrap() el cual es de uso esencial en la generacion del archivo lex.yy.c .

II PARTE: Construcción de la librería de cabecera Esta es la seccion mas sencilla del aplicativo. Primeramente, se creo un archivo denominado Tipos.h, el cual contiene algunos valores predefinidos y estaticos que seran 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 codigo lex ; definamos la estructura de un archivo lex : ---------------------------------

PRIMERA PARTE (en codigo 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 seccion incluimos reglas que definan valores, como la regla: inicio “
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF