El lenguaje de programación Mouse (a veces escrito como MOUSE ) es un pequeño lenguaje de programación informática desarrollado por el Dr. Peter Grogono a fines de la década de 1970 y principios de la de 1980. [1] [2] [3] Fue desarrollado como una extensión de un lenguaje anterior llamado MUSYS, que se usaba para controlar dispositivos digitales y analógicos en un estudio de música electrónica.
Mouse fue pensado originalmente como un lenguaje pequeño y eficiente para microcomputadoras con memoria limitada. Es un lenguaje interpretado, basado en pila y utiliza notación polaca inversa . Para hacer que un intérprete sea lo más fácil posible de implementar, Mouse está diseñado de modo que un programa se procese como un flujo de caracteres, interpretados un carácter a la vez.
Los elementos del lenguaje Mouse consisten en un conjunto de símbolos (en su mayoría) de un solo carácter, cada uno de los cuales realiza una función específica (ver la tabla a continuación). Como los nombres de las variables están limitados a un carácter, solo hay 26 variables posibles en Mouse (denominadas de la A a la Z). Los números enteros y los caracteres son los únicos tipos de datos disponibles.
A pesar de estos límites, Mouse incluye una serie de funciones relativamente avanzadas, entre las que se incluyen:
El diseño del lenguaje Mouse lo hace ideal para enseñar el diseño de un intérprete simple. Gran parte del libro que describe Mouse [3] está dedicado a describir la implementación de dos intérpretes, uno en lenguaje ensamblador Z80 y el otro en Pascal .
El lenguaje descrito aquí es la versión posterior de Mouse, tal como se describe en el libro de Mouse. [3] Esta versión es una extensión del lenguaje descrito en el artículo original de la revista. [1]
La siguiente tabla describe cada uno de los símbolos utilizados por Mouse. [3] Aquí X se refiere al número en la parte superior de la pila, e Y es el siguiente número en la pila.
Estas expresiones aparecen con frecuencia en los programas de Mouse.
X: ~ almacenar en la variable XX. ~ recordar variable XX. Y: ~ copia X en YN. 1 + N: ~ incrementa N en 1PQ P: Q: ~ intercambia valores de P y Q? A: ~ ingresa un número y lo almacena en AP. ! ~ imprimir variable P
El ratón puede introducir números enteros o caracteres. Cuando se introduce un carácter, se convierte automáticamente a su código ASCII.
? X: ~ ingresa un número y lo almacena en X?' X: ~ ingresa un carácter y almacena su código ASCII en X
El mouse puede imprimir números enteros, caracteres o constantes de cadena, como se muestra en estos ejemplos. Si aparece un signo de exclamación en una constante de cadena, se imprime una nueva línea.
X. ! ~ recuerda el número X e imprímeloX. !' ~ recuerda el código ASCII X e imprime el carácter"Hola" ~ imprime la cadena "Hola""Línea 1!Línea 2" ~ imprime las cadenas "Línea 1" y "Línea 2" en dos líneas
Una declaración condicional tiene la forma general:
B [ S ] ~ equivalente a: si B entonces S
Aquí B es una expresión que evalúa como 1 (verdadero) o 0 (falso), y S es una secuencia de declaraciones.
Los bucles pueden tener varias formas. Las más comunes son las siguientes:
(B ^ S) ~ equivalente a: mientras B haga S(SB ^) ~ equivalente a: repetir S hasta (no B)
Aquí nuevamente B es un valor booleano (0 o 1) y S es una secuencia de declaraciones.
El formato de una llamada a una macro (subrutina) se puede ilustrar con el siguiente ejemplo. La macro A de este ejemplo suma los dos parámetros que se le pasan desde el programa principal y devuelve la suma en la parte superior de la pila.
#A,p1,p2; ~ llamada en el programa principal a la macro A...$A 1% 2% + @ ~ macro A (agrega los parámetros p1 y p2)
Aquí p1 y p2 son parámetros pasados a la macro.
Este programa corto imprime 'Hola mundo'.
"Hola Mundo."$
Este programa muestra los cuadrados de los números enteros del 1 al 10.
1 N: ~ inicializa N a 1( NN * ! " " ~ comienza el bucle; imprime cuadrados de números N. 10 - 0 < ^ ~ salir del bucle si N >= 10 N. 1 + N: ) $ ~ incrementa N y repite el bucle
{{cite news}}
: Verificar |url=
valor ( ayuda )