Subversion Repositories tendra.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
2
    		 Crown Copyright (c) 1997
3
 
4
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
12
 
13
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
15
 
16
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
19
 
20
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
22
        these conditions;
23
 
24
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
27
        it may be put.
28
*/
29
 
30
/*
31
    AUTOMATICALLY GENERATED FROM ALGEBRA tdf (VERSION 1.0)
32
    BY calculus (VERSION 1.2)
33
*/
34
 
35
#ifndef TDF_H_TOK_INCLUDED
36
#define TDF_H_TOK_INCLUDED
37
 
38
#ifndef tdf_NAME
39
#define tdf_NAME			"tdf"
40
#define tdf_VERSION			"1.0"
41
#define tdf_SPECIFICATION		1
42
#define tdf_IMPLEMENTATION		0
43
#endif
44
 
45
 
46
/* Prototype macros */
47
 
48
#ifndef CONST_S
49
#define CONST_S
50
#endif
51
 
52
 
53
/* Primitive types */
54
 
7 7u83 55
typedef char * string;
2 7u83 56
 
57
 
58
/* Basic types */
59
 
60
#ifndef tdf_DESTR_DEFINED
61
#define tdf_DESTR_DEFINED
7 7u83 62
typedef void (*DESTROYER)();
2 7u83 63
#endif
64
 
7 7u83 65
#pragma token PROC(TYPE) TYPE PTR #
66
#pragma token PROC(TYPE) TYPE LIST #
67
#pragma token PROC(TYPE) TYPE STACK #
68
#pragma token PROC(TYPE) TYPE SIZE #
2 7u83 69
 
70
#pragma interface PTR LIST STACK SIZE
71
 
72
 
73
/* Enumeration type definitions */
74
 
75
 
76
 
77
/* Union type definitions */
78
 
79
#pragma token TYPE PARAMETER #
80
#pragma interface PARAMETER
81
#pragma token TYPE CONSTRUCT #
82
#pragma interface CONSTRUCT
83
#pragma token TYPE SORT_INFO #
84
#pragma interface SORT_INFO
85
#pragma token TYPE SORT #
86
#pragma interface SORT
87
#pragma token TYPE LINKAGE #
88
#pragma interface LINKAGE
89
#pragma token TYPE SPECIFICATION #
90
#pragma interface SPECIFICATION
91
#pragma token TYPE COMMAND #
92
#pragma interface COMMAND
93
 
94
 
95
/* Structure declarations */
96
 
97
 
98
 
99
/* Identity type definitions */
100
 
101
 
102
 
103
/* Structure definitions */
104
 
105
#ifndef tdf_STRUCT_DEFINED
106
#define tdf_STRUCT_DEFINED
107
 
108
#endif /* tdf_STRUCT_DEFINED */
109
 
110
 
111
/* Function declarations */
112
 
7 7u83 113
extern void destroy_tdf();
114
extern void dummy_destroy_tdf();
2 7u83 115
#ifdef tdf_IO_ROUTINES
7 7u83 116
extern unsigned crt_tdf_alias;
117
extern void clear_tdf_alias(void);
2 7u83 118
#endif
119
 
120
 
121
/* Pointer token specifications */
122
 
123
#pragma token PROC {\
7 7u83 124
	TYPE t, EXP : PTR(t) : e1, EXP : SIZE(t) : e2 |\
2 7u83 125
	EXP e1, EXP e2\
7 7u83 126
    } EXP : PTR(t) : STEP_ptr #
2 7u83 127
 
7 7u83 128
#pragma token PROC(\
2 7u83 129
	TYPE t\
7 7u83 130
    ) EXP const : PTR(t) : NULL_ptr #
2 7u83 131
 
132
#pragma token PROC {\
7 7u83 133
	TYPE t, EXP : PTR(t) : e |\
2 7u83 134
	EXP e\
135
    } EXP : int : IS_NULL_ptr #
136
 
137
#pragma token PROC {\
7 7u83 138
	TYPE t, EXP : PTR(t) : e1, EXP : PTR(t) : e2 |\
2 7u83 139
	EXP e1, EXP e2\
140
    } EXP : int : EQ_ptr #
141
 
142
#pragma token PROC {\
7 7u83 143
	TYPE t, EXP : SIZE(t) : e |\
2 7u83 144
	EXP e\
7 7u83 145
    } EXP : PTR(t) : MAKE_ptr #
2 7u83 146
 
147
#pragma token PROC {\
7 7u83 148
	TYPE t, EXP : PTR(t) : e1, EXP : SIZE(t) : e2 |\
2 7u83 149
	EXP e1, EXP e2\
150
    } EXP : void : DESTROY_ptr #
151
 
7 7u83 152
#pragma token PROC(\
2 7u83 153
	TYPE t\
7 7u83 154
    ) EXP : PTR(t) : UNIQ_ptr #
2 7u83 155
 
156
#pragma token PROC {\
7 7u83 157
	TYPE t, EXP : PTR(t) : e |\
2 7u83 158
	EXP e\
159
    } EXP : void : DESTROY_UNIQ_ptr #
160
 
161
#pragma interface STEP_ptr NULL_ptr IS_NULL_ptr EQ_ptr
162
#pragma interface MAKE_ptr DESTROY_ptr
163
 
164
#ifdef tdf_IO_ROUTINES
165
#pragma token PROC {\
7 7u83 166
	TYPE t, EXP : PTR(t) : e |\
2 7u83 167
	EXP e\
168
    } EXP : void * : VOIDSTAR_ptr #
169
#pragma interface VOIDSTAR_ptr
170
#endif
171
 
7 7u83 172
#pragma token PROC(\
2 7u83 173
	TYPE t\
