Métodos computacionales

Proyecto: Resaltador de léxico de BASIC

Objetivo

Durante esta actividad, los alumnos serán capaces de:


Introducción

Un resaltador de léxico, usualmente llamado (de manera técnicamente incorrecta) resaltador de sintaxis, es una herramienta que resalta diferentes unidades léxicas de un código fuente, como palabras clave, operadores y comentarios, utilizando colores distintivos para mejorar la legibilidad y comprensión del código.

En las décadas de 1960 y 1970, cuando los lenguajes de programación comenzaron a surgir, los programadores se enfrentaron al desafío de escribir código en terminales de texto que carecían de capacidades visuales avanzadas. Con el advenimiento de los editores de texto y los entornos de desarrollo integrados (IDE, por sus siglas en inglés) en las décadas de 1980 y 1990, los resaltadores de léxico se convirtieron en características estándar. Los IDE modernos utilizan técnicas avanzadas de análisis léxico y sintáctico para proporcionar un resaltado preciso para una amplia variedad de lenguajes de programación.

Las expresiones regulares, que estudiamos como parte del tema de la teoría de autómatas, son fundamentales para el desarrollo de los resaltadores de léxico debido a su capacidad para analizar la estructura de lenguajes formales.

Este proyecto consiste en desarrollar un resaltador de léxico para BASIC (Beginners’ All-purpose Symbolic Instruction Code). BASIC es un lenguaje de programación de alto nivel que se distingue por su sencillez y accesibilidad, diseñado principalmente para principiantes. Fue diseñado en 1964 por John Kemeny y Thomas Kurtz en Dartmouth College, como un medio para facilitar la programación en computadoras a estudiantes que no fueran de áreas científicas.

El siguiente programa en BASIC imprime repetidamente "Hello, World!" en la pantalla en un ciclo infinito.

10 PRINT "Hello, World!"
20 GOTO 10

Un programa en BASIC está conformado por una serie de instrucciones que pueden incluir comandos para imprimir en la pantalla, tomar entrada del usuario, realizar cálculos matemáticos y controlar la ejecución del programa mediante saltos, condiciones y ciclos. Cada línea del programa comienza con un número que indica su posición en el programa. Estos números de línea son utilizados para facilitar la edición del código y controlar el flujo del programa.

Descripción

En los equipos ya conformados, escribir un programa en Clojure llamado resaltador.clj que produzca un documento de HTML en el que se resalte el léxico de un programa en BASIC contenido en un archivo dado.

La versión de BASIC que debe reconocer su programa es la descrita informalmente en las páginas X, XI y XII del libro BASIC Computer Games: Microcomputer Edition y que es utilizada por los más de cien programas contenidos ahí.

Las categorías de tokens que debe ser resaltados son:

Cualquier otro carácter que no sea parte de los tokens arriba listados debe ser resaltado como un token erróneo tal como se muestra en el ejemplo que se muestra más adelante.

Consideraciones adicionales

Ejemplo

Suponiendo que se tiene el siguiente archivo con un programa en BASIC llamado sinewave.bas:

10 PRINT TAB(30);"SINE WAVE"
20 PRINT TAB(15);"CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY"
30 PRINT: PRINT: PRINT: PRINT: PRINT
40 REMARKABLE PROGRAM BY DAVID AHL
50 B=0
100 REM  START LONG LOOP
110 FOR T=0 TO 40 STEP .25
120 A=INT(26+25*SIN(T))
130 PRINT TAB(A);
140 IF B=1 THEN 180
150 PRINT "CREATIVE"
160 B=1
170 GOTO 200
180 PRINT "COMPUTING"
190 B=0
200 NEXT T
999 END @#%

Para crear el documento HTML que resalte su léxico se tendría que ejecutar la siguiente expresión en Clojure:

(basic->html "sinewave.bas")

El documento HTML recién creado debe llamarse sinewawe.html y debe estar situado en el mismo directorio que el archivo original (sinewave.bas). Al abrir el documento HTML en un browser se debe ver algo similar a lo que se muestra a continuación:

Es importante notar que los caracteres que no son parte de un token válido están resaltados claramente con un color distinto a los demás tokens que sí son válidos (rojo en el ejemplo de arriba).

¿Qué se debe entregar?

El archivo fuente resaltador.clj debe incluir en la parte superior y dentro de un comentario la información personal de los autores (matrícula y nombre). Por ejemplo:

;----------------------------------------------------------
; Proyecto: Resaltador de léxico de BASIC
; Fecha: 12 de junio, 2024.
; Autores:
;          A01770771 Sylvie Laufeydottir
;          A01777771 Loki Laufeyson
;----------------------------------------------------------

Crear una carpeta llamada resaltador. Colocar en esta carpeta los siguientes archivos:

Crear un archivo llamado resaltador.zip que contenga la carpeta resaltador y todo su contenido.


Instrucciones para subir archivo

Para entregar el archivo resaltador.zip, ingresa los siguientes datos:

Solicitar NIP

Solo es necesario que lo entregue un miembro del equipo.

La fecha límite es el miércoles 12 de junio.

Referencias