98 van Wijngaarden, et al.Assignations and other COMORFs are voided without any deproeeduringso that, in proc void p;.p := finish, the assignation p := finish does notprescribe an unexpected calling of the routine finish.}6.7.1. SyntaxA) NONPROC :: PLAIN ; STOWED ; REF to NONPROC ;procedure with PARAMETERS yielding MOlD ; UNITED.a) voided to{flA} void MORF : deprocedured to{63a} NONPROC MORF ;unchanged from{61f} NONPROC MORF.b) voided to{61A} void COMORF :unchanged from{61f} MODE COMORF.{Examples:a) random (in skip; random;) •next random (last random)(in skip; next random (last random);)b) proc void (pp) (in proc proc void pp = proc void : (print (1);void : print (2)); proc void (pp);) }6.7.2. SemanticsThe elaboration of a voided-to-void-FORM consists of that of its directdescendent, and yields empty.7. Modes and nests{The identification of a property in a nest is the static counterpart ofthe dynamic determination (4.8.2.b) of a value in an environ: the search isconducted from the newest (youngest) level towards the previous (older)ones.Modes are composed from the primitive modes, such as 'boolean', withthe aid of "HEAD's, such as "structured with', and they may be reeursive.Recursive modes spelled in different ways may nevertheless beequivalent. The syntax tests the equivalence of such modes by provingthat it is impossible to find any discrepancy between their respectivestructures or component modes.A number of unsafe uses of properties are prevented. An identifier ormode-indication is not declared more than once in each reach. The modesof the operands of a formula do not determine more than one operation.Reeursions in modes do not cause the creation of dynamic objects ofunlimited size and do not allow ambiguous coercions.}7.1. Independence of properties{The following syntax determines whether two properties (i.e., two"PROP's), such as those corresponding to teal x and int x, may or may notbe enveloped by the same 'LAYER'.}7.1.1. SyntaxA)B)C)a)b)e)d)e)f)g)h)i)J)k)ALGOL <strong>68</strong> Revised ReportPREF :: procedure yielding ; REF to.NONPREF :: PLAIN ; STOWED ;procedure with PARAMETERS yielding MOID ; UNITED ; void."PREFSETY :: PREF PREFSETY ; EMPTY.{PROP :: DEC ; LAB ; FIELD.QUALITY :: MODE ; MOlD TALLY ; DYADIC ; label ; MODE field.TAX :: TAG ; TAB ; TAD ; TAM.TAO :: TAD ; TAM.}WHETHER PROPI independent PROPS2 PROP2{a,48a,c,72a} :WHETHER PROPI independent PROPS2{a,c}and PROPI independent PROP2{c}.WHETHER PROP independent EMPTY{48a,e,72a} : WHETHER true.WHETHER QUALITYI TAXiindependent QUALITY2 TAX2{a,48a,c,72a} :unless (TAXI) is (TAX2), WHETHER true ;where (TAXI) is (TAX2) and (TAXI) is (TAO),WHETHER QUALITYI independent QUALITY2{d}.WHETHER QUALITYI independent QUALITY2{e} :where QUALITYI related QUALITY2{e,f,g,h,i,j,-},WHETHER false ;unless QUALITY 1 related QUALITY2{e,f,g,h,i,j,-},WHETHER true,WHETHER MONO related DUO{d} : WHETHER false.WHETHER DUO related MONO{d} : WHETHER false.WHETHER PRAM related DYADIC{d} : WHETHER false.WHETHER DYADIC related PRAM{d} : WHETItER false.WHETHER procedure with MODEl parameter MODE2 parameteryielding MOIDI relatedprocedure with MODE3 parameter MODE4 parameteryielding MOID2{d} :WHETHER MODEl firmly related MODE3{k}and MODE2 firmly related MODE4{k}.WHETHER procedure with MODEl parameter yielding MOIDIrelated procedure with MODE2 parameter yieldingMOID2{d} : WHETHER MODEl firmly related MODE2{k}.WHETHER MOIDI firmly related MOID2{i,j} :WHETHER MOODSI is firm MOID2{I,m}or MOODS2 is firm MOIDI{I,m},where (MOODSI) is (MOIDI)or (union of MOODSI mode) is (MOIDI),where (MOODS2) is (MOLD2)or (union of MOODS2 mode) is (MOLD2).99
lO0van Wijngaarden, et al.ALGOL <strong>68</strong> Revised Report 1011) WHETHER MOODS MOOD is firm MOID{k,I} :WHETHER MOODS is firm MOID{I,m}or MOOD is firm MOlD{m}.m) WHETHER MOIDI is firm MOID2{k,l,n,47f} :WHETHER MOIDI equivalent MOlD2{73a}or MOIDI unites to MOID2{64b}or MOIDI deprefs to firm MOID2{n}.n) WHETHER MOIDI deprefs to firm MOID2{m} :where (MOIDI) is (PREF MOLD3),WHETHER MOLD5 is firm MOID2{m},where MOLD3 deflexes to MOID5{47a,b,c} ;where (MOIDI) is (NONPREF), WHETHER false.{To prevent the ambiguous application of indicators, as in real x, intx;x := 0, certain restrictions are imposed on defining-indicators contained ina given reach. These are enforced by the syntactic test for "independence"of properties enveloped by a given 'LAYER' (rules a, b, c). A sufficientcondition, not satisfied in the example above, for the independence of apair of properties, each being some 'QUALITY TAX', is that the 'TAX'sdiffer (rule c). For "TAX's which are not some "TAO', this condition is alsonecessary, so that even real x, int x; skip is not a serial-clause.For two properties 'QUALITY1 TAO" and "Q[IALITY2 TAO' the test forindependence is more complicated, as is exemplified by the serial-clauseop + = (int i) bool : true, op + = (int i, j) int : 1, op + = (int i, bool j) int : 2,prio + = 6;0++0¢=2¢.Ambiguities would be present inprio+=6, += 7; 1+2x3 ¢ 7 or 97 ¢ ,inop z = (int i) int : i, mode z = int;z i ¢ formula or declaration? ¢ ; skip ,and inop ? = (union (tel real, char) a) int : I, op ? = (real a) int : 2;? loc real ¢ l or27¢.In such cases a test is made that the two 'QUALITY's are independent(rules c, d). A "MOLD TALLY' is never independent of any "QUALITY'(rule d). A 'MONO' is always independent of a 'DUO' (rules d, e, f) andboth are independent of a "DYADIC' (i.e., of a 'priority PRIO') (rules d, g,h). In the case of two 'PRAM's which are both 'MONO' or both "DUO',ambiguities could arise if the corresponding parameter modes were"firmly related", i.e., if some (pair of) operand mode(s) could be firmlycoerced to the (pair of) parameter mode(s) of either 'PRAM' (rules i, j).In the example with the two definitions of 7, the two 'PRAM's are relatedsince the modes specified by union (ref real, char) and by real are firmlyrelated, the mode specified by ref real being firmly coercible to either one.It may be shown that two modes are firmly related if one of them, orsome component "MOOD' of one of them, may be firmly coerced to theother (rules k, 1), which requires a sequence of zero or more meekcoercions followed by at most one uniting (6.4.1.a). The possibility orotherwise of such a sequence of coercions between two modes isdetermined by the predicate 'is firm' (rules m, n).A "PROPI" also renders inaccessible a 'PROP2" in an outer 'LAYER' ifthat 'PROP2' is not independent of 'PROPI'; e.g.,begin int x;begin real x; ¢ here the 'PROPI' is 'reference to real letter x'¢skipendendand likewisebegin op ? = (int i) int : 1, int k : = 2;begin op ? = (ref int i) int " 3;? k ¢ delivers 3, but ? 4 could not occur here because itsoperator is inaccessible ¢endend .}7.2. Identification in nests{This section ensures that for each applied-indicatorcorresponding property in some suitable "I,AYER' of the nest.}7.2.1. Syntaxa)b)c)there is a{PROPSETY :: PROPS ; EMPTY.PROPS :: PROP ; PROPS PROP.PROP :: DEC ; LAB ; FIELD.QUALITY :: MODE ; MOlD TALLY ; DYADIC ; label ; MODE field.TAX :: TAG ; TAB ; TAD ; TAM.]WHETHER PROP identified in NEST new PROPSETY{a,48b,542a} :where PROP resides in PROPSETY{b,c,-}, WHETHER true ;where PROP independent PROPSETY{71a,b,e},WHETHER PROP identified in NEST[a,-}.WHETHER PROPI resides in PROPS2 PROP2{a,b,48d} :WHETHER PROPI resides in PROP2{c,-}or PROPI resides in PROPS2{b,e,-}.WHETHER QUALITYI TAX resides in QUALITY2 TAX{a,b,48d} :where (QUALITYI) is (label) or (QUALITYI) is (DYADIC)or (QUALITYI) is (MODE field),WHETHER (QUALITYI) is (QUALITY2) ;where (QUALITYI) is (MOIDI TALLETY)and (QUALITY2) is (MOLD2 TALLETY),WHETHER MOIDI equivalent MOID2{73a].
- 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 20 and 21: 38 van Wijngaarden, et al.A protono
- 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 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