7 7u83 174
    ) EXP const : SIZE(PTR(t)) : SIZE_ptr #
2 7u83 175
 
176
#pragma token PROC {\
7 7u83 177
	TYPE t, EXP : PTR(PTR(t)) : e1,\
178
	EXP : PTR(t) : e2 |\
2 7u83 179
	EXP e1, EXP e2\
180
    } EXP : void : COPY_ptr #
181
 
182
#pragma token PROC {\
7 7u83 183
	TYPE t, EXP : PTR(PTR(t)) : e |\
2 7u83 184
	EXP e\
7 7u83 185
    } EXP : PTR(t) : DEREF_ptr #
2 7u83 186
 
187
#pragma token PROC {\
7 7u83 188
	TYPE t, EXP : PTR(t) : e2,\
189
	EXP : LIST(PTR(t)) : e3,\
190
	EXP lvalue : LIST(PTR(t)) : e4 |\
2 7u83 191
	EXP e2, EXP e3, EXP e4\
192
    } STATEMENT CONS_ptr #
193
 
194
#pragma token PROC {\
7 7u83 195
	TYPE t, EXP lvalue : PTR(t) : e2,\
196
	EXP lvalue : LIST(PTR(t)) : e3,\
197
	EXP : LIST(PTR(t)) : e4 |\
2 7u83 198
	EXP e2, EXP e3, EXP e4\
199
    } STATEMENT UN_CONS_ptr #
200
 
201
#pragma token PROC {\
202
	TYPE t, EXP : DESTROYER : e1,\
7 7u83 203
	EXP lvalue : PTR(t) : e2,\
204
	EXP lvalue : LIST(PTR(t)) : e3,\
205
	EXP : LIST(PTR(t)) : e4 |\
2 7u83 206
	EXP e1, EXP e2, EXP e3, EXP e4\
207
    } STATEMENT DESTROY_CONS_ptr #
208
 
209
#pragma token PROC {\
7 7u83 210
	TYPE t, EXP : PTR(t) : e2,\
211
	EXP lvalue : STACK(PTR(t)) : e3 |\
2 7u83 212
	EXP e2, EXP e3\
213
    } STATEMENT PUSH_ptr #
214
 
215
#pragma token PROC {\
7 7u83 216
	TYPE t, EXP lvalue : PTR(t) : e2,\
217
	EXP lvalue : STACK(PTR(t)) : e3 |\
2 7u83 218
	EXP e2, EXP e3\
219
    } STATEMENT POP_ptr #
220
 
221
#pragma interface SIZE_ptr COPY_ptr DEREF_ptr
222
#pragma interface CONS_ptr UN_CONS_ptr DESTROY_CONS_ptr
223
#pragma interface PUSH_ptr POP_ptr
224
 
225
 
226
/* List token specifications */
227
 
228
#pragma token PROC {\
7 7u83 229
	TYPE t, EXP : LIST(t) : e |\
2 7u83 230
	EXP e\
7 7u83 231
    } EXP : PTR(t) : HEAD_list #
2 7u83 232
 
233
#pragma token PROC {\
7 7u83 234
	TYPE t, EXP : LIST(t) : e |\
2 7u83 235
	EXP e\
7 7u83 236
    } EXP : PTR(LIST(t)) : PTR_TAIL_list #
2 7u83 237
 
238
#pragma token PROC {\
7 7u83 239
	TYPE t, EXP : LIST(t) : e |\
2 7u83 240
	EXP e\
7 7u83 241
    } EXP : LIST(t) : TAIL_list #
2 7u83 242
 
243
#pragma token PROC {\
7 7u83 244
	TYPE t, EXP : LIST(t) : e1 |\
2 7u83 245
	EXP e1\
246
    } EXP : unsigned : LENGTH_list #
247
 
248
#pragma token PROC {\
7 7u83 249
	TYPE t, EXP : LIST(t) : e1 |\
2 7u83 250
	EXP e1\
7 7u83 251
    } EXP : LIST(t) : END_list #
2 7u83 252
 
253
#pragma token PROC {\
7 7u83 254
	TYPE t, EXP : LIST(t) : e1 |\
2 7u83 255
	EXP e1\
7 7u83 256
    } EXP : LIST(t) : REVERSE_list #
2 7u83 257
 
258
#pragma token PROC {\
7 7u83 259
	TYPE t, EXP : LIST(t) : e1, EXP : LIST(t) : e2 |\
2 7u83 260
	EXP e1, EXP e2\
7 7u83 261
    } EXP : LIST(t) : APPEND_list #
2 7u83 262
 
7 7u83 263
#pragma token PROC(\
2 7u83 264
	TYPE t\
7 7u83 265
    ) EXP const : LIST(t) : NULL_list #
2 7u83 266
 
267
#pragma token PROC {\
7 7u83 268
	TYPE t, EXP : LIST(t) : e |\
2 7u83 269
	EXP e\
270
    } EXP : int : IS_NULL_list #
271
 
272
#pragma token PROC {\
7 7u83 273
	TYPE t, EXP : LIST(t) : e1, EXP : LIST(t) : e2 |\
2 7u83 274
	EXP e1, EXP e2\
275
    } EXP : int : EQ_list #
276
 
7 7u83 277
#pragma token PROC(\
2 7u83 278
	TYPE t\
7 7u83 279
    ) EXP : LIST(t) : UNIQ_list #
2 7u83 280
 
281
#pragma token PROC {\
7 7u83 282
	TYPE t, EXP : LIST(t) : e |\
2 7u83 283
	EXP e\
284
    } EXP : void : DESTROY_UNIQ_list #
285
 
286
#pragma token PROC {\
7 7u83 287
	TYPE t, EXP : LIST(t) : e1, EXP : SIZE(t) : e2 |\
