The Mouse programming language is a small computer
programming language developed by Dr. Peter Grogono in the late 1970s and early 1980s.
[Grogono, Peter. ''Mouse: A Language for Microcomputers''. 151 pages. Petrocelli Books, Inc.: 1983. .] It was developed as an extension of an earlier language called MUSYS, which was used to control digital and analog devices in an electronic music studio.
Mouse was originally intended as a small, efficient language for
microcomputer
A microcomputer is a small, relatively inexpensive computer having a central processing unit (CPU) made out of a microprocessor. The computer also includes memory and input/output (I/O) circuitry together mounted on a printed circuit board (PC ...
s with limited memory. It is an interpreted,
stack
Stack may refer to:
Places
* Stack Island, an island game reserve in Bass Strait, south-eastern Australia, in Tasmania’s Hunter Island Group
* Blue Stack Mountains, in Co. Donegal, Ireland
People
* Stack (surname) (including a list of people ...
-based language and uses
Reverse Polish notation. To make an interpreter as easy as possible to implement, Mouse is designed so that a program is processed as a stream of characters, interpreted one character at a time.
The elements of the Mouse language consist of a set of (mostly) one-character symbols, each of which performs a specific function (see table below). Since variable names are limited to one character, there are only 26 possible variables in Mouse (named A-Z). Integers and characters are the only available data types.
Despite these limits, Mouse includes a number of relatively advanced features, including:
* Conditional branching
* Loops
* Pointers
* Macros (subroutines (which may be recursive))
* Arrays
* Code tracing
The design of the Mouse language makes it ideal for teaching the design of a simple interpreter. Much of the book describing Mouse
is devoted to describing the implementation of two interpreters, one in
Z80 assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
, the other in
Pascal
Pascal, Pascal's or PASCAL may refer to:
People and fictional characters
* Pascal (given name), including a list of people with the name
* Pascal (surname), including a list of people and fictional characters with the name
** Blaise Pascal, Fren ...
.
Details
The language described here is the later version of Mouse, as described in the Mouse book.
This version is an extension of the language described in the original magazine article.
Symbols
The following table describes each of the symbols used by Mouse.
Here X refers to the number on the top of the stack, and Y is the next number on the stack.
Expressions
Common idioms
These expressions appear frequently in Mouse programs.
X: ~ store into variable X
X. ~ recall variable X
X. Y: ~ copy X into Y
N. 1 + N: ~ increment N by 1
P. Q. P: Q: ~ swap values of P and Q
? A: ~ input a number and store in A
P. ! ~ print variable P
Input
Mouse may input integers or characters. When a character is input, it is automatically converted to its ASCII code.
? X: ~ input a number and store into X
?' X: ~ input a character and store its ASCII code into X
Output
Mouse may print integers, characters, or string constants, as shown in these examples. If an exclamation point appears in a string constant, a new line is printed.
X. ! ~ recall number X and print it
X. !' ~ recall ASCII code X and print character
"Hello" ~ print string "Hello"
"Line 1!Line 2" ~ print strings "Line 1" and "Line 2" on two lines
Conditionals
A conditional statement has the general form:
B S ~ equivalent to: if B then S
Here ''B'' is an expression that evaluates to 1 (true) or 0 (false), and ''S'' is a sequence of statements.
Loops
Loops may have one of several forms. Most common are the forms:
(B ^ S) ~ equivalent to: while B do S
(S B ^) ~ equivalent to: repeat S until (not B)
Here again ''B'' is a boolean value (0 or 1), and ''S'' is a sequence of statements.
Macro calls
The format of a macro (subroutine) call may be illustrated by the following example. Macro A in this example adds the two parameters passed to it from the main program, and returns the sum on the top of the stack.
#A,p1,p2; ~ call in main program to macro A
...
$A 1% 2% + @ ~ macro A (add parameters p1 and p2)
Here ''p1'' and ''p2'' are parameters passed to the macro.
Example programs
This short program prints 'Hello world.'
"Hello world."
$
This program displays the squares of the integers from 1 to 10.
1 N: ~ initialize N to 1
( N. N. * ! " " ~ begin loop; print squares of numbers
N. 10 - 0 < ^ ~ exit loop if N >= 10
N. 1 + N: ) $ ~ increment N and repeat loop
Notes
External links
The Mouse Programming LanguageFriends of the MouseMouse: Computer Programming Language(includes source code for Mouse interpreters)
Information on sourceforge.net
{{Authority control
Stack-oriented programming languages