..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Notation: item | item=choose one; ?item=zero or one item; terminals: SMALL CAPS, underlined or punctuation other than bold ()?| (parens are terminals only in rules 19, 25, 51.1, 54, | only in 55). item s ...=zero or more items, separated by s; item s !..=one or more items, separated by s; with s=";", a trailing ";" is optional; s is one of: empty "," ";" .Abbreviated non-terminals: b=binding13; d=declaration11; e=expression19; n=name56; s=statement14; t=type36.20 Dec 82Comments: ·=obsolete; µ=efficiency hack; ¸=unsafe; ¹=machine dependent; n56 means n is defined in rule 56; n2=n (the subscript is only for the desugaring). CLRMFullGram.pressCedar Full Language Syntax¶3.3 1 module ::= DIRECTORY (nd ?( : TYPE ?nt ) ?(USING [ nu, ... ] ) ), ... ; ( interface | implementation ) 2 interface ::= nm, !.. : ?CEDAR DEFINITIONS ?locks?(IMPORTS ( (niv : | ) nit ), ...)?·(SHARES ns, ...) ~ ?·access12 { ?open6 (d | b); !.. } . 3 implementation ::= nm : ?CEDAR ?( SAFE | UNSAFE )( PROGRAM ?drType42 | MONITOR ?drType42 ?locks )?(IMPORTS ( (niv : | ) nit ), ...) ?(EXPORTS ne, ...)?·(SHARES ns, ...) ~ ?·access12 block .4 locks ::= LOCKS e ?(USING nu: t)¶3.4 5 block ::= ?(CHECKED | UNCHECKED | TRUSTED) { ?open ?enable ?body ?(EXITS (n, !..=>s); ...) } --In 3, 13, 14. 6 open ::= OPEN ( n ~~ e | e ), !.. ;In 2, 5, 17. ·The ~~ may be written as :. 7 enable ::= ENABLE (enChoice | {enChoice; ...}); --In 5, 17. 8 enChoice ::=( e, !.. | ANY ) => s --In 7, 27.1. 9 body ::= (d | b); !.. ; s; ... | s; !.. --In 5, 17. ¶3.511 declaration ::= n, !.. : ?access varTC40In 2, 9, 43. VAR, READONLY only for interface var.12 access ::= PUBLIC | PRIVATE --In 2, 3, 11, 13, 50, 51, 53.13 binding ::= n, !.. : ?access t ~ ( e | t2 -- if t=TYPE-- | CODE | ¹¸ ?TRUSTED MACHINE CODE { (e, ...); ... } | ?INLINE ?(ENTRY | INTERNAL) block5 )In 2, 9. ·The ~ may be written as =. ·ENTRY or INTERNAL may be writtenbefore t. Block or MACHINE CODE only for proc types.¶3.614 statement ::= e1_e2 | e | block5 | escape | loop | NULL--In 5, 9, 17, 19. 16 escape ::= GOTO n | GO TO n | EXIT | CONTINUE | ·LOOP |·RETRY | ·REJECT | (RETURN | RESUME) ?e | ¸¹e _ STATE17 loop ::= ?iterator ?(WHILE e | UNTIL e) DO ?·open6 ?·enable7 ?body9 ?·(REPEAT (n, !..=>s); ...) ENDLOOP18 iterator ::= THROUGH e | FOR (n : t | µn) ( ?DECREASING IN e | _ e1 , e2)e is a subrange. In FOR n: t ..., n is readonly.¶3.719 expression ::= n | literal57 | (e) | application26 | (e | typeName37) . (9) n | prefixOp e | e1 infixOp e2 | e1 AND (2) e2 | e1 OR (1) e2 | e ^ (9) | ·STOP | ERROR | [ argBinding27 ] | builtIn [ e, ... ?applEn27.1] | funnyAppl e ?( [?argBinding27 ?applEn27.1] ) |s | subrange25 | if28 | select29 | safeSelect32 | ·withSelect34 Precedence is in bold in rules 19-21. All operators associate to the left except_, which associates to the right. Application has highest precedence. Subrangeonly after IN or THROUGH. s only in ifŸ28 and select choices30 33 35.20 prefixOp ::= @ (8) | � (7) | (~ | NOT) (3)21 infixOp ::= * | / | MOD (6) | + | � (5) | relOp (4) |_ (0)22 relOp ::= ?NOT (?~ (= | < | >) | <= | >= | # | IN) --In 21, 30.23 builtIn ::= -- These are enumerated in Table 4�5.24 funnyAppl ::= FORK | JOIN | WAIT | NOTIFY | BROADCAST |SIGNAL | ERROR | RETURN WITH ERROR | ·NEW | ·START |·RESTART | ¹¸TRANSFER WITH | ¹¸RETURN WITH25 subrange ::= ?typeName37 ( [ e1 .. e2 ] | [ e1 .. e2 ) | ( e1 .. e2 ] | ( e1 .. e2 ) ) --In 19, 39, 48.26 application ::= e [ ?argBinding ?applEn ]27 argBinding ::= (n ~ (e | | µTRASH )), !.. | (e | | µTRASH), !..In 19, 26. ·The ~ may be written as :. ·NULL may be written for TRASH.27.1applEn ::= ! enChoice8; ... -- In 19, 26.¶3.828 if ::= IF e1 THEN e2 ?(ELSE e3)29 select ::= SELECT e FROM choice; ... endChoice The ";" is "," in an expression, here and in 32 and 34.30 choice ::= (?relOp22 e1 ), !..=> e231 endChoice ::= ENDCASE ?(=> e3) --In 29, 32, 34.32 safeSelect ::=WITH e SELECT FROM safeChoice; ... endChoice3133 safeChoice ::= n : t => e234 ·withSelect ::= WITH (n1 ~~ e1 | · e1 ) SELECT ?¸e11 FROM withChoice; ... endChoice31 --·The ~~ may be written as :.35 ·withChoice ::= n2 => e2 | n2, n2, !.. => e2 ¶3.936 type ::= typeName | builtInType | typeCons37 typeName ::= n1 | typeName . n2 | ·typeName[e] | ·n2 typeName --In 19, 25, 36, 49.38 builtInType ::= INT | REAL | TYPE | ATOM | CONDITION | MONITORLOCK | ·LONG CARDINAL | ·¸?LONG UNSPECIFIED | ·¸MDSZone | µ ?¸UNCOUNTED ZONESee Table 4�2. TYPE only in a b or an interface's d. 39 typeCons ::= subrange25 | transferTC40 | arrayTC44 | seqTC45 | ¸descriptorTC45.1 | refTC46 | listTC47 |¸pointerTC48 | ·¸relativeTC49 | recordTC50 | unionTC52 |enumTC54 | defaultTC5540 varTC ::= ( | READONLY | VAR) t | ANY In 11, 45�48. ANY only in refTC. VAR only in interface decl.41 transferTC ::=?(SAFE | UNSAFE) xfer ?drType 41.1xfer ::= PROCEDURE | PROC | PORT | PROGRAM | PROCESS | SIGNAL | ERROR42 drType ::= ?fields1 RETURNS fields2 | fields1 --In 3, 41.43 fields ::= [d11, ... ] | [t, ... ] | ANY --In 42, 50, 52. ANY only in 42.44 arrayTC ::= ?µPACKED ARRAY ?t1 OF t245 seqTC ::= ?µPACKED SEQUENCE tag53 OF tLegal only as last type in a recordTC or unionTC.45.1¸descriptorTC ::= ?LONG DESCRIPTOR FOR varTC40varTC must be an array type.46 refTC ::= REF ?varTC40 47 listTC ::= LIST OF varTC4048 ¸pointerTC ::= ?LONG ?ORDERED ?·BASE POINTER ?·subrange25 ?(TO varTC40) | ·POINTER TO FRAME [ n ]Subrange only in a relativeTC; no typeName37 on it.49·¸relativeTC ::= typeName37 RELATIVE tt a pointer or descriptor type, typeName a base pointer type.50 recordTC ::= ?access12 ( ?MONITORED RECORD fields43 |¹ MACHINE DEPENDENT RECORD (mdFields | ·fields43) )51 ¹mdFields ::= [( (n pos), ... : ?·access12 t), ...] -- In 50, 52.51.1¹pos ::= ( e1 ?(: e2 .. e3) ) -- In 51, 53.52 unionTC ::= SELECT tag FROM( n, ... => ( fields43 | mdFields51 | ·NULL) ), ... ?, ENDCASE Legal only as last type in a recordTC or unionTC.53 tag ::= (n ?¹pos51.1 : ?·access12 | µ¸(COMPUTED|OVERLAID) ) (t | *) --In 44, 52. * only in unionTC.54 enumTC ::= {n, ...} | MACHINE DEPENDENT {(?n (e) | n), ...}55 defaultTC ::= t _ | t _ e | µt _ e | TRASH | µt _ TRASHdefaultTC legal only as the type in a decl in a body9 or fieldŸ43 (n: t _ e), in aTYPE binding13, or in NEW. Note the terminal |. ·TRASH may be written NULL.¶3.256 name ::= letter (letter | digit)...57 literal ::= num ?( ( D|d | B|b ) ?num ) -- INT literal. |digit (digit |A|B|C|D|E|F) ... ( H|h ) ?num -- Hex INT literal. |?num . num ?exponent | num exponent -- REAL literal. |' extendedChar | · digit !.. C | " extendedChar ... " ?·L | $ n58 exponent ::= (E|e) ?(+ | �) num59 num ::= digit !..60 extendedChar ::= space | \ extension | anyCharNot'"Or\ 61 extension ::= digit1 digit2 digit3 | n|N | r|R | t|T | b|B | f|F | l|L | \ | ' | "îÒïlpðÿðÿð\î°ïRqrô>srsrð"tô5rô> î$ïþ†î(¡ïRsrðEî°ï8srsrð"srsrsrð!srsrð#srî°ïqrqsrïdpïrsr ïdpïrsr ïdpïrsrïdpïrsr ïdpïrsrïdpïrîO*î°ïáqrðAï'pïárð!ï¾pïárð.îI†î ïhŠuôjîåïfœvîörô>wôXxyxwxïfVqïfœxwxyxwxïfVqïfœxwîWïdôxð/wyxïd®qïdôxwxwxwxwxîWïcLwx wxwîöïaÈrô>wôXxïa‚qïa¥tïaÈxwxwyxy xwxîWï` wyxwxwxï_Úqô>ï` xôXwxwxï_Úqï` xwxwîWï^xxwyxï^2qï^xxwxwxï^¾rï^xxwxï^¾rï^xxwxwxwxwxîöï\Ðrô>w ôXxï\Šqï\ÐxwyxwxyxwxyxwîWï[(xyxwxï[nrï[(xwxyxwxï[nrï[(xwxwîWïY¤yxwxwxïY^qïY¤xwxwxïY^qïY¤xwxwxwyxïY^qïY¤xwîWïWüxwyxïW¶qïWüxwxwxïXBrïWüxîöïVTrô>wxôXwxyxwyxïVqïVTxwîöïUHþ%îåïSÙvîörô>wxôXwxwyxwxyxwxywxîWïRUwxwxwxwyxwxwxwxwxzôGîöïPÑrô>wôXyxwxwxwxwxîWïO“zôGð'yîöïNrô>wôXxyxwxwx wxwxzôG îöïL‹rô>wôXxwxwxyxwxzôGîöïKrô>wôXxwxwxwxwxwxwzôGxôXwxzôG îöïJBþ%îåïHÓvîörô>wz yôGwxôXwxwx ïIrîWïG•zôG tztzîöïFrô>wôXxyxwxyzôGîöïD�rô>wzwôXxwxwx wîWïC xwxïBÃrïC xzôGtzxôXwxyxwîWïAaxwyxyôGxôXwxwxwxwîWï?Ýxwyxwyxwxywxï@#rï?ÝxwîWï>ŸzôGð$tztzîWï=atô5zôGîöï<œþ%îåï;-vîörô>wzwôXxï:çrï;-xï:çrï;-xwxwxï;srï;-xwxwxwxyîWï9ÌzôGîöï8Hrô>wôXxyxwxyôGxôXwxyxwxyxwxyxwîWï6Äxyxwxyxwxwyxwxywxwxwxyîöï5@rô>wôXxwxwyxwxyxwxîWï3¼yôGxôXwxï4rï3¼xwxï4rï3¼xwxï4rï3¼xîWï28yôGxôXwxwyxwxwxwxwxyîöï0´rô>wôXxyxwxîWï/0yôGxôXwxwxwxwxwy xyxwxï.êrï/0xï.êrï/0wîWï-ÏzôGtzîöï- þ%îåï+›vîörô>wzwôXxwxï+árï+›xwxîKï+cþyîÄï+›îiï+cþyîâï+›wx ï+árï+›xwxîWï*wxwxï*]rï*wxyôG{yxôXwxîWï(“ wxï(Mrï(“x ï(Mrô>ï(“wxôXï(Mrï(“xyôG{yxôXï(Mrô>ï(“wxôXï(Mrï(“xyôG{yxôXï(Mrô>ï(“wxôXîWï&ëyôG{yxôXwxyxwxyxwx ï'1rï&ëxwxîWï%gwxï%­rï%gxwxîWï#ã wxwx ï$)rï#ãxwxï$)rï#ãxwxwîWï"_xwxï"¥rï"_xwxï"¥rï"_xwxï"¥rï"_xwx ï"¥rï"_xwx ï"¥rï"_xîWï!!z ôG{zð;îWïãðNîWï¥ tztz rïëï¥zïërô>ï¥zîöï!rwôXxy{yxwxy{yxwxwxwxywxy{yîöï�rô>wôXxwxwxyxy{yxwxwxy{yxwxy{yxwxy{yîöïrô>wôXxwyxwxwxwxwxwxwxwxwxwxywxzôGîöï•rô>wôXxð&îöïrô>wôXxyxwxyxwxyxwxyxwxyxwîWï�yxwxyxwxyôG xôXwxyxwxyxwîWï xyxwxyôGxôXwxyôGîöï…rô>wôXxwxïËrï…xîWïwxï»rïxï»rïxwxï»rïxï»rïxî÷ïÉþyîpïwxîxïÉþyîñïï»rïxï»rïxwxîªïÉþyî#ïï»rïxï»rïxîqïÉþyîêïwxzôGîöïYrô>w ôXxwx wxîöï Õrô>w ôXxwxwxwxwxyxwxwxwxwxwxwxywxwîWï —zôGð&tztzîöï rwôXx ï Yrï xwxzôG îöï Nþ%î)ïfœvî,rô>wôXxyxïfVrïfœxyxïfVrïfœxwyxïfVrïfœwî,ïdôrô>wôXxyxyxwx î-zïc¶zôGð4î,ïb2rô>wôXxwxïbxrïb2xïaìrïb2xwxwxïaìrî,ï`Šô>wôXxyxwxï`Drï`ŠwzôGî,ï^ârô>w ôXyx|xyôG| xôXwx|ï_(rî,ï]^ô>w ôXx ï]rî,ï[¶ô>xw ôXxyxwxï[prï[¶xï[prï[¶xwxï[prï[¶xwyôGxôXwxï[prï[¶xyxî-zïZwx ïZTrïZzôGð!î,ïXŠrô>xw ôXxïXDrïXŠxïXDrïXŠxwyôGxïXDrïXŠxôXïXDrïXŠxwxïXDrïXŠxî,ïW~þ%î)ïVvî,rô>wzxôXwx wx wxî,ïT‹rô>wôXxïTErïT‹xwx ïTErïT‹xwx wî-zïRãxïR�rïRãxzôGî,ïQ;rô>w ôXxyxwxyxwxyxwxyxwxyxwxî-zïO·y xwxyxyxwxwyôG xôXwxî-zïN3yxwxwy ôGî-zïLõztzð"î,ïKqrô>wôXxïK·rïKqxwx ïK·rïKqxwxïK·rïKqxwxî-zïIíïJ3rïIíxwx ïJ3rïIíxwxïJ3rïIíxwxïJ3rïIíxwî-zïHix ïH¯rïHixwx ïH¯rïHixwxïH¯rïHixwxïH¯rïHixwî-zïFåxïG+rïFåxwx ïG+rî,ïEaô>wôXxwxwxyxwxywxwxyxî-zïD#zôG tyztzî,ïBŸrô>w ôXyxwxywxwxî,ïArwyxwxyxwxyxwxyxwî-zï?—xyxwyôGxôXwxyî,ï>rô>wôXxwxï=Írï>xyxï=Írï>xwxï=Írï>zôG î,ïwôXxï<±rïwôXxwxyxyxwxï:¡rï:çxyxï:¡rî,ï9?ô>wôXxwxyxyxï9…rï9?xyxî-zï8zôGð,î,ï6}rxw ôXxwyxy ôGxôXï6Ãrî-zï5?zôGî,ï3»rô>wôXxyxwxï4rï3»xî,ï27rô>wôXxyôGxï2}rî,ï0³ô>xwôXxwyôGwyxôXwxyxyôGî-zï//wxï/urï//ywyxôXï/urï//wxwxyôGxôXî-zï-ñzôGð"ï.7rï-ñzî,ï,mrxw ôXxï,³rï,mxyxî-zï+/zôGð<î,ï)«rô>wôXxwxï)ñrï)«xwxwyxyxï)ñrï)«xwî-zï('xyôG xôXyxwxwxï(mrï('wxwî,ï&£rô>xwôXxwxwxwxwxwxï&érï&£xwxwxzôG î,ï%rxwôXxî3`ï$çþyî3Ùï%ï$Ùrï%xwxï$Ùrï%xï$Ùrï%wxî<ï$çþyîwôXxyxyî-zï!ówxwxwxï"9rï!óxwxï"9rï!óxwxywxwxwxwxywî-zï µzôGð,î,ï1rô>wôXxwxwxïwrï1xwxïwrï1xwxwywywxwxî-zï­ wxwxwzôGyzî,ï)rô>wxôXwxwxwxyxyxwxîJ™ïñþyîKï)îK·ïñþyîL0ï)wxwxwxî,ï¥rô>wôXxwxwxîAïmþîBï¥yxwxyî-zïDzôGð+ïŠrïDzxïŠrïDzxzxzî-zïtzïLrïztzyztztzî,ïAþ%î)ï®vî,rô>wzwôXxwxwxwî,ï*rô>wôXxwxî9ïòþî:'ï*wxî:ïòþÇî;Fï*wxîTï*wxwxwxzôGtzxôXwî-zï¦xwxwxî4Uïnþî5]ï¦wxî5µïnþçî6œï¦wxî6ôïnþþî7òï¦wxî8Jïnþî9iï¦wxî9Áïnþçî:¨ï¦wxî;ïnþçî;çï¦wxwxwxî>íïnþ î@ ï¦wxî@eïnþÇîA,ï¦wxwxzôGtzxôXwî-zï"x wxwxzôGtzxôXwî-zïžxwxwxî=ïfþþî>ïžwxwxwxîLpïfþçîMWïžwxî,ïrô>wôXxwxî6ï âþçî6ýïwxî7Uï âþ¥î7úïwxwxwxwxî,ï –rô>wôXxwî,ï rô>w ôXxwx wzôGxôXî,ï Žrô>wôXxï Hrï Žxï Hrï Žxï Hrï Žxwî-zïæxî5ºï®þÇî6�ïæwxî6Ùï®þ#î7üïæwxî9ï®þ„î9ˆïæwxî9àï®þ î:éïæwxî;ñï®þoî<`ïæwxî<¸ï®þçî=Ÿïæwxî>§ï®þÇî?nïæwxî?Æï®þçî@­ïæwxîAµï®þyîB.ïæwxîB†ï®þçîCmïæwxîDuï®þcîDØïæwxîE0ï®þçîFïæwxwxwxÿðTVk( ô..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................Notation: item | item=choose one; ?item=zero or one item; terminals: SMALL CAPS, underlined or punctuation other than bold ()?| (parens are terminals only in rules 19, 25, 45). item s ...=zero or more items, separated by s; item s !..=one or more items, separated by s; with s=";", a trailing ";" is optional; s is one of: empty "," ";" .Abbreviated non-terminals: b=binding13; d=declaration11; e=expression19; n=name56; s=statement14; t=type36.20 Dec 82Comments: n56 means n is defined in rule 56; n2=n (the subscript is only for the desugaring). CLRMSafeGram.pressCedar Safe Language Syntax¶3.3 1 module ::=DIRECTORY (nd ?(: TYPE nt) ?(USING [nu, ...]) ), ... ; ( interface | implementation ) 2 interface ::= nm, !.. : CEDAR DEFINITIONS ?locks?(IMPORTS ( (niv : | ) nit ), ...) ~ { ?open6 (d | b); !.. } . 3 implementation ::= nm : CEDAR ( PROGRAM ?drType42 | MONITOR ?drType42 ?locks )?(IMPORTS ( (niv : | ) nit ), ...) ?(EXPORTS ne, ...) ~ block .3.1locks ::= LOCKS e ?(USING nu: t)¶3.4 5 block ::= ?(CHECKED | UNCHECKED | TRUSTED) { ?open ?enable ?body ?(EXITS (n, !..=>s); ...) } --In 3, 13, 14. 6 open ::= OPEN (n ~~ e | e), !.. ; --In 2, 5. 7 enable ::= ENABLE { enChoice; ... }; 8 enChoice ::=( e, !.. | ANY ) => s --In 7, 27.1. 9 body ::= (d | b); !.. ; s; ... | s; !.. --In 5, 17. ¶3.511 declaration ::= n, !.. : ?(PUBLIC | PRIVATE) varTC40 --In 2, 9, 43. 13 binding ::= n, !.. : ?(PUBLIC | PRIVATE) t ~ ( --In 2, 9.e | t2 -- t=TYPE-- | CODE | ?INLINE ?(ENTRY|INTERNAL) block5 )¶3.614 statement ::= e1_e2 | e | block5 | escape | loop | NULL16 escape ::=GOTO n | EXIT | CONTINUE | (RETURN|RESUME) ?e17 loop ::= ?iterator ?(WHILE e | UNTIL e) DO ?body9 ?(REPEAT FINISHED=>s) ENDLOOP18 iterator ::= THROUGH e | FOR n : t ( ?DECREASING IN e | _ e1 , e2)e is a subrange. n is readonly.¶3.719 expression ::= n | literal57 | (e) | application26 | (e | typeName37) . (9) n | prefixOp e | e1 infixOp e2 | e1 AND (2) e2 | e1 OR (1) e2 | e ^ (9) | ERROR | [ argBinding27 ] | builtIn [ e, ... ?applEn27.1] | funnyAppl e ?( [?argBinding27 ?applEn27.1] ) |s | subrange25 | if28 | select29 | safeSelect32 Precedence is in bold in rules 19-21. All operators associate to the left except_, which associates to the right. Application has highest precedence. Subrangeonly after IN or THROUGH. s only in ifŸ28 and select choices30 33.20 prefixOp ::= @ (8) | � (7) | (~ | NOT) (3)21 infixOp ::= * | / | MOD (6) | + | � (5) | relOp (4) | _ (0)22 relOp ::= ?NOT (?~ (= | < | >) | <= | >= | # | IN) --In 21, 30.23 builtIn ::= -- These are enumerated in Table 4�5.24 funnyAppl ::= FORK | JOIN | WAIT | NOTIFY | BROADCAST |SIGNAL | ERROR | RETURN WITH ERROR25 subrange ::= ?typeName37 ( [ | ( ) e1 .. e2 ( ] | ) ) --In 19, 39.26 application ::= e [ ?argBinding ?applEn ]27 argBinding ::= (n ~ ?e ), !.. | (?e), !.. --In 19, 26. 27.1applEn ::= ! enChoice8; ... -- In 19, 26.¶3.828 if ::= IF e1 THEN e2 ?(ELSE e3)29 select ::= SELECT e FROM choice; ... endChoice The ";" is "," in an expression, here and in 32.30 choice ::= (?relOp22 e1 ), !..=> e231 endChoice ::= ENDCASE ?(=> e3) --In 29, 32, 34.32 safeSelect ::=WITH e SELECT FROM safeChoice; ... endChoice3133 safeChoice ::= n : t => e2¶3.256 name ::= letter (letter | digit)...57 literal ::= num ?( D | B ) | digit (digit |A|B|C|D|E|F) ... H | ?num . num ?exponent | num exponent | ' extendedChar | " extendedChar ... " | $ n58 exponent ::= E ?(+ | �) num59 num ::= digit !..60 extendedChar ::= space | \ extension | anyCharNot'"Or\ 61 extension ::= digit1 digit2 digit3 | N | R | T | B | F | L | \ | ' | "¶3.936 type ::= typeName | builtInType | typeCons37 typeName ::= n | typeName . n | typeName[e] --In 19, 25, 36.38 builtInType ::= INT | REAL | TYPE | ATOM | CONDITION | MONITORLOCKSee Table 4�2. TYPE only in a b or an interface's d. 39 typeCons ::= subrange25 | transferTC40 | arrayTC44 | seqTC45 | refTC46 | listTC47 | recordTC50 | unionTC52 | enumTC54 | defaultTC5540 varTC ::= ( | READONLY | VAR) t | ANYIn 11, 46, 47. ANY only in refTC. VAR only in interface decl.41 transferTC ::=?(SAFE | UNSAFE) xfer ?drType 41.1xfer ::=PROC | PORT | PROCESS | SIGNAL | ERROR |PROGRAM42 drType ::= ?fields1 RETURNS fields2 | fields1 --In 3, 41.43 fields ::= [ d11, ... ] | [t, ... ] | ANY In 42, 50, 52. ANY only in drType.44 arrayTC ::= ARRAY t1 OF t245 seqTC ::= SEQUENCE n : t1 OF t2 -- Only as last type in 50 or 52.46 refTC ::= REF ?varTC4047 listTC ::= LIST OF varTC4050 recordTC ::= ?MONITORED RECORD fields4352 unionTC ::= SELECT n : (t | *) FROM (n => fields43), ... ?, ENDCASE -- Only as last type in 50 or 52.54 enumTC ::= {n, ...} | MACHINE DEPENDENT {(?n (e) | n), ...}55 defaultTC ::= t _ | t _ e Only as t in a decl in body9 or fieldŸ43 (n: t _ e),in a TYPE binding13or in NEW.ÿîÒïlpðÿðÿð\î°ïRqrô>õsrsrð"tô5rô> î$ïþ†î(¡ïRsrð1î°ï8srsrð"srsrsrð!srsrð"srî°ïqrqsrïdpïrsr ïdpïrsr ïdpïrsrïdpïrsr ïdpïrsrïdpïrîO*î°ïáqrï'pïárð!ï¾pïárð.îIuîíïhŠuôjîåïfœvîörô>wxôXwyxwxïfVqïfœxwxyxïfVqïfœwxwyxïfVqïfœxwxwxwxwxîWïdôwx wxwîöïcprô>wôXxïc*qïcMtïcpxwxyxy xwxîWïaÈwyxwxwxïa‚qô>ïaÈxôXwxwxïa‚qïaÈxwxwxwxïbrïaÈxwxwxwxwxîöï` rô>w ôXxï_Úqï` xyxîWï^xwxyxwxï^¾rï^xxwxyxwxï^¾rï^xxwxwîWï\ôyxwxwxï\®qï\ôxwxwxï\®qï\ôxwxwxwyxï\®qï\ôxwx îöï[Lrwxwxyxwyxï[qï[LxwîöïZ@þ%îåïXÑvîörô>wxôXwxwyxwxyxwxywxîWïWMwxwxwxwyxwxwxwxwxzôGîöïUÉrô>wôXyxwxwxwxwxzôGyîöïTErô>wôXxyx wxzôGîöïRÁrô>wôXxwxwxyxwxzôGîöïQ=rô>wôXxwxwxwxwxwxwzôGxôXwxzôG îöïPxþ%îåïO vîörô>wz xôXwxwxwyxwxywxïOOrïO xzôG îöïM…rô>wzwôXxwxwyxwxywxwx zôG îWïLxôXwxïK»rïLxzôGtzxôXwxyxwxwyxwywywxïLGrïLxwîöïJõþ%îåïI†vîörô>wzwôXxïI@rïI†xïI@rïI†xwxwxïIÌrïI†xwxwxwxyîöïGÞrô>wxôXwyxwxyxwxyxwxwywywxwxîöïFZrô>wôXxwxwyxwxyxwxîWïDÖyôGxôXwxïErïDÖxwyxyxwxyîöïCRrô>wôXxyxwxîWïAÎyôGxôXwxwy xyxwxïAˆrïAÎxïAˆrïAÎwîWï@mzôGîöï?¨þ%îåï>9vîörô>wzwôXxwxï>rï>9xwxîKï>þyîÄï>9îiï>þyîâï>9wx ï>rï>9xwxîWï<µwxwxï<ûrï<µwxyôG{yxôXwxîWï;1 wxï:ërï;1x ï:ërô>ï;1wxôXï:ërï;1xyôG{yxôXï:ërô>ï;1wxôXï:ërï;1xyôG{yxôXï:ërô>ï;1wxôXîWï9‰yôG{yxôXwxyxwx ï9Ïrï9‰xwxîWï8wxï8Krï8xwxîWï6� wxwx ï6Çrï6�xwxï6Çrï6�xwxwîWï4ýxwxï5Crï4ýxwxï5Crï4ýxwxï5Crï4ýxwx ï5Crï4ýxîWï3¿z ôG{zð;îWï2�ðNîWï1C tztz rï1‰ï1Czï1‰rô>ï1Czîöï/¿rwôXxy{yxwxy{yxwxwxwxywxy{yîöï.;rô>wôXxwxwxyxy{yxwxwxy{yxwxyôG{yï-õrô>ï.;wxôXy{yîöï,“rô>wôXxwyxwxwxwxwxwxwxwxwxwxywxzôGîöï+rô>wôXxð&îöï)‹rô>wôXxyxwxyxwxyxwxyxwxyxwîWï(yxwxyxwxyôG îöï&ƒrô>wôXxwxï&Érï&ƒxwxwxî ï&Kþyîï&ƒwyôGxï&=rï&ƒxôXï&=rï&ƒxwxwxî gï&Kþyî àï&ƒwxzôG îöï$Ûrô>w ôXxwx wxîöï#Wrô>w ôXxwxwxwxwxwxwxwxwxzôGîöï!ÓrwôXx ï"rï!ÓxwxzôG îöï!þ%îåïŸvîörô>wôXxyxïYrïŸxyxïYrïŸxwyxïYrïŸwîöï÷rô>wôXxyxyxwx îWï¹zôGð-îöï5rô>wôXxwxï{rï5xïïrï5xwxwxïïrîöï�ô>wôXxyxwxïGrï�wzôGîöïårô>w ôXyx|xyôG| xôXwx|ï+rîöïaô>w ôXx ïrîöïUþ%îåïævîörô>wzwôXxwxwxwîöïbrô>wôXxwxîï*þî1ïbwxî9ï*þçî ïbwxwxwxwxîÖï*þîÞïbwxî6ï*þçîïbwxîuï*þþî sïbwxî Ëï*þî!êïbwxî"Bï*þçî#)ïbwxî#�ï*þçî$hïbwxwxî&›ï*þ î'»ïbwîWïÞxwx wxwx wîWïZxð!wxwxwxîöï Örô>wôXxîxï žþçî_ï Öwxwxwxîöï Rrô>wôXxwîöï Îrô>w ôXxwx wzôGxôXîöï Jrô>wôXxï rï Jxï rï Jxï rï Jxwxîçï þ#î ï Jwxîï þ îï Jwxî#ï þçî ï Jwxî ï þçî ùï Jwxî"ï þçî"èï Jwxî#ðï þçî$×ï Jwxwxwxîöï>þ%î)ïdõvî,ïfœrô>wzxôXwx wx wxî,ïerô>wôXxwx wx zôGî,ïc”rô>w ôXxyxwxyxwxyxwxyxwxî-zïbyxwxy î-zï`ÒzôG tzð"î,ï_Nrô>wôXxï_”rï_Nxwx ï_”rï_Nxwxî-zï]Êï^rï]Êxwxï^rï]Êxwxï^rï]Êxwxï^rï]Êxwxî-zï\Fï\Œrï\Fxwxï\Œrï\Fxwxï\Œrï\Fxwx ï\Œrî,ïZÂô>wôXxwxwxyxwxywxwxyî-zïY„zôG tyztzî,ïXrô>w ôXyxwxywxwxî,ïV|rwyxwxyxwxyxwyôGxôXwxyxwî-zïTøyî,ïStrô>wôXxwxïS.rïStxyxïS.rïStxwxïS.rïStzôG î,ïQÌrô>wôXxïRrïQÌxwxwxwxwxyzôGî-zïPŽtzî,ïO rô>wôXxyxïNÄrïO xyxïNÄrî,ïMbô>wôXxyxïMrïMbxyxïMrïMbzôGð#î,ïKºrô>wôXxyxwxïLrî,ïJ6ô>wôXxyôGxïJ|rî,ïH²ô>wôXxwyxyxïHørî,ïG.ô>wôXxyxwxwxwxyxwx ïGtrïG.wxwxwxî-zïEªywxzôGî,ïD&rô>wxôXwxwxwxyxyxwxîJ™ïCîþyîKïD&îK·ïCîþyîL0ïD&wxwxwxî,ïB¢rô>wôXxwxî-zïAdzôGïAªrïAdz ïAªrïAdztzïAªrïAdztzÿšTVk( .ÿ TimesRomanÿ TimesRomanÿ TimesRomanÿ TimesRomanÿ TimesRomanÿ TimesRoman ÿ TimesRoman ÿ TimesRoman ÿ TimesRoman  ÿ TimesRoman ÿ TimesRoman ÿ TimesRoman ÿ TimesRoman  Ò1ÿÿj/42“0Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ CLRMGram.bxLampsonDecember 18, 1982 5:28 PM