2 7u83 288
	EXP e1, EXP e2\
289
    } STATEMENT DESTROY_list #
290
 
291
#pragma interface HEAD_list PTR_TAIL_list TAIL_list
292
#pragma interface LENGTH_list END_list REVERSE_list APPEND_list
293
#pragma interface NULL_list IS_NULL_list EQ_list
294
#pragma interface UNIQ_list DESTROY_UNIQ_list DESTROY_list
295
 
296
#ifdef tdf_IO_ROUTINES
297
#pragma token PROC {\
7 7u83 298
	TYPE t, EXP : LIST(t) : e |\
2 7u83 299
	EXP e\
300
    } EXP : void * : VOIDSTAR_list #
301
#pragma interface VOIDSTAR_list
302
#endif
303
 
7 7u83 304
#pragma token PROC(\
2 7u83 305
	TYPE t\
7 7u83 306
    ) EXP const : SIZE(LIST(t)) : SIZE_list #
2 7u83 307
 
308
#pragma token PROC {\
7 7u83 309
	TYPE t, EXP : PTR(LIST(t)) : e1,\
310
	EXP : LIST(t) : e2 |\
2 7u83 311
	EXP e1, EXP e2\
312
    } EXP : void : COPY_list #
313
 
314
#pragma token PROC {\
7 7u83 315
	TYPE t, EXP : PTR(LIST(t)) : e |\
2 7u83 316
	EXP e\
7 7u83 317
    } EXP : LIST(t) : DEREF_list #
2 7u83 318
 
319
#pragma token PROC {\
7 7u83 320
	TYPE t, EXP : LIST(t) : e2,\
321
	EXP : LIST(LIST(t)) : e3,\
322
	EXP lvalue : LIST(LIST(t)) : e4 |\
2 7u83 323
	EXP e2, EXP e3, EXP e4\
324
    } STATEMENT CONS_list #
325
 
326
#pragma token PROC {\
7 7u83 327
	TYPE t, EXP lvalue : LIST(t) : e2,\
328
	EXP lvalue : LIST(LIST(t)) : e3,\
329
	EXP : LIST(LIST(t)) : e4 |\
2 7u83 330
	EXP e2, EXP e3, EXP e4\
331
    } STATEMENT UN_CONS_list #
332
 
333
#pragma token PROC {\
334
	TYPE t, EXP : DESTROYER : e1,\
7 7u83 335
	EXP lvalue : LIST(t) : e2,\
336
	EXP lvalue : LIST(LIST(t)) : e3,\
337
	EXP : LIST(LIST(t)) : e4 |\
2 7u83 338
	EXP e1, EXP e2, EXP e3, EXP e4\
339
    } STATEMENT DESTROY_CONS_list #
340
 
341
#pragma token PROC {\
7 7u83 342
	TYPE t, EXP : LIST(t) : e2,\
343
	EXP lvalue : STACK(LIST(t)) : e3 |\
2 7u83 344
	EXP e2, EXP e3\
345
    } STATEMENT PUSH_list #
346
 
347
#pragma token PROC {\
7 7u83 348
	TYPE t, EXP lvalue : LIST(t) : e2,\
349
	EXP lvalue : STACK(LIST(t)) : e3 |\
2 7u83 350
	EXP e2, EXP e3\
351
    } STATEMENT POP_list #
352
 
353
#pragma interface SIZE_list COPY_list DEREF_list
354
#pragma interface CONS_list UN_CONS_list DESTROY_CONS_list
355
#pragma interface PUSH_list POP_list
356
 
357
 
358
/* Stack token specifications */
359
 
7 7u83 360
#pragma token PROC(\
2 7u83 361
	TYPE t\
7 7u83 362
    ) EXP const : STACK(t) : NULL_stack #
2 7u83 363
 
364
#pragma token PROC {\
7 7u83 365
	TYPE t, EXP : STACK(t) : e |\
2 7u83 366
	EXP e\
367
    } EXP : int : IS_NULL_stack #
368
 
369
#pragma token PROC {\
7 7u83 370
	TYPE t, EXP : STACK(t) : e1 |\
2 7u83 371
	EXP e1\
7 7u83 372
    } EXP : LIST(t) : LIST_stack #
2 7u83 373
 
374
#pragma token PROC {\
7 7u83 375
	TYPE t, EXP : LIST(t) : e1 |\
2 7u83 376
	EXP e1\
7 7u83 377
    } EXP : STACK(t) : STACK_list #
2 7u83 378
 
379
#pragma interface NULL_stack IS_NULL_stack LIST_stack STACK_list
380
 
7 7u83 381
#pragma token PROC(\
2 7u83 382
	TYPE t\
7 7u83 383
    ) EXP const : SIZE(STACK(t)) : SIZE_stack #
2 7u83 384
 
385
#pragma token PROC {\
7 7u83 386
	TYPE t, EXP : PTR(STACK(t)) : e1,\
387
	EXP : STACK(t) : e2 |\
2 7u83 388
	EXP e1, EXP e2\
389
    } EXP : void : COPY_stack #
390
 
391
#pragma token PROC {\
7 7u83 392
	TYPE t, EXP : PTR(STACK(t)) : e |\
2 7u83 393
	EXP e\
7 7u83 394
    } EXP : STACK(t) : DEREF_stack #
2 7u83 395
 
396
#pragma token PROC {\
7 7u83 397
	TYPE t, EXP : STACK(t) : e2,\
398
	EXP : LIST(STACK(t)) : e3,\
399
	EXP lvalue : LIST(STACK(t)) : e4 |\
2 7u83 400
	EXP e2, EXP e3, EXP e4\
401
    } STATEMENT CONS_stack #
