-- grammar extracted from sakurapass1t.mesa by PGS, 14-Dec-81 9:23
||CHAIN ||LISTS
||TABLE1
1 id
2 num
3 lnum
4 flnum
5 string
6 lstring
7 char
8 atom
9 ,
10 ;
11 :
12 ..
13 =>
14 ←
15 =
16 #
17 <
18 >
19 <=
20 >=
21 ~
22 +
23 -
24 *
25 /
26 ↑
27 .
28 @
29 !
30 '|
31 //
32 "||"
33 ->
34 RECORD
35 POINTER
36 REF
37 ARRAY
38 SEQUENCE
39 DESCRIPTOR
40 PROC
41 PORT
42 SIGNAL
43 ERROR
44 PROCESS
45 DEVICE
46 PROGRAM
47 MONITOR
48 RELATIVE
49 LONG
50 TYPE
51 FRAME
52 TO
53 ORDERED
54 BASE
55 OF
56 PACKED
57 RETURNS
58 MONITORED
59 OVERLAID
60 COMPUTED
61 MACHINE
62 DEPENDENT
63 DIRECTORY
64 DEFINITIONS
65 IMPORTS
66 EXPORTS
67 SHARES
68 RESIDENT
69 LOCKS
70 USING
71 PUBLIC
72 PRIVATE
73 READONLY
74 ENTRY
75 INTERNAL
76 INLINE
77 CODE
78 ABS
79 ALL
80 AND
81 MAX
82 MIN
83 MOD
84 OR
85 PRED
86 LENGTH
87 NEW
88 START
89 SUCC
90 FORK
91 JOIN
92 LOOPHOLE
93 NARROW
94 ISTYPE
95 SIZE
96 FIRST
97 LAST
98 NIL
99 NULL
100 IF
101 THEN
102 ELSE
103 WITH
104 FROM
105 FOR
106 DECREASING
107 IN
108 THROUGH
109 UNTIL
110 WHILE
111 REPEAT
112 FINISHED
113 RETURN
114 EXIT
115 LOOP
116 GOTO
117 GO
118 FREE
119 WAIT
120 RESTART
121 NOTIFY
122 BROADCAST
123 STOP
124 RESUME
125 CONTINUE
126 RETRY
127 TRANSFER
128 STATE
129 OPEN
130 ENABLE
131 ANY
132 EXITS
133 )
134 ]
135 }
136 ENDLOOP
137 ENDCASE
138 (
139 [
140 {
141 DO
142 SELECT
143 GUARDIAN
144 CONTROL
145 OUT
146 DATAFLOW
147 PAR
148 CHOICE
149 WHEN
150 ON
151 WITHIN
152 UP
153 DOWN
154 CHANGE
155 CIRCUIT
156 COMPONENTS
157 NODES
158 REPRESENTATION
159 CONNECTIONS
160 ALIAS
161 MOSSIM
162 FILE
163 eof
||TABLE2
164 goal
165 unit
166 directory
167 module
168 includelist
169 imports
170 modulelist
171 exports
172 open
173 bindlist
174 fieldlist
175 pairlist
176 typelist
177 includeitem
178 using
179 identlist
180 classhead
181 block
182 defhead
183 defbody
184 resident
185 class
186 arguments
187 locks
188 interface
189 public
190 definitions
191 shares
192 declist
193 primary
194 lambda
195 ident
196 typeexp
197 moduleitem
198 declaration
199 readonly
200 entry
201 initialization
202 default
203 optargs
204 procaccess
205 idlist'
206 identlist'
207 position
208 exp
209 optbits
210 bounds
211 interval
212 range
213 typeid
214 typecons
215 length
216 dependent
217 elementlist
218 element
219 monitored
220 reclist
221 ordered
222 base
223 pointertype
224 packed
225 indextype
226 transfermode
227 variantpair
228 variantpart
229 pairitem
230 defaultopt
231 vcasehead
232 variantlist
233 tagtype
234 variantitem
235 idlist
236 pointerprefix
237 initvalue
238 inline
239 codelist
240 orderlist
241 statement
242 lhs
243 explist
244 elsepart
245 casehead
246 casestmtlist
247 otherpart
248 forclause
249 dotest
250 scope
251 doexit
252 transfer
253 free
254 optcatch
255 exits
256 enables
257 statementlist
258 binditem
259 exitlist
260 casestmtitem
261 caselabel
262 caseexpitem
263 exititem
264 casetest
265 optrelation
266 controlid
267 direction
268 catchcase
269 catchany
270 catchlist
271 catchhead
272 nullpairlist
273 lhslist
274 keyitem
275 optexp
276 transferop
277 caseexplist
278 disjunct
279 conjunct
280 negation
281 not
282 relation
283 sum
284 addop
285 product
286 multop
287 factor
288 relationtail
289 relop
290 prefixop
291 new
292 typeop
293 desclist
294 opttype
295 qualifier
296 transferseries
297 aliaslist
298 complist
299 statementlist'
300 casestmtlist'
301 caselabel'
302 exitlist'
303 keylist
304 caseexplist'
305 transferexp
306 parlist
307 guardcomlist
308 guardcom
309 alias
310 compitem
311 arglist
312 returnlist
313 devicebody
314 event
315 updownsignal
||TABLE3
id tokenID
num tokenNUM
lnum tokenLNUM
flnum tokenFLNUM
string tokenSTR
lstring tokenLSTR
char tokenCHAR
atom tokenATOM
- tokenMINUS
. tokenDOT
.. tokenDOTS
= tokenEQUAL
=> tokenARROW
< tokenLESS
<= tokenLE
> tokenGREATER
>= tokenGE
. InitialSymbol
-> tokenRARROW
/ tokenDIV
// tokenPAR
'| tokenBAR
"||" tokenNDET
||TABLE4
1 0 goal ::= . unit .
2 0 | . unit ..
3 1 unit ::= directory module
4 2 directory ::= DIRECTORY includelist ;
5 225 | DIRECTORY ;
6 234 |
7 2 imports ::= IMPORTS modulelist
8 234 |
9 2 exports ::= EXPORTS modulelist
10 234 |
11 2 open ::= OPEN bindlist ;
12 234 |
13 2 fieldlist ::= [ pairlist ]
14 2 | [ typelist ]
15 225 | [ ]
16 3 includeitem ::= id : FROM string using
17 4 | id : TYPE using
18 4 | id using
19 5 | id : TYPE id using
20 6 using ::= USING [ ]
21 233 | USING [ idlist ]
22 234 |
23 7 module ::= identlist classhead block
24 7 | identlist defhead defbody
25 8 classhead ::= resident class arguments locks interface = public
26 9 class ::= PROGRAM
27 10 | MONITOR
28 11 defhead ::= definitions locks imports shares = public
29 12 definitions ::= DEFINITIONS
30 13 defbody ::= { open declist }
31 14 locks ::= LOCKS primary lambda
32 234 |
33 15 lambda ::= USING ident typeexp
34 234 |
35 16 moduleitem ::= id
36 17 | id : id
37 18 declaration ::= identlist public readonly entry typeexp initialization
38 19 | identlist public TYPE = public typeexp default
39 20 | identlist public TYPE optargs
40 21 public ::= PUBLIC
41 22 | PRIVATE
42 23 |
43 22 procaccess ::=
44 24 entry ::= ENTRY
45 25 | INTERNAL
46 26 |
47 27 idlist' ::= id
48 29 | id , idlist'
49 27 identlist' ::= id :
50 28 | id position :
51 29 | id , identlist'
52 30 | id position , identlist'
53 31 position ::= ( exp optbits )
54 32 optbits ::= : bounds
55 234 |
56 32 interval ::= [ bounds ]
57 33 | [ bounds )
58 34 | ( bounds ]
59 35 | ( bounds )
60 36 typeexp ::= id
61 233 | typeid
62 233 | typecons
63 36 range ::= id
64 41 | id interval
65 42 | typeid interval
66 233 | interval
67 233 | typeid
68 37 typeid ::= id . id
69 38 | id id
70 39 | id typeid
71 40 typecons ::= interval
72 41 | id interval
73 42 | typeid interval
74 43 | id length
75 44 | typeid length
76 45 | dependent { elementlist }
77 48 | dependent monitored RECORD reclist
78 49 | ordered base pointertype
79 50 | REF readonly typeexp
80 51 | REF readonly ANY
81 52 | REF
82 53 | packed ARRAY indextype OF typeexp
83 54 | DESCRIPTOR FOR readonly typeexp
84 55 | transfermode arguments
85 56 | id RELATIVE typeexp
86 57 | typeid RELATIVE typeexp
87 58 | LONG typeexp
88 59 | FRAME [ id ]
89 46 ident ::= id position :
90 198 | id :
91 46 element ::= id ( exp )
92 47 | ( exp )
93 198 | id
94 60 monitored ::= MONITORED
95 232 |
96 61 dependent ::= MACHINE DEPENDENT
97 62 |
98 63 reclist ::= [ ]
99 63 | NULL
100 64 | [ pairlist ]
101 64 | [ typelist ]
102 65 | [ pairlist , variantpair ]
103 66 | [ variantpart default ]
104 231 | [ variantpair ]
105 67 variantpair ::= identlist public variantpart default
106 67 pairitem ::= identlist public typeexp default
107 68 defaultopt ::=
108 69 | NULL
109 70 | exp '| NULL
110 233 | exp
111 71 variantpart ::= SELECT vcasehead FROM variantlist ENDCASE
112 71 | SELECT vcasehead FROM variantlist , ENDCASE
113 72 | packed SEQUENCE vcasehead OF typeexp
114 73 vcasehead ::= ident public tagtype
115 74 | COMPUTED tagtype
116 75 | OVERLAID tagtype
117 76 tagtype ::= *
118 233 | typeexp
119 77 variantitem ::= idlist => reclist
120 78 typelist ::= typecons default
121 78 | typeid default
122 79 | id
123 80 | id ← defaultopt
124 81 | typecons default , typelist
125 81 | typeid default , typelist
126 82 | id , typelist
127 83 | id ← defaultopt , typelist
128 84 pointertype ::= pointerprefix
129 85 | pointerprefix TO readonly typeexp
130 86 transfermode ::= PROC
131 87 | PORT
132 88 | SIGNAL
133 89 | ERROR
134 90 | PROCESS
135 91 | PROGRAM
136 235 | DEVICE
137 92 initialization ::=
138 230 | ← initvalue
139 231 | = initvalue
140 93 initvalue ::= procaccess inline block
141 94 | CODE
142 95 | MACHINE CODE { codelist }
143 156 | NULL
144 233 | exp
145 96 codelist ::= orderlist
146 97 | codelist ; orderlist
147 98 statement ::= lhs
148 99 | lhs ← exp
149 100 | [ explist ] ← exp
150 101 | block
151 102 | IF exp THEN statement elsepart
152 103 | casehead casestmtlist ENDCASE otherpart
153 104 | forclause dotest DO scope doexit ENDLOOP
154 105 | EXIT
155 106 | LOOP
156 107 | GOTO id
157 108 | GO TO id
158 109 | RETURN optargs
159 110 | transfer lhs
160 111 | free [ exp optcatch ]
161 112 | WAIT lhs
162 113 | ERROR
163 114 | STOP
164 115 | NULL
165 116 | RESUME optargs
166 117 | CONTINUE
167 118 | RETRY
168 119 | lhs ← STATE
169 237 | WHEN event : statement
170 239 | PAR { parlist }
171 241 | ON event -> statement WITHIN statement
172 247 | CHOICE { guardcomlist }
173 248 | CIRCUIT { COMPONENTS complist NODES nullpairlist REPRESENTATION aliaslist CONNECTIONS lhslist }
174 120 block ::= { scope exits }
175 236 | { IN nullpairlist OUT nullpairlist GUARDIAN statement devicebody }
176 121 scope ::= open enables declist statementlist
177 122 binditem ::= exp
178 123 | id : exp
179 124 exits ::= EXITS exitlist
180 232 |
181 125 casestmtitem ::= caselabel => statement
182 125 caseexpitem ::= caselabel => exp
183 125 exititem ::= idlist => statement
184 126 casetest ::= optrelation
185 127 | exp
186 128 caselabel ::= ident typeexp
187 229 | caselabel'
188 128 controlid ::= ident typeexp
189 198 | id
190 129 forclause ::= FOR controlid ← exp , exp
191 130 | FOR controlid direction IN range
192 131 | THROUGH range
193 234 |
194 132 direction ::= DECREASING
195 133 |
196 134 dotest ::= UNTIL exp
197 233 | WHILE exp
198 234 |
199 135 doexit ::=
200 136 | REPEAT exitlist
201 137 | REPEAT exitlist FINISHED => statement
202 137 | REPEAT exitlist FINISHED => statement ;
203 138 enables ::= ENABLE catchcase ;
204 139 | ENABLE catchany ;
205 140 | ENABLE { catchlist } ;
206 232 |
207 141 catchlist ::= catchhead
208 142 | catchhead catchcase
209 233 | catchhead catchany
210 233 | catchhead catchany ;
211 141 nullpairlist ::=
212 229 | pairlist
213 143 catchcase ::= lhslist => statement
214 144 optargs ::= [ explist ]
215 234 |
216 145 transfer ::= SIGNAL
217 146 | ERROR
218 147 | RETURN WITH ERROR
219 148 | START
220 149 | RESTART
221 150 | JOIN
222 151 | NOTIFY
223 152 | BROADCAST
224 153 | TRANSFER WITH
225 154 | RETURN WITH
226 155 keyitem ::= id : optexp
227 156 optexp ::= NULL
228 233 | exp
229 234 |
230 157 exp ::= transferop lhs
231 158 | IF exp THEN exp ELSE exp
232 159 | casehead caseexplist ENDCASE => exp
233 160 | lhs ← exp
234 161 | [ explist ] ← exp
235 162 | ERROR
236 233 | disjunct
237 163 disjunct ::= disjunct OR conjunct
238 C 233 | conjunct
239 164 conjunct ::= conjunct AND negation
240 C 233 | negation
241 165 negation ::= not relation
242 C 233 | relation
243 166 relation ::= sum optrelation
244 233 | sum
245 166 sum ::= sum addop product
246 C 233 | product
247 166 product ::= product multop factor
248 C 233 | factor
249 167 optrelation ::= not relationtail
250 233 | relationtail
251 168 relationtail ::= IN range
252 233 | relop sum
253 169 relop ::= =
254 170 | #
255 171 | <
256 172 | <=
257 173 | >
258 174 | >=
259 175 addop ::= +
260 176 | -
261 177 multop ::= *
262 178 | /
263 179 | MOD
264 180 factor ::= - primary
265 C 233 | primary
266 181 primary ::= num
267 182 | lnum
268 183 | flnum
269 184 | char
270 185 | string
271 186 | lstring
272 187 | atom
273 188 | NIL
274 189 | [ explist ]
275 190 | prefixop [ orderlist ]
276 191 | new [ typeexp initialization optcatch ]
277 192 | typeop [ typeexp ]
278 193 | SIZE [ typeexp ]
279 194 | SIZE [ typeexp , exp ]
280 195 | ISTYPE [ exp , typeexp optcatch ]
281 196 | @ lhs
282 197 | DESCRIPTOR [ desclist ]
283 233 | lhs
284 198 lhs ::= id
285 199 | NARROW [ exp opttype optcatch ]
286 200 | LOOPHOLE [ exp opttype ]
287 233 | ( exp )
288 233 | lhs qualifier
289 201 qualifier ::= [ explist optcatch ]
290 202 | . id
291 203 | ↑
292 204 optcatch ::= ! catchlist
293 232 |
294 205 transferop ::= SIGNAL
295 206 | ERROR
296 207 | START
297 208 | JOIN
298 209 | NEW
299 210 | FORK
300 211 prefixop ::= LONG
301 212 | ABS
302 213 | PRED
303 214 | SUCC
304 215 | MIN
305 216 | MAX
306 217 | BASE
307 218 | LENGTH
308 219 | ALL
309 220 typeop ::= CODE
310 221 | FIRST
311 222 | LAST
312 223 | NIL
313 224 desclist ::= exp , exp opttype
314 233 | exp
315 225 pointerprefix ::= POINTER
316 233 | POINTER interval
317 225 free ::= FREE
318 233 | lhs . FREE
319 225 new ::= NEW
320 233 | lhs . NEW
321 226 declist ::=
322 228 | declist declaration ;
323 226 casestmtlist ::=
324 233 | casestmtlist'
325 233 | casestmtlist' ;
326 226 statementlist ::=
327 233 | statementlist'
328 233 | statementlist' ;
329 226 exitlist ::=
330 233 | exitlist'
331 233 | exitlist' ;
332 226 catchhead ::=
333 228 | catchhead catchcase ;
334 226 caseexplist ::=
335 233 | caseexplist'
336 233 | caseexplist' ,
337 226 transferseries ::=
338 227 | transferexp
339 228 | transferseries ; transferexp
340 226 aliaslist ::=
341 227 | alias
342 228 | aliaslist , alias
343 226 complist ::=
344 227 | compitem
345 228 | complist , compitem
346 227 includelist ::= includeitem
347 228 | includelist , includeitem
348 227 modulelist ::= moduleitem
349 228 | modulelist , moduleitem
350 227 bindlist ::= binditem
351 228 | bindlist , binditem
352 227 pairlist ::= pairitem
353 228 | pairlist , pairitem
354 227 elementlist ::= element
355 228 | elementlist , element
356 227 variantlist ::= variantitem
357 228 | variantlist , variantitem
358 227 orderlist ::= optexp
359 228 | orderlist , optexp
360 227 lhslist ::= lhs
361 228 | lhslist , lhs
362 227 statementlist' ::= statement
363 228 | statementlist' ; statement
364 227 casestmtlist' ::= casestmtitem
365 228 | casestmtlist' ; casestmtitem
366 227 caselabel' ::= casetest
367 228 | caselabel' , casetest
368 227 exitlist' ::= exititem
369 228 | exitlist' ; exititem
370 227 keylist ::= keyitem
371 228 | keylist , keyitem
372 227 caseexplist' ::= caseexpitem
373 228 | caseexplist' , caseexpitem
374 227 parlist ::= statement
375 228 | parlist // statement
376 227 guardcomlist ::= guardcom
377 228 | guardcomlist "||" guardcom
378 229 identlist ::= identlist'
379 229 idlist ::= idlist'
380 229 explist ::= orderlist
381 229 | keylist
382 230 casehead ::= SELECT exp FROM
383 231 | WITH binditem SELECT optexp FROM
384 231 readonly ::= READONLY
385 232 |
386 231 ordered ::= ORDERED
387 232 |
388 231 base ::= BASE
389 232 |
390 231 packed ::= PACKED
391 232 |
392 231 inline ::= INLINE
393 232 |
394 233 arguments ::= arglist returnlist
395 233 interface ::= imports exports shares
396 233 shares ::= SHARES idlist
397 234 |
398 233 default ::= ← defaultopt
399 234 |
400 233 bounds ::= exp .. exp
401 233 length ::= [ exp ]
402 233 indextype ::= typeexp
403 234 |
404 233 elsepart ::= ELSE statement
405 234 |
406 233 otherpart ::= => statement
407 234 |
408 233 catchany ::= ANY => statement
409 233 not ::= ~
410 233 opttype ::= , typeexp
411 234 |
412 233 arglist ::= fieldlist
413 234 |
414 233 returnlist ::= RETURNS fieldlist
415 234 |
416 238 transferexp ::= lhs ← exp
417 240 guardcom ::= WHEN event -> statement
418 242 event ::= updownsignal
419 243 | updownsignal AND exp
420 244 updownsignal ::= lhs UP
421 245 | lhs DOWN
422 246 | lhs CHANGE
423 249 resident ::= RESIDENT
424 250 |
425 251 alias ::= idlist ALIAS id
426 252 compitem ::= identlist exp
427 253 devicebody ::= CONTROL statement
428 254 | MOSSIM REPRESENTATION aliaslist FILE lhs