The Mouse programming language is a small computer programming language developed by Dr. Peter Grogono in the late 1970s and early 1980s. 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 microcomputers with limited memory. It is an interpreted, stack-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, the other in Pascal. 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,