402
 
403
#pragma token PROC {\
7 7u83 404
	TYPE t, EXP lvalue : STACK(t) : e2,\
405
	EXP lvalue : LIST(STACK(t)) : e3,\
406
	EXP : LIST(STACK(t)) : e4 |\
2 7u83 407
	EXP e2, EXP e3, EXP e4\
408
    } STATEMENT UN_CONS_stack #
409
 
410
#pragma token PROC {\
411
	TYPE t, EXP : DESTROYER : e1,\
7 7u83 412
	EXP lvalue : STACK(t) : e2,\
413
	EXP lvalue : LIST(STACK(t)) : e3,\
414
	EXP : LIST(STACK(t)) : e4 |\
2 7u83 415
	EXP e1, EXP e2, EXP e3, EXP e4\
416
    } STATEMENT DESTROY_CONS_stack #
417
 
418
#pragma token PROC {\
7 7u83 419
	TYPE t, EXP : STACK(t) : e2,\
420
	EXP lvalue : STACK(STACK(t)) : e3 |\
2 7u83 421
	EXP e2, EXP e3\
422
    } STATEMENT PUSH_stack #
423
 
424
#pragma token PROC {\
7 7u83 425
	TYPE t, EXP lvalue : STACK(t) : e2,\
426
	EXP lvalue : STACK(STACK(t)) : e3 |\
2 7u83 427
	EXP e2, EXP e3\
428
    } STATEMENT POP_stack #
429
 
430
#pragma interface SIZE_stack COPY_stack DEREF_stack
431
#pragma interface CONS_stack UN_CONS_stack DESTROY_CONS_stack
432
#pragma interface PUSH_stack POP_stack
433
 
434
 
435
/* Size token specifications */
436
 
437
#pragma token PROC {\
438
	TYPE t, VARIETY v,\
7 7u83 439
	EXP : SIZE(t) : e1, EXP : v : e2 |\
2 7u83 440
	EXP e1, EXP e2\
7 7u83 441
    } EXP : SIZE(t) : SCALE #
2 7u83 442
 
443
#pragma interface SCALE
444
 
445
 
446
/* Definitions for primitive int */
447
 
7 7u83 448
#pragma token EXP const : SIZE(int) : SIZE_int #
2 7u83 449
 
7 7u83 450
#pragma token PROC(\
451
	EXP : PTR(int) :,\
2 7u83 452
	EXP : int :\
453
    ) EXP : void : COPY_int #
454
 
7 7u83 455
#pragma token PROC(\
456
	EXP : PTR(int) :\
2 7u83 457
    ) EXP : int : DEREF_int #
458
 
7 7u83 459
#pragma token PROC(\
2 7u83 460
	EXP : int :,\
7 7u83 461
	EXP : LIST(int) :,\
462
	EXP lvalue : LIST(int) :\
2 7u83 463
    ) STATEMENT CONS_int #
464
 
7 7u83 465
#pragma token PROC(\
2 7u83 466
	EXP lvalue : int :,\
7 7u83 467
	EXP lvalue : LIST(int) :,\
468
	EXP : LIST(int) :\
2 7u83 469
    ) STATEMENT UN_CONS_int #
470
 
7 7u83 471
#pragma token PROC(\
2 7u83 472
	EXP : DESTROYER :,\
473
	EXP lvalue : int :,\
7 7u83 474
	EXP lvalue : LIST(int) :,\
475
	EXP : LIST(int) :\
2 7u83 476
    ) STATEMENT DESTROY_CONS_int #
477
 
7 7u83 478
#pragma token PROC(\
2 7u83 479
	EXP : int :,\
7 7u83 480
	EXP lvalue : STACK(int) :\
2 7u83 481
    ) STATEMENT PUSH_int #
482
 
7 7u83 483
#pragma token PROC(\
2 7u83 484
	EXP lvalue : int :,\
7 7u83 485
	EXP lvalue : STACK(int) :\
2 7u83 486
    ) STATEMENT POP_int #
487
 
488
#pragma interface SIZE_int COPY_int DEREF_int
489
#pragma interface CONS_int UN_CONS_int DESTROY_CONS_int
490
#pragma interface PUSH_int POP_int
491
 
492
 
493
/* Definitions for primitive unsigned */
494
 
7 7u83 495
#pragma token EXP const : SIZE(unsigned) : SIZE_unsigned #
2 7u83 496
 
7 7u83 497
#pragma token PROC(\
498
	EXP : PTR(unsigned) :,\
2 7u83 499
	EXP : unsigned :\
500
    ) EXP : void : COPY_unsigned #
501
 
7 7u83 502
#pragma token PROC(\
503
	EXP : PTR(unsigned) :\
2 7u83 504
    ) EXP : unsigned : DEREF_unsigned #
505
 
7 7u83 506
#pragma token PROC(\
2 7u83 507
	EXP : unsigned :,\
7 7u83 508
	EXP : LIST(unsigned) :,\
509
	EXP lvalue : LIST(unsigned) :\
2 7u83 510
    ) STATEMENT CONS_unsigned #
511
 
7 7u83 512
#pragma token PROC(\
2 7u83 513
	EXP lvalue : unsigned :,\
7 7u83 514
	EXP lvalue : LIST(unsigned) :,\
515
	EXP : LIST(unsigned) :\
2 7u83 516
    ) STATEMENT UN_CONS_unsigned #
517
 
7 7u83 518
#pragma token PROC(\
2 7u83 519
	EXP : DESTROYER :,\
520
	EXP lvalue : unsigned :,\
7 7u83 521
	EXP lvalue : LIST(unsigned) :,\
522
	EXP : LIST(unsigned) :\
2 7u83 523
    ) STATEMENT DESTROY_CONS_unsigned #
