ILP: Intérprete para un Lenguaje Pila

Este es un pequeño intérprete para un lenguaje pila (stack language) que hize en un par de tardes de aburrimiento preparando material para dar clases de programación en C, intentando demostrar la potencia de una simple pila.

Lamentablemente (creo) me intusiasmé demasiado y, aunque no es nada complejo, el intéprete no me vale para las clases.

En cualquier caso aquí está.

He numerado 1.0 la primera versión pública, aunque no se si habrán más versiones si no es para corregir errores. Pero, ¿quién sabe? ;)

De todas formas no deja de ser un toy language solo interesante para programadores que quieran experimentar con la programación de compiladores o intérpretes.

Agosto de 2003

Sobre el lenguaje: LP

ILP es un intérprete para un lenguaje pila, aunque sería más correcto decir basado en una pila. La principal característica, que sin duda recordará a lenguajes de uso extendido como forth, es su notación polaca inversa (por ejemplo, 1+1 se escribe 1 1 +).

El leguaje es sencillo y contiene estructuras básicas para implementar bucles, condicionales y entrada/salida básica. Lo suficiente para crear sencillos programas.

Todo ello por debajo de las 1000 lineas de código (contando los comentarios), que permite que sea fácil entender y extender el intérprete.

Características versión 1.0

Ejemplos

Algunas comparaciones con C:

/* en C */
for(i=0;i<10;i++)
	printf("iteracion %i\n",i);
# en LP
i 0 =
:
	"iteracion " i $$
	i i 1 + = # esto es i=i+1
i 10 < ^
/* en C */
if(a==b)
	printf("a es igual a b");
else
{
	if(a>b)
		printf("a es mayor que b");
	else
		printf("a es menor que b");
}
# en LP (no hay equivalente a 'else')
a b E !
	"a es igual a b" ;
a b > !
	"a es mayor que b" ;
a b < !
	"a es menor que b" ;

Autor

El autor de ILP es:

Juan J. Martinez <jjm *at* usebox.net>

Mi página personal se encuentra aquí.

Cualquier comentario, corrección o mejora será bienvenida.

Descargas / Download

ILP se distribuye bajo licencia X11/MIT. Puede consultar la licencia aquí.

Los fuentes están preparados para compilar en cualquier UN*X (GNU/Linux, *BSD, ...) y con suerte solo será necesario hacer make en la mayoría de los sistemas.

ILP Versión 1.0.1

Sourceilp-1.0.1.tar.gzMD5 3b9dc03ed2b10f286b4e240b777bf3bf

Documentación incluida en el paquete: LEEME (español), README (english), CHANGELOG.

Versiones anteriores:

Sourceilp-1.0.tar.gzMD5 d25f33e427d7c3b7b1e0f3f14d419ffa

Hay un port ya compilado para Win32: ilp-1.0-win32.zip. Parece funcionar, aunque no lo he probado demasiado.

Última actualización: 29 de Septiembre 2003