82 van Wijngaarden, et al.ALGOL <strong>68</strong> Revised Report835.2.4. Nihils5.2.4.1. Syntaxa) strong reference to MODE NEST nihil{5B} : nil{94f} token.{Example:a) nil }5.2.4.2. SemanticsThe yield of a nihil is a nil name.5.3. Units associated with stowed values{In Flanders fields the poppies blowBetween the crosses, row on row ....In Flanders Fields, John McCrae.}{The fields of structured values may be obtained by selections (5.3.1)and the elements of multiple values by slices (5.3.2); the correspondingeffects on stowed names are defined also.}5.3.1. Selections{A selection selects a field from a structured value or (if it is a"multiple selection") it selects a multiple value from a multiple valuewhose elements are structured values. For example, re of z selects thefirst real field (usually termed the real part) of the yield of z. If z yields aname, then re of z also yields a name, but if g yields a complex value,then re of g yields a real value, not a name referring to one.]5.3.1.I. SyntaxA) REFETY :: REF to ; EMPTY.B) REFLEXETY :: REF to ; REF to flexible ; EMPTY.{REF :: reference ; transient reference.}a) REFETY MODEl NEST selection{5C} :MODEl field FIELDS applied field selector with TAG{48d},of {94f} token, weak REFETY structured with FIELDS modeNEST SECONDARY{5C} ;where (MODEl) is (ROWS of MODE2),MODE2 field FIELDS applied field selector with TAG{48d},of{94f} token, weak REFLEXETY ROWS of structured withFIELDS mode NEST SECONDARY{5C},where (REFETY) is derived from (REFLEXETY){b,c,-}.b) WHETHER (transient reference to) is derived from(REF to flexible){a,532a,66a} : WHETHER true.c) WHETHER (REFETY) is derived from (REFETY){a,532a,66a} :WHETHER true.{Examples:a) reotz • reofzl }{The mode of re of z begins with 'reference to' because that of z does.Example:int age := 7; struct (bool sex, tnt age) jill;age of jill := age;Note that the destination age of jill yields a name because jill yields one.After the identity-declarationstruct (bool sex, int age) jack = (true, 9),age of jack cannot be assigned to since jack is not a variable.}5.3.1.2. SemanticsThe yield W of a selection S is determined as follows:• let V be the yield of the SECONDARY of S;• it is required that Y {if it is a name} be not nil;• W is the value selected in {2.1.3.3.a,e, 2.1.3.4.k} or the name generatedfrom {2.1.3.4.1} Y by the field-selector of S.{A selection in a name referring to a structured value yields an existingsubname (2.1.3.3.e) of that name. The name generated from a namereferring to a multiple value, by way of a selection with a ROWS-of-MODE-SECONDARY (as in re of zl), is a name which may or may not be newlycreated for the purpose.}5.3.2. Slices{Slices are obtained by subscripting, e.g., xl [i], by trimming, e.g.,x112: n] or by both, e.g., x2[j: n,j] or x2[,k]. Subscripting andtrimming may be done only to PRIMARYs, e.g., xl or (p[xl[yl) but notre otzl. The value of a slice may be either one element of the yield of itsPRIMARY or a subset of the elements; e.g., xl [i] is a real number fromthe row of real numbers xl, x2 [i, ] is the i-th row of the matrix x2 andx2 [, k] is its k-th column.}5.3.2.1. SyntaxA) ROWSETY :: ROWS ; EMPTY.a) REFETY MODEl NEST slice{5D} :weak REFLEXETY ROWSI of MODEl NEST PRIMARY{5D},ROWSI leaving EMPTY NEST indexer{b,c,-} STYLE bracket,where (REFETY) is derived from (REFLEXETY){531b,c,-} ;where (MODEl) is (ROWS2 of MODE2),weak REFLEXETY ROWSI of MODE2 NEST PRIMARY{5D},ROWSI leaving ROWS2 NEST indexer{b,d,-} STYLE bracket,where (REFETY) is derived from (REFLEXETY){531b,c,-}.{ROWS :: row ; ROWS row.}
84 van Wijngaarden, et al.b) row ROWS leaving ROWSETYI ROWSETY2 NEST indexer{a,b} :row leaving ROWSETYI NEST indexer{c,d,-}, and also{94f] token,ROWS leaving ROWSETY2 NEST indexer{b,c,d,-}.c) row leaving EMPTY NEST indexer{a,b} : NEST subscript{e}.d) row leaving row NEST indexer{a,b} : NEST trimmer{f} ;NEST revised lower bound{g} option.e) NEST subscript[e} : meek integral NEST unit{32d}.f) NEST trimmer{d} : NEST lower bound{46m} option, up to{94f} token,NEST upper bound{46n} option,NEST revised lower bound{g} option.g) NEST revised lower bound{d,f} :at{94f} token, NEST lower bound{46m}.h) * trimscript : NEST subscript{e} ; NEST trimmer{f} ;NEST revised lower bound{g} option.i) *indexer : ROWS leaving ROWSETY NEST indexer{b,c,d}.j) *boundscript : NEST subscript{e} ; NEST lower bound{46m} ;NEST upper bound{46n} ; NEST revised lower bound{g}.{Examples:a) x2 [i,j] • x2 [,j]b) 1: 2, j (in x2 [1 : 2,j]) • i, j (in x2 [i,j])c) j (in x2 [1 : 2,j]) d) 1 : 2 • @0 (in xl [@0])e) j f) 1:2 @0g) @0 }{A subscript decreases the number of dimensions by one, but atrimmer leaves it unchanged. In rule a, 'ROWSI" reflects the number oftrimsripts in the slice, and "ROWS2' the number of these which aretrimmers or revised-lower-bound-options.If the value to be sliced is a name, then the yield of the slice is also aname. Moreover, if the mode of the former name is 'reference to flexibleROWSI of MODE', then that yield is a transient name (see 2.1.3.6.c).}5.3.2.2. Semanticsa) The yield W of a slice S is determined as follows:• let Y and 01 ..... I n) be the [collateral} yields of the PRIMARY of Sand of the indexer {b} of S;• it is required that V {if it is a name} be not nil;• let ((r 1, s 1) ..... fin' Sn)) be the descriptor of V or of the value referredto by V;For i = 1 ..... n,Case A: I. is an integer:!• it is required that r.
- 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 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