524
 
7 7u83 525
#pragma token PROC(\
2 7u83 526
	EXP : unsigned :,\
7 7u83 527
	EXP lvalue : STACK(unsigned) :\
2 7u83 528
    ) STATEMENT PUSH_unsigned #
529
 
7 7u83 530
#pragma token PROC(\
2 7u83 531
	EXP lvalue : unsigned :,\
7 7u83 532
	EXP lvalue : STACK(unsigned) :\
2 7u83 533
    ) STATEMENT POP_unsigned #
534
 
535
#pragma interface SIZE_unsigned COPY_unsigned DEREF_unsigned
536
#pragma interface CONS_unsigned UN_CONS_unsigned DESTROY_CONS_unsigned
537
#pragma interface PUSH_unsigned POP_unsigned
538
 
539
 
540
/* Definitions for primitive string */
541
 
7 7u83 542
#pragma token EXP const : SIZE(string) : SIZE_string #
2 7u83 543
 
7 7u83 544
#pragma token PROC(\
545
	EXP : PTR(string) :,\
2 7u83 546
	EXP : string :\
547
    ) EXP : void : COPY_string #
548
 
7 7u83 549
#pragma token PROC(\
550
	EXP : PTR(string) :\
2 7u83 551
    ) EXP : string : DEREF_string #
552
 
7 7u83 553
#pragma token PROC(\
2 7u83 554
	EXP : string :,\
7 7u83 555
	EXP : LIST(string) :,\
556
	EXP lvalue : LIST(string) :\
2 7u83 557
    ) STATEMENT CONS_string #
558
 
7 7u83 559
#pragma token PROC(\
2 7u83 560
	EXP lvalue : string :,\
7 7u83 561
	EXP lvalue : LIST(string) :,\
562
	EXP : LIST(string) :\
2 7u83 563
    ) STATEMENT UN_CONS_string #
564
 
7 7u83 565
#pragma token PROC(\
2 7u83 566
	EXP : DESTROYER :,\
567
	EXP lvalue : string :,\
7 7u83 568
	EXP lvalue : LIST(string) :,\
569
	EXP : LIST(string) :\
2 7u83 570
    ) STATEMENT DESTROY_CONS_string #
571
 
7 7u83 572
#pragma token PROC(\
2 7u83 573
	EXP : string :,\
7 7u83 574
	EXP lvalue : STACK(string) :\
2 7u83 575
    ) STATEMENT PUSH_string #
576
 
7 7u83 577
#pragma token PROC(\
2 7u83 578
	EXP lvalue : string :,\
7 7u83 579
	EXP lvalue : STACK(string) :\
2 7u83 580
    ) STATEMENT POP_string #
581
 
582
#pragma interface SIZE_string COPY_string DEREF_string
583
#pragma interface CONS_string UN_CONS_string DESTROY_CONS_string
584
#pragma interface PUSH_string POP_string
585
 
586
 
587
/* Definitions for union PARAMETER */
588
 
7 7u83 589
#define ORDER_par ((unsigned)1)
2 7u83 590
#pragma token EXP const : PARAMETER : NULL_par #
7 7u83 591
#pragma token PROC(EXP : PARAMETER :) EXP : int : IS_NULL_par #
592
#pragma token PROC(EXP : PARAMETER :, EXP : PARAMETER :) EXP : int : EQ_par #
2 7u83 593
#pragma interface NULL_par IS_NULL_par EQ_par
594
 
7 7u83 595
#pragma token EXP const : SIZE(PARAMETER) : SIZE_par #
2 7u83 596
 
7 7u83 597
#pragma token PROC(\
598
	EXP : PTR(PARAMETER) :,\
2 7u83 599
	EXP : PARAMETER :\
600
    ) EXP : void : COPY_par #
601
 
7 7u83 602
#pragma token PROC(\
603
	EXP : PTR(PARAMETER) :\
2 7u83 604
    ) EXP : PARAMETER : DEREF_par #
605
 
7 7u83 606
#pragma token PROC(\
2 7u83 607
	EXP : PARAMETER :,\
7 7u83 608
	EXP : LIST(PARAMETER) :,\
609
	EXP lvalue : LIST(PARAMETER) :\
2 7u83 610
    ) STATEMENT CONS_par #
611
 
7 7u83 612
#pragma token PROC(\
2 7u83 613
	EXP lvalue : PARAMETER :,\
7 7u83 614
	EXP lvalue : LIST(PARAMETER) :,\
615
	EXP : LIST(PARAMETER) :\
2 7u83 616
    ) STATEMENT UN_CONS_par #
617
 
7 7u83 618
#pragma token PROC(\
2 7u83 619
	EXP : DESTROYER :,\
620
	EXP lvalue : PARAMETER :,\
7 7u83 621
	EXP lvalue : LIST(PARAMETER) :,\
622
	EXP : LIST(PARAMETER) :\
2 7u83 623
    ) STATEMENT DESTROY_CONS_par #
624
 
7 7u83 625
#pragma token PROC(\
2 7u83 626
	EXP : PARAMETER :,\
7 7u83 627
	EXP lvalue : STACK(PARAMETER) :\
2 7u83 628
    ) STATEMENT PUSH_par #
629
 
7 7u83 630
#pragma token PROC(\
2 7u83 631
	EXP lvalue : PARAMETER :,\
7 7u83 632
	EXP lvalue : STACK(PARAMETER) :\
2 7u83 633
    ) STATEMENT POP_par #
634
 
635
#pragma interface SIZE_par COPY_par DEREF_par
636
#pragma interface CONS_par UN_CONS_par DESTROY_CONS_par
637
#pragma interface PUSH_par POP_par
638
 
639
 
