Soy estudiante Universitario, actualmente curso 5º semestre de informática.
Un profesor de la cátedra lenguajes de programación propuso el siguiente ejercicio:
Se requiere de sus buenos oficios para la implementación en Perl de un intérprete para MiX, lenguaje sencillo con soporte de declaraciones de variables, asignación, salto explícito, operaciones aritméticas básicas y comentarios con #. El lenguaje usa solo mayúsculas, pero no toma en cuenta los espacios en blanco. La secuencia de instrucciones a interpretar será cargada automáticamente desde un archivo llamado TESTn.MiX. Las instrucciones del lenguaje son:
- DEF v: Declara v como una variable entera, v debe ser solo letras, pueden declararse n variable.
- SET v y: asigna el número entero (o variable) “y” a la variable “v”.
- + v y: suma la variable “v” con el número entero (o variable) “y”. El resultado se almacena en “v”.
- - v y: resta la variable “v” con el número entero (o variable) “y”. El resultado se almacena en “v”.
- * v y: multiplica la variable “v” con el número entero (o variable) “y”. El resultado se almacena en “v”.
- / v y: divide la variable “v” con el número entero (o variable) “y”. El resultado se almacena en “v”.
- LABEL i: establece una etiqueta, i debe ser un número entre 1 y 999
- < v y i: Si la variable v es menor que el número entero (o variable) “y”, saltar a la etiqueta i.
- > v y i: Si la variable v es mayor que el número entero (o variable) “y”, saltar a la etiqueta i.
- = v y i: Si la variable v es igual que el número entero (o variable) “y”, saltar a la etiqueta i.
- ! v y i: Si la variable v es diferente que el número entero (o variable) “y”, saltar a la etiqueta i.
- GO i: salta a la etiqueta i.
- Interpretar el programa completo.
- Generar un archivo de resultados llamado MiX.xml que contenga:
- Nombre del archivo interpretado, con la cantidad de líneas de código que posee.
- Las variable declaradas con su respectivo valor al culminar la interpretación.
- Cantidad de operaciones aritméticas que fueron efectuadas, por operación.
- Cantidad de saltos efectuados (condicionales o explícitos).
- Código: Seleccionar todo
Ejemplo: el siguiente programa MiX calcula el factorial de 4:
DEF A B C #declaración de 3 variables A,B y C
#inicialización de variable
SET A 4 # A=4
#la inicialización a cero no es necesaria si el interprete lo hace automáticamente
SET B 0
SET C 1
#
# aquí comienza un ciclo
LABEL 1
+ B 1 #B = B +1
* C B #C = C*B
< B A 1 #mientras (B<A) saltar a la etiqueta LABEL 1
END
No pretendo que me resuelvan el problema , pero sí me echen una mano, ya que no conozco el lenguaje en lo absoluto, pero sí he programado bastante en otros lenguajes, así que manejo un poco la terminología de programación.
El análisis del problema que el profesor dio, pues es bastante evidente, no hay interacción con el usuario en lo absoluto, simplemente se va a interpretar un lenguaje (MiX: lenguaje inventado por el profesor) y se va a emitir una hoja de reportes en .xml con la exigencias antes planteadas.
Hasta el momento solo he podido leer un archivo de texto, he podido separar línea por línea dicho archivo y almacenar su contenido en arreglos.
Cualquier ayuda es bien recibida, yo tengo que entregar este trabajo el viernes, pero de no poder terminarlo a tiempo, igualmente quiero resolverlo, me parece que es un problema bastante completo y que me permitirá familiarizarme con Perl, ¡el cual me parece un lenguaje bastante amplio e interesante!... sin más que agregar ¡me despido!
¡Mis respetos!