Mouse (programming language)
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: 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. Input. Mouse may input integers or characters. When a character is input, it  is automatically converted to its ASCII code. 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. Conditionals. A conditional statement has the general form: 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: 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. Here "p1" and "p2" are parameters passed to the macro. Example programs. This short program prints 'Hello world.' This program displays the squares of the integers from 1 to 10.