640
/* Definitions for union CONSTRUCT */
641
 
7 7u83 642
#define ORDER_cons ((unsigned)1)
2 7u83 643
#pragma token EXP const : CONSTRUCT : NULL_cons #
7 7u83 644
#pragma token PROC(EXP : CONSTRUCT :) EXP : int : IS_NULL_cons #
645
#pragma token PROC(EXP : CONSTRUCT :, EXP : CONSTRUCT :) EXP : int : EQ_cons #
2 7u83 646
#pragma interface NULL_cons IS_NULL_cons EQ_cons
647
 
7 7u83 648
#pragma token EXP const : SIZE(CONSTRUCT) : SIZE_cons #
2 7u83 649
 
7 7u83 650
#pragma token PROC(\
651
	EXP : PTR(CONSTRUCT) :,\
2 7u83 652
	EXP : CONSTRUCT :\
653
    ) EXP : void : COPY_cons #
654
 
7 7u83 655
#pragma token PROC(\
656
	EXP : PTR(CONSTRUCT) :\
2 7u83 657
    ) EXP : CONSTRUCT : DEREF_cons #
658
 
7 7u83 659
#pragma token PROC(\
2 7u83 660
	EXP : CONSTRUCT :,\
7 7u83 661
	EXP : LIST(CONSTRUCT) :,\
662
	EXP lvalue : LIST(CONSTRUCT) :\
2 7u83 663
    ) STATEMENT CONS_cons #
664
 
7 7u83 665
#pragma token PROC(\
2 7u83 666
	EXP lvalue : CONSTRUCT :,\
7 7u83 667
	EXP lvalue : LIST(CONSTRUCT) :,\
668
	EXP : LIST(CONSTRUCT) :\
2 7u83 669
    ) STATEMENT UN_CONS_cons #
670
 
7 7u83 671
#pragma token PROC(\
2 7u83 672
	EXP : DESTROYER :,\
673
	EXP lvalue : CONSTRUCT :,\
7 7u83 674
	EXP lvalue : LIST(CONSTRUCT) :,\
675
	EXP : LIST(CONSTRUCT) :\
2 7u83 676
    ) STATEMENT DESTROY_CONS_cons #
677
 
7 7u83 678
#pragma token PROC(\
2 7u83 679
	EXP : CONSTRUCT :,\
7 7u83 680
	EXP lvalue : STACK(CONSTRUCT) :\
2 7u83 681
    ) STATEMENT PUSH_cons #
682
 
7 7u83 683
#pragma token PROC(\
2 7u83 684
	EXP lvalue : CONSTRUCT :,\
7 7u83 685
	EXP lvalue : STACK(CONSTRUCT) :\
2 7u83 686
    ) STATEMENT POP_cons #
687
 
688
#pragma interface SIZE_cons COPY_cons DEREF_cons
689
#pragma interface CONS_cons UN_CONS_cons DESTROY_CONS_cons
690
#pragma interface PUSH_cons POP_cons
691
 
692
 
693
/* Definitions for union SORT_INFO */
694
 
7 7u83 695
#define ORDER_info ((unsigned)6)
2 7u83 696
#pragma token EXP const : SORT_INFO : NULL_info #
7 7u83 697
#pragma token PROC(EXP : SORT_INFO :) EXP : int : IS_NULL_info #
698
#pragma token PROC(EXP : SORT_INFO :, EXP : SORT_INFO :) EXP : int : EQ_info #
2 7u83 699
#pragma interface NULL_info IS_NULL_info EQ_info
700
 
7 7u83 701
#pragma token EXP const : SIZE(SORT_INFO) : SIZE_info #
2 7u83 702
 
7 7u83 703
#pragma token PROC(\
704
	EXP : PTR(SORT_INFO) :,\
2 7u83 705
	EXP : SORT_INFO :\
706
    ) EXP : void : COPY_info #
707
 
7 7u83 708
#pragma token PROC(\
709
	EXP : PTR(SORT_INFO) :\
2 7u83 710
    ) EXP : SORT_INFO : DEREF_info #
711
 
7 7u83 712
#pragma token PROC(\
2 7u83 713
	EXP : SORT_INFO :,\
7 7u83 714
	EXP : LIST(SORT_INFO) :,\
715
	EXP lvalue : LIST(SORT_INFO) :\
2 7u83 716
    ) STATEMENT CONS_info #
717
 
7 7u83 718
#pragma token PROC(\
2 7u83 719
	EXP lvalue : SORT_INFO :,\
7 7u83 720
	EXP lvalue : LIST(SORT_INFO) :,\
721
	EXP : LIST(SORT_INFO) :\
2 7u83 722
    ) STATEMENT UN_CONS_info #
723
 
7 7u83 724
#pragma token PROC(\
2 7u83 725
	EXP : DESTROYER :,\
726
	EXP lvalue : SORT_INFO :,\
7 7u83 727
	EXP lvalue : LIST(SORT_INFO) :,\
728
	EXP : LIST(SORT_INFO) :\
2 7u83 729
    ) STATEMENT DESTROY_CONS_info #
730
 
7 7u83 731
#pragma token PROC(\
2 7u83 732
	EXP : SORT_INFO :,\
7 7u83 733
	EXP lvalue : STACK(SORT_INFO) :\
2 7u83 734
    ) STATEMENT PUSH_info #
735
 
7 7u83 736
#pragma token PROC(\
2 7u83 737
	EXP lvalue : SORT_INFO :,\
7 7u83 738
	EXP lvalue : STACK(SORT_INFO) :\
2 7u83 739
    ) STATEMENT POP_info #
740
 
