Modula-3: Declarations

# Declarations

> There are two basic methods of declaring high or low before the showdown in all High-Low Poker games. They are (1) simultaneous declarations, and (2) consecutive declarations `....` It is a sad but true fact that the consecutive method spoils the game. ---John Scarne's Guide to Modern Poker

A declaration introduces a name for a constant, type, variable, exception, or procedure. The scope of the name is the block containing the declaration. A block has the form:

        Decls BEGIN S END

where `Decls` is a sequence of declarations and `S` is a statement, the executable part of the block. A block can appear as a statement or as the body of a module or procedure. The declarations of a block can introduce a name at most once, though a name can be redeclared in nested blocks, and a procedure declared in an interface can be redeclared in a module exporting the interface. The order of declarations in a block does not matter, except to determine the order of initialization of variables.

Each type of declaration is described below

- Types
- Constants
- Variables
- Procedures
- Exceptions
- Opaque types
- Revelations
- Recursive declarations

    Last modified on Tue Oct  3 17:20:24 PDT 1995 by heydon
         modified on Mon Apr 18 13:47:55 PDT 1994 by kalsow