PMS and ISP notations
This appendix provides complete definitions of the notations used for the PMS and ISP descriptions. It is intended to supplement Chap. 2, which provides an informal description of the notations along with some comments on motivation and underlying rationale.
The two descriptive systems are consistent with each other in two senses. First, certain general conventions that have to do with forming expressions and abbreviating apply to both systems. Second, the values of certain PMS attributes are describable in ISP but not in PMS. A complete "top down" development would thus embed ISP within PMS. Nevertheless, it appears appropriate to present them as two distinct notations: it makes reference easier and permits each to be organized around its own most important notions.
The style of presentation is moderately formal. Within a section, the syntax is presented, followed by remarks on the interpretation to be given to these syntactic forms (the semantics). Examples that help to pin down the notations are furnished throughout. Although not a computer language, we present it as if it were; thus, a number of elementary things are provided for in the definitions. (Part of the motivation for this is to introduce abbreviations.)
A language can be realized in many media. In this book we have taken some advantage of printing orthography insofar as it enhances communication. However, it may also be necessary to map the notations into various restrictive character sets-e.g., those of the typewriter and the computer. For the sake of brevity, we do not discuss this coding problem here.
The appendix is in three parts. The first part gives the general conventions common to both PMS and ISP. The second and third parts give PMS (page 615) and ISP (page 628), as discussed in Chap. 2.
The conventions given in this section define the general nature of the syntax and semantics of both PMS and ISP.
These general conventions parallel closely natural usage by technically trained people familiar with programming languages, such as ALGOL. There is no need to consult these sections if the brief statements and illustrations following each subsection title are clearly understood.
1 Basic semantics
The language can refer to any entities that are given by attributes and values.
(There is no need for metanotation unless general conventions are to be read in detail.)
3 Basic syntax
Expressions are built up from subexpressions and ultimately from names. Parentheses are used to avoid ambiguity.
4 Commands: assignments, abbreviations, variables, forms
x : = y assigns the name x to mean the same as the expression y.
x / y establishes the name y as an abbreviation or alternative name (alias) for x.
x - y : = min(x - y, 0) defines a new binary operation (-) by means of a form in the variables x and y.
5 Indefinite expressions
a÷ b÷ c means one of a or b or c.
x ~ y means the interval from x up to and including y.
~x means an interval around x of undetermined scope.
6 Lists and sets
(3, 5, 1, 5) is a list of digits, which also could have been written (3; 5; 1; 5). Digit-list refers to all possible lists of digits. Digit-set refers to all possible sets digits, unordered and without repetition.
7 Definite expressions
X : = (size: integer; function: (primary÷ secondary); control: (yes ÷ no)) defines X to be an entity with an attribute, size, taking any integer as value; with an attribute, function, taking primary or secondary as value; and with an attribute, control, taking yes or no as value.
Y : = X(size: 12 ~ 20; primary; Ø control) defines Y as an entity of type X which is further specified by having size between 12 and 20, having the value of function be primary and the value of control be no.
3:Z is the third item on the list Z; - 1:Z is the last item. (add-time, store-time) can be an attribute and then has values such as (10 m s, 6 m s).
9 Null symbol and optional expressions
Æ is the null symbol so that (x, Æ , y) is the same as (x, y). *x means that x is optional; defined as (x÷ Æ )
Simple-names are strings of letters and digits, permitting concatenation with the space (_ ) and the hyphen (-). 'The_ big_ instruction-set' is a simple-name.
Memory.primary is a compound name, which is an abbreviation for Memory(primary).
Classes of names can be constructed and assigned to be used for various entities-if for an entity, X, then called X-names.