741
#pragma interface SIZE_info COPY_info DEREF_info
742
#pragma interface CONS_info UN_CONS_info DESTROY_CONS_info
743
#pragma interface PUSH_info POP_info
744
 
745
 
746
/* Definitions for union SORT */
747
 
7 7u83 748
#define ORDER_sort ((unsigned)1)
2 7u83 749
#pragma token EXP const : SORT : NULL_sort #
7 7u83 750
#pragma token PROC(EXP : SORT :) EXP : int : IS_NULL_sort #
751
#pragma token PROC(EXP : SORT :, EXP : SORT :) EXP : int : EQ_sort #
2 7u83 752
#pragma interface NULL_sort IS_NULL_sort EQ_sort
753
 
7 7u83 754
#pragma token EXP const : SIZE(SORT) : SIZE_sort #
2 7u83 755
 
7 7u83 756
#pragma token PROC(\
757
	EXP : PTR(SORT) :,\
2 7u83 758
	EXP : SORT :\
759
    ) EXP : void : COPY_sort #
760
 
7 7u83 761
#pragma token PROC(\
762
	EXP : PTR(SORT) :\
2 7u83 763
    ) EXP : SORT : DEREF_sort #
764
 
7 7u83 765
#pragma token PROC(\
2 7u83 766
	EXP : SORT :,\
7 7u83 767
	EXP : LIST(SORT) :,\
768
	EXP lvalue : LIST(SORT) :\
2 7u83 769
    ) STATEMENT CONS_sort #
770
 
7 7u83 771
#pragma token PROC(\
2 7u83 772
	EXP lvalue : SORT :,\
7 7u83 773
	EXP lvalue : LIST(SORT) :,\
774
	EXP : LIST(SORT) :\
2 7u83 775
    ) STATEMENT UN_CONS_sort #
776
 
7 7u83 777
#pragma token PROC(\
2 7u83 778
	EXP : DESTROYER :,\
779
	EXP lvalue : SORT :,\
7 7u83 780
	EXP lvalue : LIST(SORT) :,\
781
	EXP : LIST(SORT) :\
2 7u83 782
    ) STATEMENT DESTROY_CONS_sort #
783
 
7 7u83 784
#pragma token PROC(\
2 7u83 785
	EXP : SORT :,\
7 7u83 786
	EXP lvalue : STACK(SORT) :\
2 7u83 787
    ) STATEMENT PUSH_sort #
788
 
7 7u83 789
#pragma token PROC(\
2 7u83 790
	EXP lvalue : SORT :,\
7 7u83 791
	EXP lvalue : STACK(SORT) :\
2 7u83 792
    ) STATEMENT POP_sort #
793
 
794
#pragma interface SIZE_sort COPY_sort DEREF_sort
795
#pragma interface CONS_sort UN_CONS_sort DESTROY_CONS_sort
796
#pragma interface PUSH_sort POP_sort
797
 
798
 
799
/* Definitions for union LINKAGE */
800
 
7 7u83 801
#define ORDER_link ((unsigned)1)
2 7u83 802
#pragma token EXP const : LINKAGE : NULL_link #
7 7u83 803
#pragma token PROC(EXP : LINKAGE :) EXP : int : IS_NULL_link #
804
#pragma token PROC(EXP : LINKAGE :, EXP : LINKAGE :) EXP : int : EQ_link #
2 7u83 805
#pragma interface NULL_link IS_NULL_link EQ_link
806
 
7 7u83 807
#pragma token EXP const : SIZE(LINKAGE) : SIZE_link #
2 7u83 808
 
7 7u83 809
#pragma token PROC(\
810
	EXP : PTR(LINKAGE) :,\
2 7u83 811
	EXP : LINKAGE :\
812
    ) EXP : void : COPY_link #
813
 
7 7u83 814
#pragma token PROC(\
815
	EXP : PTR(LINKAGE) :\
2 7u83 816
    ) EXP : LINKAGE : DEREF_link #
817
 
7 7u83 818
#pragma token PROC(\
2 7u83 819
	EXP : LINKAGE :,\
7 7u83 820
	EXP : LIST(LINKAGE) :,\
821
	EXP lvalue : LIST(LINKAGE) :\
2 7u83 822
    ) STATEMENT CONS_link #
823
 
7 7u83 824
#pragma token PROC(\
2 7u83 825
	EXP lvalue : LINKAGE :,\
7 7u83 826
	EXP lvalue : LIST(LINKAGE) :,\
827
	EXP : LIST(LINKAGE) :\
2 7u83 828
    ) STATEMENT UN_CONS_link #
829
 
7 7u83 830
#pragma token PROC(\
2 7u83 831
	EXP : DESTROYER :,\
832
	EXP lvalue : LINKAGE :,\
7 7u83 833
	EXP lvalue : LIST(LINKAGE) :,\
834
	EXP : LIST(LINKAGE) :\
2 7u83 835
    ) STATEMENT DESTROY_CONS_link #
836
 
7 7u83 837
#pragma token PROC(\
2 7u83 838
	EXP : LINKAGE :,\
7 7u83 839
	EXP lvalue : STACK(LINKAGE) :\
2 7u83 840
    ) STATEMENT PUSH_link #
841
 
7 7u83 842
#pragma token PROC(\
2 7u83 843
	EXP lvalue : LINKAGE :,\
7 7u83 844
	EXP lvalue : STACK(LINKAGE) :\
2 7u83 845
    ) STATEMENT POP_link #
846
 
847
#pragma interface SIZE_link COPY_link DEREF_link
848
#pragma interface CONS_link UN_CONS_link DESTROY_CONS_link
849
#pragma interface PUSH_link POP_link
850
 
851
 
852
/* Definitions for union SPECIFICATION */
853
 
