De nuevo por acá, esta vez gracias a otra de mis asignaturas en la ESCOM. Toca el turno a
Teoría computacional, fue el turno de usar Flex, herramienta que en lo particular no conocía.
Lo que teníamos que hacer era usar Flex para escribir un programa que de un archivo con código en lenguaje C nos lo "transfiriera" a un archivo con formato html estilizado con CSS.
La idea era encontrar palabras reservadas, tipos de datos, identificadores, directivas, operadores, y cualquier otro tipo de cadenas permitidas con el analizador léxico y asignarles cierto estilo en un documento html.
Trato de explicar gráficamente: la imagen de la izquierda es código en C, después de introducir este archivo en el programita nos debe entregar algo como la captura derecha, que es un na representación estilizada con CSS del archivo que introdujimos.
¿Qué es Flex?
Resulta que Flex, en términos prácticos (Wikipediazo), es un programa para generar analizadores léxicos. Uno mete la especificación de un analizador léxico y Flex regresa como salida la implementación en C de lo que nosotros introdujimos. En realidad es muy sencillo utilizarlo, solo hay que tener en cuenta la estructura del archivo que vamos a usar como entrada al programa, esta es sencilla y muy fácil de recordar, un archivo "lex", se divida en tres secciones (separadas por líneas que solo contienen '%%' como texto en ellas). Las líneas son:
- 1.- Sección de declaraciones
- Lugar para incluir cabeceras, macros, variables globales... también es posible definir patrones a usar en la sección de reglas
- %%
- 2.- Sección de reglas
- Aquí es donde se asocian los patrones(expresiones regulares) a buscar con sentencias(código) de C. Cada vez que el analizador encuentra un a cadena que coincide con el patrón, se ejecuta el código en C
- %%
- 3.- Sección de código en C
- Contiene sentencias en C y funciones que serán copiadas íntegramente en el archivo que Felx genere, comúnmente se colocan aquí las funciones que se llamarán en la sección de reglas.
Descargas
Al compilar el programa en Flex nos devuelve un código compilable pero ahora en lenguaje C, el cual ya debería de hacer lo que nosotros le indicamos. En el
descargable básico viene el archivo
cToHtml.l que es el archivo en lenguaje Lex, el archivo de estilos
estilos.css que es la hoja de estilos que se usa para formatear el documento de salida y el archivo
Makefile que nos facilita la compilación y el archivo
Leeme.txt PARA QUE LO LEAN, en donde viene como se usa el programa final. En el
descargable completo, viene, además de lo indicado arriba, el archivo
lex.yy.c que es el código que se genera al compilar en Flex y el archivo
salida.html que es un ejemplo de lo que entrega nuestro programa si hacemos pasar por el a
lex.yy.c.
Recuerda que para cualquier duda, comentario o invitación a una cerveza, está la sección de comentarios, mi cuenta en Twitter o mi correo.
¡Saludos!
@fferegrino :)