38 van Wijngaarden, et al.A protonotion P is "equivalent to" a protonotion Q if it is possible totransform a copy Pc of P into a copy Qc of Q in the following step:Step: If Pc is not identical to Qc, then some 'M()II)I' contained in Pc, butnot within any {larger} "MOll)2' contained in. Pc, is replaced by someequivalent 'MOll)', and the Step is taken again.{Thus 'union of integral real mode identifier' is equivalent to "union or realintegral mode identifier'.}b) A "mode" is a class C of 'MOlD's such that each member of C isequivalent {a} to each other member of C and also to itself {in order toensure well formedness}, but not to any 'MOII)I' which is not a member, ofC.{However, it is possible (except when equivalence of rnodes isspecifically under discussion) to discuss a mode as if it were simply aterminal metaproduction of "MOLD", by virtue of the abbreviation to begiven in 2.1.5.f.}c) Each value is of one specific mode.{For example, the mode of the value 3.14 is "real'. However, there areno values whose mode begins with 'union or, 'transient reference to' or'flexible R()~'S or (see 2.1.3.6).}2.1.1.3. Scopes{A value Y may "refer to" (2.1.2.e), or be composed from (2.1.l.Ld~*another internal object O (e.g., a name may refer to a value: a routm¢.which is a scene, is composed, in part, from an environ). Now the lifetimeof the storage cells containing (2.1.3.2.a) or implied by (2.1.1.1.b) O maybe limited (in order that they may be recovered after a certain time), andtherefore it must not be possible to preserve Y beyond that lifetime, forotherwise an attempt to reach some no-longer-existent storage cell via Ymight still be made. This restriction is expressed by saying that, if Y is tobe "assigned" (5.2.1.2.b) to some name W, then the "scope" of W must notbe "older" than the scope of Y. Thus, the scope of Y is a measure of theage of those storage cells, and hence of their lifetime.}a) Each value has one specific "scope" {which depends upon its modeor upon the manner of its creation: the scope of a value is defined to bethe same as that of some environ}.b) Each environ has one specific "scope". {The scope of each environis "newer" (2.1.2.f) than that of the environ from which it is composed(2.1.1.1.c) .}{The scope of an environ is not to be confused with the scopes of thevalues accessed inside its locale. Rather, the scope of an environ is usedwhen defining the scope of scenes for which it is necessary (7.2.2.c) or ofthe yields of generators for which it is "local" (5.2.3.2.b). The scope of tinenviron is defined relative (2.1.2.f) to the scope of some other environ, sothat hierarchies of scopes are created depending ultimately upon the scopeof the primal environ (2.2.2.a).}2.1.2. RelationshipsALGOL <strong>68</strong> Revised Report 39a) Relationships either are "permanent", i.e., independent of theprogram and of its elaboration, or actions may cause them to "hold" or tocease to hold. Relationships may also be "transitive"; i.e., if "*" is such arelationship and A*B and B*C hold, then A*C holds also.b) "To be the yield of" is a relationship between a value and anaction, viz., the elaboration of a scene. This relationship is made to holdupon the completion of that elaboration {2.1.4.1.b}.c) "To access" is a relationship between a "PROP" {4.8.1.E} and avalue or a scene V which may hold "inside" some specified locale L {whose'DECSETY LABSETY' envelops 'PROP'}. This relationship is made to holdwhen "PROP' is "made to access" V inside L {3.5.2.Step 4, 4.8.2.a} and itthen holds also between any 'PROPI' equivalent to {2.1.1.2.a} 'PROP" and Vinside L.d) The permanent relationships between values are: "to be of thesame mode as" {2.1.1.2.c}, "to be smaller than", "to be widenable to", "tobe lengthenable to" {2.1.3.1.e} and "to be equivalent to" {2.1.3.1.g}. If one ofthese relationships is defined at all for a given pair of values, then iteither holds or does not hold permanently. These relationships are alltransitive.e) "To refer to" is a relationship between a "name" [2.t.3.2.a} N andsome other value. This relationship is made to hold when N is "made torefer to" that value and ceases to hold when N is made to refer to someother value.f) There are three transitive relationships between scopes, viz., ascope A {2.1.1.3} may be either "newer than", or "the same as" or "olderthan" a scope B. If A is newer than B, then B is older than A and viceversa.If A is the same as B, then A is neither newer nor older than B {butthe converse is not necessarily true, since the relationship is not defined atall for some pairs of scopes}.g) "To be a subname of" is a relationship between a name and a"stowed name" {2.1.3.2.b}. This relationship is made to hold when thatstowed name is "endowed with subnames" {2.1.3.3.e, 2.1.3.4.g} or when it is"generated" {2.1.3.4.j,1}, and it continues to hold until that stowed name isendowed with a different set of subnames.2.1.3. Values2.1.3.1. Plain valuesa) A plain value is either an "arithmetic value", i.e., tin "integer" or a"real number", or is a "truth value" {f}, a "character" {g} or a "void value"{hi.
40 van Wijngaarden, et aLb) An arithmetic value has a "size", i.e., an integer characterizing thedegree of discrimination with which it is kept in the computer.c) The mode of an integer or of a real number of size n is,respectively, some 'SIZET¥ integral' or 'SIZETY real' where, if n ispositive (zero, negative), that 'SIZET¥' is n times 'long' (is empty, is -ntimes "short').d) The number of integers or of real numbers of a given size that canbe distinguished increases (decreases) with that size until a certain size isreached, viz., the "number of extra lengths" (minus the "number of extrashorths") of integers or of real numbers, respectively, {10.2.l.a,b,d,e} afterwhich it is constant.{Taking Three as the subject to reasonabout-A convenient number to state- }e) For the purpose of explaining the meaning of the widening coercionand of the operators declared in the standard-prelude, the followingproperties of arithmetic values are assumed:• for each pair of integers or of real numbers of the same size, therelationship "to be smaller than" is defined with its usual mathematicalmeaning {10.2.3.3.a, 10.2.3.4.a};• for each pair of integers of the same size, a third distinguishableinteger of that size may exist, the first integer "minus" the other{10.2.3.3.g};{We add Seven, and Ten, and then multiplyoutBy One Thousand diminished by Eight. }• for each pair of real numbers of the same size, three distinguishablereal numbers of that size may exist, the first real number "minus"("times", "divided by") the other one {10.2.3.4.g,l,m};• in the foregoing, the terms "minus", "times" and "divided by" havetheir usual mathematical meaning but, in the case of real numbers,their results are obtained "in the sense of numerical analysis", i.e., byperforming those operations on numbers which may deviate slightlyfrom the given ones {; this deviation is left undefined in this Report}:{The result we proceed to divide, as yousee,By Ni'ne Hundred and Ninety and Two }• each integer of a given size is "widenable to" a real number close toit and of that same size {6.5};• each integer (real number) of a given size can be "lengthened to" aninteger (real number) close to it whose size is greater by one{10.2.3.3.q, 10.2.3.4.n}.f)ALGOL <strong>68</strong> Revised ReportA "truth value" is either "true" or "false". Its mode is "boolean'.{Then subtract Seventeen, and the answermust beExactly and perfectly true.The Hunting of the Snark, Lewis Carroll.}g) Each "character" is "equivalent" to a nonnegative integer of sizezero, its "integral equivalent" {10.2.1.n}: this relationship is defined only tothe extent that different characters have different integral equivalents,and that there exists a "largest integral equivalent" {10.2.1.p}. The mode ofa character is "character'.h) The only "void value" is "empty". Its mode is 'void'.{The elaboration of a construct yields a void value when no more usefulresult is needed. Since the syntax does not provide for void-variables, voididentity-declarationsor void-parameters, the programmer cannot makeuse of void values, except those arising from uniting (6.4).}i) The scope of a plain value is the scope of the primal environ{2.2.2.a}.2.1.3.2. Names{What's in a name? that which we call aroseBy any other name would smell as sweet.Romeo and Juliet, William Shakespeare.}a) A "name" is a value which can be "made to refer to" {d, 5.2.3.2.a,5.2.1.2.b} some other value, or which can be "nil" {and then refers to novalue}; moreover, for each mode beginning with 'reference to', there isexactly one nil name of that mode.A name may be "newly created" {by the elaboration of a generator(5.2.3.2) or a rowed-to-FORM (6.6.2), when a stowed name is endowed withsubnames (2.1.3.3.e, 2.1.3.4.g) and, possibly, when a name is "generated"(2.1.3.4.j, l)}. The name so created is different from all names already inexistence.{A name may be thought of as the address of the storage cell or cells,in the computer, used to contain the value referred to. The creation of aname implies the reservation of storage space to hold that value.}b) The mode of a name N is some 'reference to MODE" and any valuewhich is referred to by N must be "acceptable to" {2.1.3.6.d} that "MOI)E'.If 'MODE' is some 'STOWED', then N is said to be a "stowed name".c) The scope of a name is the scope of some specific environ {usuallythe "local environ" (5.2.3.2.b) of some generator}. The scope of a namewhich is nil is the scope of the primal environ {2.2.2.a}.41
- Page 2 and 3: van Wijngaarden, et al.1.1.4.2. Par
- Page 4: Acknowledgements{Habent sua fata li
- Page 8 and 9: 14 van Wijngaarden, et al.0.3.4. Mo
- Page 10 and 11: . . . . . . . 4 " ' 0 . . . . . . .
- Page 12 and 13: 22 van Wijngaarden, et al.• let P
- Page 14 and 15: 26 van Wijngaarden, et al.{Since so
- Page 16 and 17: 30 van Wijngaarden, et aLloperandfo
- Page 18 and 19: 34 van Wijngaarden, et al.j) WHETHE
- Page 22 and 23: 42 van Wijngaarden, et al.d) If N i
- Page 24 and 25: 46 van Wijngaarden, et al.c) {There
- Page 26 and 27: 50 van Wijngaarden, et al.c) The ph
- Page 28 and 29: 54 van Wijngaarden, et al.3.1.1. Sy
- Page 30 and 31: 58 van Wijngaarden, et al.where (RO
- Page 32 and 33: 62 van Wijngaarden, et al.1) SOlD N
- Page 34 and 35: 66 van Wijngaarden, et al.ALGOL 68
- Page 36 and 37: 70 van Wijngaarden, et el.For each
- Page 38 and 39: 74 van Wijngaarden, et al.If 'MODE"
- Page 40 and 41: 78 J van Wijngaarden, et al.C) SECO
- Page 42 and 43: 82 van Wijngaarden, et al.ALGOL 68
- Page 44 and 45: 86 van Wijngaarden. et al.ALGOL 68
- Page 46 and 47: 90 van Wijngaarden, et al.5.4.4.1.
- Page 48 and 49: 94van Wijngaarden, et al.ALGOL 68 R
- Page 50 and 51: 98 van Wijngaarden, et al.Assignati
- Page 52 and 53: 102 van Wijngaarden, et at.{A nest,
- Page 54 and 55: 106 van Wijngaarden, et al.'HEAD's
- Page 56 and 57: 110 van Wijngaarden, et al.ALGOL 68
- Page 58 and 59: 114van Wijngaarden, et al.ALGOL 68
- Page 60 and 61: 118 van Wijngaarden, et al.ALGOL 68
- Page 62 and 63: 122 van Wijngaarden, et al.style ii
- Page 64 and 65: 126 van Wijngaarden, et al.b) The c
- Page 66 and 67: 130van Wijngaarden, et al.ALGOL 68
- Page 68 and 69: 134van Wijngaarden, et al.ALGOL 68
- Page 70 and 71:
138d)e)f)g)h)i)J)k)1)m)n)van Wijnga
- Page 72 and 73:
142 van Wijngaarden, et al.physics
- Page 74 and 75:
146 van Wijngaarden, et al.gg) On s
- Page 76 and 77:
150van Wijngaarden, et al.ALGOL 68
- Page 78 and 79:
154/van Wijngaarden, et al.ALGOL 68
- Page 80 and 81:
158 van Wijngaarden, et el.fi;ref p
- Page 82 and 83:
162van Wijngaarden, et al.ALGOL 68
- Page 84 and 85:
166van Wijngaarden, et al.ALGOL 68
- Page 86 and 87:
170/van Wijngaarden, etal.ALGOL 68
- Page 88 and 89:
174J)K)L)M)N)O)P)a)b)c)d)e)van Wijn
- Page 90 and 91:
178/van Wijngaarden, et al.ALGOL 68
- Page 92 and 93:
182 van Wijngaarden, et al.• let
- Page 94 and 95:
186van Wijngaarden, et al./ALGOL 68
- Page 96 and 97:
190 van Wijngaarden, etal.composed
- Page 98 and 99:
194h)i)J)van Wijngaa(rden, et al.pr
- Page 100 and 101:
198 van Wijngaarden, et al.¢ strin
- Page 102 and 103:
202tvan Wijngaarden, et al.ALGOL 68
- Page 104 and 105:
206 van Wijngaa~den. et al.10.3.6.1
- Page 106 and 107:
210 van Wijngaarden, et al.!ALGOL 6
- Page 108 and 109:
214 van Wijngaarden, et al.inoperat
- Page 110 and 111:
218fvan Wijngaarden, et al.¢ move
- Page 112 and 113:
222 van Wijngaarden, etaL{overflow}
- Page 114 and 115:
226 van Wijngaarden, et al.ALGOL 68
- Page 116 and 117:
230max int 10.2.1.cmax real 10.2.l.
- Page 118 and 119:
234 van Wijngaarden, et al.ALGOL 68