7 7u83 854
#define ORDER_spec ((unsigned)1)
2 7u83 855
#pragma token EXP const : SPECIFICATION : NULL_spec #
7 7u83 856
#pragma token PROC(EXP : SPECIFICATION :) EXP : int : IS_NULL_spec #
857
#pragma token PROC(EXP : SPECIFICATION :, EXP : SPECIFICATION :) EXP : int : EQ_spec #
2 7u83 858
#pragma interface NULL_spec IS_NULL_spec EQ_spec
859
 
7 7u83 860
#pragma token EXP const : SIZE(SPECIFICATION) : SIZE_spec #
2 7u83 861
 
7 7u83 862
#pragma token PROC(\
863
	EXP : PTR(SPECIFICATION) :,\
2 7u83 864
	EXP : SPECIFICATION :\
865
    ) EXP : void : COPY_spec #
866
 
7 7u83 867
#pragma token PROC(\
868
	EXP : PTR(SPECIFICATION) :\
2 7u83 869
    ) EXP : SPECIFICATION : DEREF_spec #
870
 
7 7u83 871
#pragma token PROC(\
2 7u83 872
	EXP : SPECIFICATION :,\
7 7u83 873
	EXP : LIST(SPECIFICATION) :,\
874
	EXP lvalue : LIST(SPECIFICATION) :\
2 7u83 875
    ) STATEMENT CONS_spec #
876
 
7 7u83 877
#pragma token PROC(\
2 7u83 878
	EXP lvalue : SPECIFICATION :,\
7 7u83 879
	EXP lvalue : LIST(SPECIFICATION) :,\
880
	EXP : LIST(SPECIFICATION) :\
2 7u83 881
    ) STATEMENT UN_CONS_spec #
882
 
7 7u83 883
#pragma token PROC(\
2 7u83 884
	EXP : DESTROYER :,\
885
	EXP lvalue : SPECIFICATION :,\
7 7u83 886
	EXP lvalue : LIST(SPECIFICATION) :,\
887
	EXP : LIST(SPECIFICATION) :\
2 7u83 888
    ) STATEMENT DESTROY_CONS_spec #
889
 
7 7u83 890
#pragma token PROC(\
2 7u83 891
	EXP : SPECIFICATION :,\
7 7u83 892
	EXP lvalue : STACK(SPECIFICATION) :\
2 7u83 893
    ) STATEMENT PUSH_spec #
894
 
7 7u83 895
#pragma token PROC(\
2 7u83 896
	EXP lvalue : SPECIFICATION :,\
7 7u83 897
	EXP lvalue : STACK(SPECIFICATION) :\
2 7u83 898
    ) STATEMENT POP_spec #
899
 
900
#pragma interface SIZE_spec COPY_spec DEREF_spec
901
#pragma interface CONS_spec UN_CONS_spec DESTROY_CONS_spec
902
#pragma interface PUSH_spec POP_spec
903
 
904
 
905
/* Definitions for union COMMAND */
906
 
7 7u83 907
#define ORDER_cmd ((unsigned)6)
2 7u83 908
#pragma token EXP const : COMMAND : NULL_cmd #
7 7u83 909
#pragma token PROC(EXP : COMMAND :) EXP : int : IS_NULL_cmd #
910
#pragma token PROC(EXP : COMMAND :, EXP : COMMAND :) EXP : int : EQ_cmd #
2 7u83 911
#pragma interface NULL_cmd IS_NULL_cmd EQ_cmd
912
 
7 7u83 913
#pragma token EXP const : SIZE(COMMAND) : SIZE_cmd #
2 7u83 914
 
7 7u83 915
#pragma token PROC(\
916
	EXP : PTR(COMMAND) :,\
2 7u83 917
	EXP : COMMAND :\
918
    ) EXP : void : COPY_cmd #
919
 
7 7u83 920
#pragma token PROC(\
921
	EXP : PTR(COMMAND) :\
2 7u83 922
    ) EXP : COMMAND : DEREF_cmd #
923
 
7 7u83 924
#pragma token PROC(\
2 7u83 925
	EXP : COMMAND :,\
7 7u83 926
	EXP : LIST(COMMAND) :,\
927
	EXP lvalue : LIST(COMMAND) :\
2 7u83 928
    ) STATEMENT CONS_cmd #
929
 
7 7u83 930
#pragma token PROC(\
2 7u83 931
	EXP lvalue : COMMAND :,\
7 7u83 932
	EXP lvalue : LIST(COMMAND) :,\
933
	EXP : LIST(COMMAND) :\
2 7u83 934
    ) STATEMENT UN_CONS_cmd #
935
 
7 7u83 936
#pragma token PROC(\
2 7u83 937
	EXP : DESTROYER :,\
938
	EXP lvalue : COMMAND :,\
7 7u83 939
	EXP lvalue : LIST(COMMAND) :,\
940
	EXP : LIST(COMMAND) :\
2 7u83 941
    ) STATEMENT DESTROY_CONS_cmd #
942
 
7 7u83 943
#pragma token PROC(\
2 7u83 944
	EXP : COMMAND :,\
7 7u83 945
	EXP lvalue : STACK(COMMAND) :\
2 7u83 946
    ) STATEMENT PUSH_cmd #
947
 
7 7u83 948
#pragma token PROC(\
2 7u83 949
	EXP lvalue : COMMAND :,\
7 7u83 950
	EXP lvalue : STACK(COMMAND) :\
2 7u83 951
    ) STATEMENT POP_cmd #
952
 
953
#pragma interface SIZE_cmd COPY_cmd DEREF_cmd
954
#pragma interface CONS_cmd UN_CONS_cmd DESTROY_CONS_cmd
955
#pragma interface PUSH_cmd POP_cmd
956
 
957
 
958
#endif