2 ** Inserted at beginning of c files generated by bison
3 ** REMEMBER: Change bison.reset too.
42 /*@-unqualifiedtrans@*/
49 /*drl added 11/27/2001*/
51 /* < end of bison.head > */
54 /* A Bison parser, made from llgrammar.y
55 by GNU Bison version 1.28 */
57 #define YYBISON 1 /* Identify Bison output. */
59 #define yyparse ylparse
61 #define yyerror ylerror
64 #define yydebug yldebug
65 #define yynerrs ylnerrs
68 #define POSTFIX_OP 259
71 #define LLT_VERTICALBAR 262
72 #define ITERATION_OP 263
74 #define LLT_LBRACKET 265
76 #define LLT_IF_THEN_ELSE 267
79 #define equationSym 270
80 #define commentSym 271
81 #define LLT_WHITESPACE 272
83 #define LLT_TYPEDEF_NAME 274
84 #define quantifierSym 275
96 #define LLT_EQUALS 287
97 #define LLT_LBRACE 288
98 #define LLT_RBRACE 289
99 #define LLT_RBRACKET 290
101 #define LLT_QUOTE 292
103 #define LLT_CCHAR 294
104 #define LLT_CFLOAT 295
105 #define LLT_CINTEGER 296
106 #define LLT_LCSTRING 297
108 #define LLT_ANYTHING 299
111 #define LLT_CLAIMS 302
112 #define LLT_CHECKS 303
113 #define LLT_CONSTANT 304
115 #define LLT_ENSURES 306
117 #define LLT_FRESH 308
119 #define LLT_IMMUTABLE 310
120 #define LLT_IMPORTS 311
121 #define LLT_CONSTRAINT 312
122 #define LLT_ISSUB 313
124 #define LLT_MODIFIES 315
125 #define LLT_MUTABLE 316
126 #define LLT_NOTHING 317
127 #define LLT_INTERNAL 318
128 #define LLT_FILESYS 319
133 #define LLT_PARTIAL 324
134 #define LLT_OWNED 325
135 #define LLT_DEPENDENT 326
139 #define LLT_SHARED 330
140 #define LLT_UNIQUE 331
141 #define LLT_UNUSED 332
142 #define LLT_EXITS 333
143 #define LLT_MAYEXIT 334
144 #define LLT_NEVEREXIT 335
145 #define LLT_TRUEEXIT 336
146 #define LLT_FALSEEXIT 337
147 #define LLT_UNDEF 338
148 #define LLT_KILLED 339
149 #define LLT_CHECKMOD 340
150 #define LLT_CHECKED 341
151 #define LLT_UNCHECKED 342
152 #define LLT_CHECKEDSTRICT 343
153 #define LLT_TRUENULL 344
154 #define LLT_FALSENULL 345
155 #define LLT_LNULL 346
156 #define LLT_LNOTNULL 347
157 #define LLT_RETURNED 348
158 #define LLT_OBSERVER 349
159 #define LLT_EXPOSED 350
160 #define LLT_REFCOUNTED 351
162 #define LLT_RELNULL 353
163 #define LLT_RELDEF 354
164 #define LLT_KILLREF 355
165 #define LLT_NULLTERMINATED 356
166 #define LLT_TEMPREF 357
167 #define LLT_NEWREF 358
168 #define LLT_PRIVATE 359
169 #define LLT_REQUIRES 360
170 #define LLT_RESULT 361
171 #define LLT_SIZEOF 362
173 #define LLT_TAGGEDUNION 364
176 #define LLT_TYPEDEF 367
177 #define LLT_UNCHANGED 368
180 #define LLT_CONST 371
181 #define LLT_DOUBLE 372
183 #define LLT_FLOAT 374
186 #define LLT_YIELD 377
188 #define LLT_SHORT 379
189 #define LLT_SIGNED 380
190 #define LLT_UNKNOWN 381
191 #define LLT_STRUCT 382
192 #define LLT_TELIPSIS 383
193 #define LLT_UNION 384
194 #define LLT_UNSIGNED 385
196 #define LLT_VOLATILE 387
197 #define LLT_PRINTFLIKE 388
198 #define LLT_SCANFLIKE 389
199 #define LLT_MESSAGELIKE 390
203 # include "splintMacros.nf"
204 # include "llbasic.h"
205 # include "lclscan.h"
206 # include "checking.h"
207 # include "lslparse.h"
209 # include "usymtab_interface.h"
212 static /*@unused@*/ void yyprint ();
216 void ylerror (char *) /*@modifies *g_warningstream@*/ ;
219 bool g_inTypeDef = FALSE;
221 /*@constant int YYDEBUG;@*/
225 # define YYPRINT(file, type, value) yyprint (file, type, value)
228 ** This is necessary, or else when the bison-generated code #include's malloc.h,
229 ** there will be a parse error.
231 ** Unfortunately, it means the error checking on malloc, etc. is lost for allocations
232 ** in bison-generated files under Win32.
244 ltoken ltok; /* a leaf is also an ltoken */
247 /*@only@*/ ltokenList ltokenList;
248 /*@only@*/ abstDeclaratorNode abstDecl;
249 /*@only@*/ declaratorNode declare;
250 /*@only@*/ declaratorNodeList declarelist;
251 /*@only@*/ typeExpr typeexpr;
252 /*@only@*/ arrayQualNode array;
253 /*@only@*/ quantifierNode quantifier;
254 /*@only@*/ quantifierNodeList quantifiers;
255 /*@only@*/ varNode var;
256 /*@only@*/ varNodeList vars;
257 /*@only@*/ storeRefNode storeref;
258 /*@only@*/ storeRefNodeList storereflist;
259 /*@only@*/ termNode term;
260 /*@only@*/ termNodeList termlist;
261 /*@only@*/ programNode program;
262 /*@only@*/ stmtNode stmt;
263 /*@only@*/ claimNode claim;
264 /*@only@*/ typeNode type;
265 /*@only@*/ iterNode iter;
266 /*@only@*/ fcnNode fcn;
267 /*@only@*/ fcnNodeList fcns;
268 /*@only@*/ letDeclNode letdecl;
269 /*@only@*/ letDeclNodeList letdecls;
270 /*@only@*/ lclPredicateNode lclpredicate;
271 /*@only@*/ modifyNode modify;
272 /*@only@*/ paramNode param;
273 /*@only@*/ paramNodeList paramlist;
274 /*@only@*/ declaratorInvNodeList declaratorinvs;
275 /*@only@*/ declaratorInvNode declaratorinv;
276 /*@only@*/ abstBodyNode abstbody;
277 /*@only@*/ abstractNode abstract;
278 /*@only@*/ exposedNode exposed;
279 /* taggedUnionNode taggedunion; */
280 /*@only@*/ globalList globals;
281 /*@only@*/ constDeclarationNode constdeclaration;
282 /*@only@*/ varDeclarationNode vardeclaration;
283 /*@only@*/ varDeclarationNodeList vardeclarationlist;
284 /*@only@*/ initDeclNodeList initdecls;
285 /*@only@*/ initDeclNode initdecl;
286 /*@only@*/ stDeclNodeList structdecls;
287 /*@only@*/ stDeclNode structdecl;
288 /*@only@*/ strOrUnionNode structorunion;
289 /*@only@*/ enumSpecNode enumspec;
290 /*@only@*/ lclTypeSpecNode lcltypespec;
291 /*@only@*/ typeNameNode typname;
292 /*@only@*/ opFormNode opform;
293 /*@only@*/ sigNode signature;
294 /*@only@*/ nameNode name;
295 /*@only@*/ typeNameNodeList namelist;
296 /*@only@*/ replaceNode replace;
297 /*@only@*/ replaceNodeList replacelist;
298 /*@only@*/ renamingNode renaming;
299 /*@only@*/ traitRefNode traitref;
300 /*@only@*/ traitRefNodeList traitreflist;
301 /*@only@*/ importNode import;
302 /*@only@*/ importNodeList importlist;
303 /*@only@*/ interfaceNode iface;
304 /*@only@*/ interfaceNodeList interfacelist;
305 /*@only@*/ CTypesNode ctypes;
323 #define YYFLAG -32768
326 #define YYTRANSLATE(x) ((unsigned)(x) <= 390 ? yytranslate[x] : 291)
328 static const short yytranslate[] = { 0,
329 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
330 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
331 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
332 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
333 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
334 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
335 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
336 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
337 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
340 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
341 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
342 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
343 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
354 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
355 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
356 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
357 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
358 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
359 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
360 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
361 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
362 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
363 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
364 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
365 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
366 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
367 127, 128, 129, 130, 131, 132, 133, 134, 135, 136
371 static const short yyprhs[] = { 0,
372 0, 1, 5, 6, 9, 11, 13, 14, 17, 20,
373 21, 24, 26, 28, 30, 34, 38, 40, 42, 44,
374 46, 48, 50, 57, 58, 60, 62, 66, 69, 71,
375 72, 76, 78, 80, 82, 84, 89, 93, 98, 103,
376 105, 107, 109, 111, 113, 114, 128, 129, 144, 145,
377 159, 164, 165, 166, 173, 174, 175, 183, 184, 185,
378 193, 194, 195, 202, 203, 204, 211, 214, 217, 219,
379 223, 225, 229, 231, 233, 237, 239, 241, 245, 247,
380 252, 256, 263, 265, 269, 271, 273, 277, 279, 283,
381 285, 289, 293, 297, 302, 304, 306, 308, 310, 312,
382 316, 318, 322, 323, 326, 330, 333, 336, 337, 340,
383 345, 346, 350, 352, 356, 362, 366, 368, 369, 373,
384 374, 378, 379, 383, 387, 391, 393, 397, 399, 401,
385 404, 406, 408, 409, 413, 414, 418, 419, 421, 423,
386 425, 429, 431, 435, 436, 441, 447, 449, 453, 456,
387 460, 464, 469, 473, 479, 486, 488, 492, 494, 496,
388 499, 502, 506, 510, 514, 519, 521, 525, 530, 534,
389 535, 538, 539, 541, 542, 549, 551, 555, 556, 560,
390 561, 565, 567, 569, 571, 573, 575, 577, 579, 581,
391 583, 585, 587, 590, 592, 594, 596, 598, 600, 602,
392 604, 606, 608, 610, 612, 614, 616, 618, 620, 622,
393 624, 626, 628, 630, 632, 634, 636, 638, 640, 642,
394 644, 646, 648, 650, 652, 654, 656, 658, 660, 662,
395 664, 666, 668, 670, 672, 675, 681, 683, 686, 688,
396 691, 692, 699, 700, 707, 710, 713, 714, 716, 718,
397 721, 725, 727, 731, 732, 734, 741, 744, 746, 750,
398 752, 754, 756, 760, 763, 766, 770, 775, 777, 781,
399 784, 787, 791, 796, 798, 801, 804, 808, 813, 816,
400 819, 822, 825, 829, 831, 832, 834, 838, 841, 843,
401 845, 848, 852, 856, 861, 864, 868, 875, 877, 880,
402 883, 887, 891, 896, 901, 907, 911, 916, 921, 927,
403 930, 933, 937, 941, 943, 945, 947, 949, 951, 953,
404 955, 956, 958, 960, 964, 966, 968, 973, 974, 976,
405 978, 982, 984, 986, 993, 995, 999, 1001, 1006, 1010,
406 1014, 1016, 1019, 1022, 1024, 1026, 1028, 1031, 1033, 1036,
407 1039, 1043, 1045, 1047, 1050, 1053, 1057, 1059, 1062, 1066,
408 1068, 1074, 1078, 1083, 1086, 1090, 1093, 1095, 1099, 1103,
409 1105, 1110, 1112, 1115, 1119, 1123, 1127, 1132, 1136, 1138,
410 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1159, 1164, 1169,
411 1174, 1181, 1186, 1188, 1190, 1192, 1194, 1196, 1199, 1200,
412 1204, 1206, 1210, 1214, 1219, 1221, 1223, 1225, 1227, 1229,
416 static const short yyrhs[] = { -1,
417 139, 138, 141, 0, 0, 139, 140, 0, 144, 0,
418 145, 0, 0, 146, 142, 0, 151, 142, 0, 0,
419 142, 143, 0, 146, 0, 151, 0, 145, 0, 57,
420 175, 7, 0, 115, 179, 7, 0, 154, 0, 155,
421 0, 156, 0, 158, 0, 161, 0, 147, 0, 122,
422 285, 10, 148, 37, 7, 0, 0, 149, 0, 150,
423 0, 149, 32, 150, 0, 123, 244, 0, 244, 0,
424 0, 109, 152, 153, 0, 154, 0, 155, 0, 156,
425 0, 158, 0, 50, 227, 189, 7, 0, 227, 189,
426 7, 0, 117, 227, 189, 7, 0, 133, 227, 189,
427 7, 0, 163, 0, 172, 0, 134, 0, 135, 0,
428 136, 0, 0, 227, 240, 191, 159, 34, 193, 195,
429 199, 200, 201, 204, 205, 35, 0, 0, 157, 227,
430 240, 191, 160, 34, 193, 195, 199, 200, 201, 204,
431 205, 35, 0, 0, 48, 287, 10, 206, 37, 191,
432 162, 34, 195, 200, 209, 204, 35, 0, 48, 284,
433 287, 7, 0, 0, 0, 62, 164, 112, 20, 165,
434 214, 0, 0, 0, 62, 166, 97, 112, 20, 167,
435 214, 0, 0, 0, 97, 62, 168, 112, 20, 169,
436 214, 0, 0, 0, 56, 170, 112, 20, 171, 214,
437 0, 0, 0, 113, 227, 173, 219, 174, 7, 0,
438 230, 7, 0, 238, 7, 0, 176, 0, 175, 32,
439 176, 0, 178, 0, 3, 178, 3, 0, 43, 0,
440 178, 0, 177, 32, 178, 0, 283, 0, 180, 0,
441 179, 32, 180, 0, 289, 0, 289, 10, 182, 37,
442 0, 10, 181, 37, 0, 10, 181, 37, 10, 182,
443 37, 0, 289, 0, 181, 32, 289, 0, 184, 0,
444 183, 0, 183, 32, 184, 0, 245, 0, 183, 32,
445 245, 0, 185, 0, 184, 32, 185, 0, 245, 53,
446 223, 0, 245, 53, 186, 0, 245, 53, 186, 256,
447 0, 290, 0, 249, 0, 188, 0, 260, 0, 190,
448 0, 189, 32, 190, 0, 240, 0, 240, 33, 187,
449 0, 0, 191, 192, 0, 227, 189, 7, 0, 64,
450 7, 0, 65, 7, 0, 0, 193, 194, 0, 105,
451 227, 189, 7, 0, 0, 60, 196, 7, 0, 197,
452 0, 196, 32, 197, 0, 285, 31, 198, 46, 260,
453 0, 285, 46, 260, 0, 227, 0, 0, 49, 259,
454 7, 0, 0, 106, 259, 7, 0, 0, 61, 63,
455 7, 0, 61, 45, 7, 0, 61, 202, 7, 0,
456 203, 0, 202, 32, 203, 0, 260, 0, 228, 0,
457 66, 228, 0, 64, 0, 65, 0, 0, 52, 259,
458 7, 0, 0, 48, 259, 7, 0, 0, 207, 0,
459 208, 0, 129, 0, 208, 32, 129, 0, 244, 0,
460 208, 32, 244, 0, 0, 47, 34, 210, 35, 0,
461 47, 34, 210, 7, 35, 0, 211, 0, 10, 210,
462 37, 0, 210, 6, 0, 210, 8, 210, 0, 210,
463 7, 210, 0, 284, 10, 212, 37, 0, 284, 10,
464 37, 0, 285, 33, 284, 10, 37, 0, 285, 33,
465 284, 10, 212, 37, 0, 213, 0, 212, 32, 213,
466 0, 277, 0, 285, 0, 3, 213, 0, 213, 3,
467 0, 213, 3, 213, 0, 10, 213, 37, 0, 284,
468 10, 37, 0, 284, 10, 212, 37, 0, 7, 0,
469 34, 215, 35, 0, 34, 177, 35, 7, 0, 34,
470 35, 7, 0, 0, 215, 158, 0, 0, 217, 0,
471 0, 58, 218, 279, 10, 259, 37, 0, 220, 0,
472 219, 32, 220, 0, 0, 240, 221, 222, 0, 0,
473 34, 216, 35, 0, 132, 0, 116, 0, 118, 0,
474 120, 0, 121, 0, 124, 0, 125, 0, 126, 0,
475 131, 0, 127, 0, 223, 0, 224, 223, 0, 20,
476 0, 224, 0, 67, 0, 78, 0, 68, 0, 69,
477 0, 71, 0, 72, 0, 73, 0, 74, 0, 95,
478 0, 79, 0, 80, 0, 82, 0, 83, 0, 81,
479 0, 75, 0, 76, 0, 77, 0, 87, 0, 88,
480 0, 89, 0, 90, 0, 91, 0, 99, 0, 100,
481 0, 97, 0, 98, 0, 104, 0, 101, 0, 92,
482 0, 93, 0, 94, 0, 96, 0, 70, 0, 102,
483 0, 84, 0, 85, 0, 225, 0, 230, 0, 238,
484 0, 226, 227, 0, 8, 228, 31, 228, 8, 0,
485 227, 0, 227, 229, 0, 6, 0, 229, 6, 0,
486 0, 128, 233, 231, 34, 234, 35, 0, 0, 130,
487 233, 232, 34, 234, 35, 0, 128, 286, 0, 130,
488 286, 0, 0, 286, 0, 235, 0, 234, 235, 0,
489 227, 236, 7, 0, 240, 0, 236, 32, 240, 0,
490 0, 32, 0, 119, 233, 34, 239, 237, 35, 0,
491 119, 286, 0, 25, 0, 239, 32, 25, 0, 242,
492 0, 241, 0, 285, 0, 10, 241, 37, 0, 6,
493 241, 0, 241, 248, 0, 241, 10, 37, 0, 241,
494 10, 207, 37, 0, 20, 0, 10, 242, 37, 0,
495 6, 242, 0, 242, 248, 0, 242, 10, 37, 0,
496 242, 10, 207, 37, 0, 20, 0, 6, 243, 0,
497 243, 248, 0, 243, 10, 37, 0, 243, 10, 207,
498 37, 0, 227, 243, 0, 227, 241, 0, 227, 246,
499 0, 227, 246, 0, 66, 227, 246, 0, 249, 0,
500 0, 247, 0, 10, 247, 37, 0, 6, 247, 0,
501 6, 0, 248, 0, 247, 248, 0, 247, 10, 37,
502 0, 10, 207, 37, 0, 247, 10, 207, 37, 0,
503 11, 36, 0, 11, 188, 36, 0, 55, 27, 111,
504 27, 51, 27, 0, 252, 0, 27, 252, 0, 252,
505 27, 0, 27, 252, 27, 0, 250, 253, 251, 0,
506 27, 250, 253, 251, 0, 250, 253, 251, 27, 0,
507 27, 250, 253, 251, 27, 0, 11, 253, 36, 0,
508 11, 253, 36, 27, 0, 27, 11, 253, 36, 0,
509 27, 11, 253, 36, 27, 0, 12, 283, 0, 26,
510 283, 0, 27, 12, 283, 0, 27, 26, 283, 0,
511 22, 0, 34, 0, 23, 0, 35, 0, 264, 0,
512 14, 0, 39, 0, 0, 254, 0, 27, 0, 254,
513 255, 27, 0, 32, 0, 24, 0, 31, 257, 26,
514 288, 0, 0, 258, 0, 288, 0, 258, 32, 288,
515 0, 260, 0, 261, 0, 55, 261, 111, 261, 51,
516 261, 0, 262, 0, 261, 14, 261, 0, 263, 0,
517 278, 10, 259, 37, 0, 263, 39, 263, 0, 263,
518 33, 263, 0, 265, 0, 268, 266, 0, 268, 267,
519 0, 3, 0, 6, 0, 268, 0, 264, 265, 0,
520 264, 0, 266, 264, 0, 264, 268, 0, 267, 264,
521 268, 0, 273, 0, 269, 0, 269, 273, 0, 273,
522 269, 0, 273, 269, 273, 0, 270, 0, 270, 273,
523 0, 271, 31, 288, 0, 271, 0, 11, 272, 36,
524 31, 288, 0, 11, 272, 36, 0, 11, 36, 31,
525 288, 0, 11, 36, 0, 250, 272, 251, 0, 250,
526 251, 0, 260, 0, 272, 255, 260, 0, 10, 261,
527 37, 0, 285, 0, 290, 10, 274, 37, 0, 276,
528 0, 273, 275, 0, 273, 12, 283, 0, 273, 26,
529 283, 0, 273, 11, 36, 0, 273, 11, 274, 36,
530 0, 273, 31, 288, 0, 261, 0, 274, 32, 261,
531 0, 28, 0, 29, 0, 30, 0, 38, 0, 277,
532 0, 107, 0, 54, 10, 274, 37, 0, 114, 10,
533 44, 37, 0, 114, 10, 202, 37, 0, 108, 10,
534 260, 37, 0, 59, 10, 260, 32, 260, 37, 0,
535 108, 10, 227, 37, 0, 42, 0, 43, 0, 40,
536 0, 41, 0, 279, 0, 278, 279, 0, 0, 21,
537 280, 281, 0, 282, 0, 281, 32, 282, 0, 285,
538 31, 198, 0, 285, 31, 66, 198, 0, 25, 0,
539 20, 0, 25, 0, 25, 0, 283, 0, 283, 0,
540 283, 0, 283, 0, 283, 0
546 static const short yyrline[] = { 0,
547 380, 381, 384, 385, 388, 389, 392, 393, 394, 397,
548 398, 401, 402, 403, 406, 412, 416, 418, 420, 422,
549 424, 426, 430, 434, 435, 438, 440, 444, 445, 448,
550 449, 452, 454, 456, 458, 462, 466, 468, 470, 474,
551 475, 478, 479, 480, 483, 484, 491, 493, 504, 506,
552 509, 513, 513, 514, 515, 515, 517, 518, 519, 520,
553 521, 521, 522, 525, 526, 527, 528, 530, 546, 548,
554 552, 553, 555, 558, 559, 562, 566, 568, 572, 574,
555 576, 578, 582, 583, 586, 588, 590, 593, 595, 598,
556 600, 603, 604, 605, 609, 610, 612, 614, 617, 619,
557 623, 624, 627, 629, 633, 634, 635, 638, 639, 642,
558 646, 647, 650, 651, 654, 655, 657, 660, 661, 664,
559 665, 668, 669, 670, 671, 674, 675, 678, 679, 680,
560 681, 682, 685, 686, 689, 690, 693, 694, 697, 698,
561 699, 702, 703, 706, 707, 708, 711, 712, 715, 720,
562 726, 734, 736, 738, 740, 744, 745, 748, 749, 750,
563 751, 752, 753, 754, 756, 760, 761, 762, 763, 766,
564 767, 770, 771, 774, 774, 783, 784, 788, 789, 792,
565 793, 796, 797, 798, 799, 800, 801, 802, 803, 804,
566 805, 813, 814, 819, 821, 827, 828, 829, 830, 831,
567 832, 833, 834, 835, 836, 837, 838, 839, 840, 841,
568 842, 843, 844, 845, 846, 847, 848, 849, 850, 851,
569 852, 853, 854, 855, 856, 857, 858, 859, 860, 861,
570 862, 865, 867, 869, 871, 873, 882, 883, 888, 889,
571 892, 894, 896, 898, 900, 902, 906, 907, 910, 911,
572 916, 919, 921, 925, 926, 929, 931, 935, 936, 946,
573 947, 950, 951, 952, 953, 954, 955, 958, 959, 960,
574 961, 962, 963, 972, 973, 974, 975, 976, 982, 983,
575 984, 994, 995, 996, 1001, 1002, 1005, 1006, 1007, 1008,
576 1009, 1010, 1011, 1012, 1015, 1016, 1019, 1021, 1023, 1025,
577 1027, 1030, 1032, 1034, 1036, 1038, 1040, 1048, 1050, 1052,
578 1055, 1058, 1061, 1066, 1067, 1070, 1071, 1074, 1075, 1076,
579 1079, 1080, 1083, 1084, 1087, 1088, 1091, 1094, 1095, 1098,
580 1099, 1102, 1105, 1111, 1113, 1114, 1117, 1118, 1123, 1125,
581 1129, 1130, 1131, 1134, 1135, 1138, 1139, 1142, 1143, 1146,
582 1147, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1159, 1160,
583 1163, 1166, 1168, 1172, 1176, 1177, 1180, 1181, 1184, 1186,
584 1188, 1190, 1191, 1193, 1195, 1197, 1200, 1202, 1206, 1207,
585 1210, 1211, 1212, 1213, 1216, 1217, 1218, 1219, 1220, 1221,
586 1226, 1232, 1242, 1243, 1244, 1245, 1248, 1250, 1254, 1258,
587 1261, 1262, 1265, 1266, 1269, 1270, 1273, 1274, 1275, 1276,
593 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
595 static const char * const yytname[] = { "$","error","$undefined.","simpleOp",
596 "PREFIX_OP","POSTFIX_OP","LLT_MULOP","LLT_SEMI","LLT_VERTICALBAR","ITERATION_OP",
597 "LLT_LPAR","LLT_LBRACKET","selectSym","LLT_IF_THEN_ELSE","logicalOp","eqSepSym",
598 "equationSym","commentSym","LLT_WHITESPACE","LLT_EOL","LLT_TYPEDEF_NAME","quantifierSym",
599 "openSym","closeSym","sepSym","simpleId","mapSym","markerSym","preSym","postSym",
600 "anySym","LLT_COLON","LLT_COMMA","LLT_EQUALS","LLT_LBRACE","LLT_RBRACE","LLT_RBRACKET",
601 "LLT_RPAR","LLT_QUOTE","eqOp","LLT_CCHAR","LLT_CFLOAT","LLT_CINTEGER","LLT_LCSTRING",
602 "LLT_ALL","LLT_ANYTHING","LLT_BE","LLT_BODY","LLT_CLAIMS","LLT_CHECKS","LLT_CONSTANT",
603 "LLT_ELSE","LLT_ENSURES","LLT_FOR","LLT_FRESH","LLT_IF","LLT_IMMUTABLE","LLT_IMPORTS",
604 "LLT_CONSTRAINT","LLT_ISSUB","LLT_LET","LLT_MODIFIES","LLT_MUTABLE","LLT_NOTHING",
605 "LLT_INTERNAL","LLT_FILESYS","LLT_OBJ","LLT_OUT","LLT_SEF","LLT_ONLY","LLT_PARTIAL",
606 "LLT_OWNED","LLT_DEPENDENT","LLT_KEEP","LLT_KEPT","LLT_TEMP","LLT_SHARED","LLT_UNIQUE",
607 "LLT_UNUSED","LLT_EXITS","LLT_MAYEXIT","LLT_NEVEREXIT","LLT_TRUEEXIT","LLT_FALSEEXIT",
608 "LLT_UNDEF","LLT_KILLED","LLT_CHECKMOD","LLT_CHECKED","LLT_UNCHECKED","LLT_CHECKEDSTRICT",
609 "LLT_TRUENULL","LLT_FALSENULL","LLT_LNULL","LLT_LNOTNULL","LLT_RETURNED","LLT_OBSERVER",
610 "LLT_EXPOSED","LLT_REFCOUNTED","LLT_REFS","LLT_RELNULL","LLT_RELDEF","LLT_KILLREF",
611 "LLT_NULLTERMINATED","LLT_TEMPREF","LLT_NEWREF","LLT_PRIVATE","LLT_REQUIRES",
612 "LLT_RESULT","LLT_SIZEOF","LLT_SPEC","LLT_TAGGEDUNION","LLT_THEN","LLT_TYPE",
613 "LLT_TYPEDEF","LLT_UNCHANGED","LLT_USES","LLT_CHAR","LLT_CONST","LLT_DOUBLE",
614 "LLT_ENUM","LLT_FLOAT","LLT_INT","LLT_ITER","LLT_YIELD","LLT_LONG","LLT_SHORT",
615 "LLT_SIGNED","LLT_UNKNOWN","LLT_STRUCT","LLT_TELIPSIS","LLT_UNION","LLT_UNSIGNED",
616 "LLT_VOID","LLT_VOLATILE","LLT_PRINTFLIKE","LLT_SCANFLIKE","LLT_MESSAGELIKE",
617 "interface","@1","externals","external","optDeclarations","declarations","declaration",
618 "imports","uses","export","iter","iterParamList","realIterParamList","iterParam",
619 "private","@2","private2","constDeclaration","varDeclaration","type","special",
620 "fcn","@3","@4","claim","@5","abstract","@6","@7","@8","@9","@10","@11","@12",
621 "@13","exposed","@14","@15","importNameList","importName","interfaceNameList",
622 "interfaceName","traitRefNodeList","traitRef","traitIdList","renaming","nameList",
623 "replaceNodeList","replace","name","initializer","constLclExpr","initDecls",
624 "initDecl","globals","globalDecl","privateInits","privateInit","optLetDecl",
625 "beDeclList","beDecl","sortSpec","optChecks","optRequire","optModify","storeRefList",
626 "storeRef","optEnsure","optClaim","optParamList","realParamList","paramList",
627 "optBody","callExpr","stmt","valueList","value","abstBody","fcns","optTypeInv",
628 "typeInv","@16","declaratorInvs","declaratorInv","@17","optExposedBody","CType",
629 "CTypes","typeSpecifier","specialQualifier","lclTypeSpec","lclType","pointers",
630 "structOrUnionSpec","@18","@19","optTagId","structDecls","structDecl","declaratorList",
631 "optCOMMA","enumSpec","enumeratorList","declarator","notype_decl","after_type_decl",
632 "parameter_decl","param","typeName","optAbstDeclarator","abstDeclarator","arrayQual",
633 "opForm","open","close","anyOp","middle","placeList","separator","signature",
634 "domain","sortList","lclPredicate","term","term0","equalityTerm","simpleOpTerm",
635 "simpleOp2","prefixOpTerm","postfixOps","infixOpPart","secondary","bracketed",
636 "sqBracketed","matched","args","primary","termList","stateFcn","lclPrimary",
637 "cLiteral","quantifiers","quantifier","@20","quantifiedList","quantified","simpleIdOrTypedefName",
638 "fcnId","varId","tagId","claimId","sortId","traitId","opId", NULL
642 static const short yyr1[] = { 0,
643 138, 137, 139, 139, 140, 140, 141, 141, 141, 142,
644 142, 143, 143, 143, 144, 145, 146, 146, 146, 146,
645 146, 146, 147, 148, 148, 149, 149, 150, 150, 152,
646 151, 153, 153, 153, 153, 154, 155, 155, 155, 156,
647 156, 157, 157, 157, 159, 158, 160, 158, 162, 161,
648 161, 164, 165, 163, 166, 167, 163, 168, 169, 163,
649 170, 171, 163, 173, 174, 172, 172, 172, 175, 175,
650 176, 176, 176, 177, 177, 178, 179, 179, 180, 180,
651 180, 180, 181, 181, 182, 182, 182, 183, 183, 184,
652 184, 185, 185, 185, 186, 186, 187, 188, 189, 189,
653 190, 190, 191, 191, 192, 192, 192, 193, 193, 194,
654 195, 195, 196, 196, 197, 197, 198, 199, 199, 200,
655 200, 201, 201, 201, 201, 202, 202, 203, 203, 203,
656 203, 203, 204, 204, 205, 205, 206, 206, 207, 207,
657 207, 208, 208, 209, 209, 209, 210, 210, 210, 210,
658 210, 211, 211, 211, 211, 212, 212, 213, 213, 213,
659 213, 213, 213, 213, 213, 214, 214, 214, 214, 215,
660 215, 216, 216, 218, 217, 219, 219, 221, 220, 222,
661 222, 223, 223, 223, 223, 223, 223, 223, 223, 223,
662 223, 224, 224, 225, 225, 226, 226, 226, 226, 226,
663 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
664 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
665 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
666 226, 227, 227, 227, 227, 227, 228, 228, 229, 229,
667 231, 230, 232, 230, 230, 230, 233, 233, 234, 234,
668 235, 236, 236, 237, 237, 238, 238, 239, 239, 240,
669 240, 241, 241, 241, 241, 241, 241, 242, 242, 242,
670 242, 242, 242, 243, 243, 243, 243, 243, 244, 244,
671 244, 245, 245, 245, 246, 246, 247, 247, 247, 247,
672 247, 247, 247, 247, 248, 248, 249, 249, 249, 249,
673 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
674 249, 249, 249, 250, 250, 251, 251, 252, 252, 252,
675 253, 253, 254, 254, 255, 255, 256, 257, 257, 258,
676 258, 259, 260, 261, 261, 261, 262, 262, 262, 262,
677 263, 263, 263, 264, 264, 265, 265, 266, 266, 267,
678 267, 268, 268, 268, 268, 268, 268, 268, 269, 269,
679 270, 270, 270, 270, 271, 271, 272, 272, 273, 273,
680 273, 273, 273, 273, 273, 273, 273, 273, 274, 274,
681 275, 275, 275, 275, 276, 276, 276, 276, 276, 276,
682 276, 276, 277, 277, 277, 277, 278, 278, 280, 279,
683 281, 281, 282, 282, 283, 283, 284, 285, 286, 287,
687 static const short yyr2[] = { 0,
688 0, 3, 0, 2, 1, 1, 0, 2, 2, 0,
689 2, 1, 1, 1, 3, 3, 1, 1, 1, 1,
690 1, 1, 6, 0, 1, 1, 3, 2, 1, 0,
691 3, 1, 1, 1, 1, 4, 3, 4, 4, 1,
692 1, 1, 1, 1, 0, 13, 0, 14, 0, 13,
693 4, 0, 0, 6, 0, 0, 7, 0, 0, 7,
694 0, 0, 6, 0, 0, 6, 2, 2, 1, 3,
695 1, 3, 1, 1, 3, 1, 1, 3, 1, 4,
696 3, 6, 1, 3, 1, 1, 3, 1, 3, 1,
697 3, 3, 3, 4, 1, 1, 1, 1, 1, 3,
698 1, 3, 0, 2, 3, 2, 2, 0, 2, 4,
699 0, 3, 1, 3, 5, 3, 1, 0, 3, 0,
700 3, 0, 3, 3, 3, 1, 3, 1, 1, 2,
701 1, 1, 0, 3, 0, 3, 0, 1, 1, 1,
702 3, 1, 3, 0, 4, 5, 1, 3, 2, 3,
703 3, 4, 3, 5, 6, 1, 3, 1, 1, 2,
704 2, 3, 3, 3, 4, 1, 3, 4, 3, 0,
705 2, 0, 1, 0, 6, 1, 3, 0, 3, 0,
706 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
707 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
708 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
709 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
710 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
711 1, 1, 1, 1, 2, 5, 1, 2, 1, 2,
712 0, 6, 0, 6, 2, 2, 0, 1, 1, 2,
713 3, 1, 3, 0, 1, 6, 2, 1, 3, 1,
714 1, 1, 3, 2, 2, 3, 4, 1, 3, 2,
715 2, 3, 4, 1, 2, 2, 3, 4, 2, 2,
716 2, 2, 3, 1, 0, 1, 3, 2, 1, 1,
717 2, 3, 3, 4, 2, 3, 6, 1, 2, 2,
718 3, 3, 4, 4, 5, 3, 4, 4, 5, 2,
719 2, 3, 3, 1, 1, 1, 1, 1, 1, 1,
720 0, 1, 1, 3, 1, 1, 4, 0, 1, 1,
721 3, 1, 1, 6, 1, 3, 1, 4, 3, 3,
722 1, 2, 2, 1, 1, 1, 2, 1, 2, 2,
723 3, 1, 1, 2, 2, 3, 1, 2, 3, 1,
724 5, 3, 4, 2, 3, 2, 1, 3, 3, 1,
725 4, 1, 2, 3, 3, 3, 4, 3, 1, 3,
726 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
727 6, 4, 1, 1, 1, 1, 1, 2, 0, 3,
728 1, 3, 3, 4, 1, 1, 1, 1, 1, 1,
732 static const short yydefact[] = { 3,
733 1, 0, 0, 7, 4, 5, 6, 0, 406, 405,
734 73, 0, 69, 71, 76, 0, 0, 77, 412, 79,
735 0, 194, 0, 0, 61, 52, 196, 198, 199, 228,
736 200, 201, 202, 203, 210, 211, 212, 197, 205, 206,
737 209, 207, 208, 230, 231, 213, 214, 215, 216, 217,
738 224, 225, 226, 204, 227, 220, 221, 218, 219, 223,
739 229, 222, 30, 0, 183, 0, 184, 247, 185, 186,
740 0, 187, 188, 189, 191, 247, 247, 190, 182, 0,
741 42, 43, 44, 2, 10, 22, 10, 17, 18, 19,
742 0, 20, 21, 40, 41, 192, 195, 232, 0, 0,
743 233, 234, 0, 15, 0, 0, 83, 16, 0, 0,
744 220, 237, 0, 233, 234, 407, 410, 0, 0, 0,
745 0, 0, 0, 58, 0, 64, 0, 0, 409, 257,
746 408, 0, 241, 245, 243, 246, 0, 8, 9, 0,
747 193, 235, 0, 0, 268, 0, 99, 103, 261, 260,
748 262, 67, 68, 72, 70, 0, 81, 78, 344, 345,
749 321, 0, 319, 314, 0, 0, 315, 320, 0, 0,
750 0, 86, 85, 90, 285, 88, 284, 321, 298, 318,
751 239, 238, 0, 0, 137, 0, 101, 0, 0, 0,
752 0, 31, 32, 33, 34, 35, 0, 0, 0, 24,
753 0, 0, 0, 11, 14, 12, 13, 103, 264, 270,
754 0, 0, 37, 0, 0, 45, 0, 0, 265, 0,
755 271, 84, 0, 323, 0, 322, 310, 311, 321, 0,
756 0, 321, 299, 0, 285, 80, 0, 0, 289, 0,
757 282, 286, 290, 0, 0, 300, 240, 0, 51, 140,
758 0, 138, 139, 285, 142, 36, 62, 53, 0, 0,
759 65, 176, 178, 38, 258, 254, 0, 0, 25, 26,
760 29, 0, 0, 39, 47, 263, 269, 100, 0, 0,
761 399, 408, 395, 396, 393, 394, 0, 0, 0, 386,
762 0, 0, 102, 97, 0, 98, 333, 335, 337, 0,
763 341, 346, 353, 357, 360, 352, 372, 385, 0, 397,
764 413, 370, 0, 0, 0, 0, 104, 0, 266, 0,
765 295, 0, 272, 0, 0, 306, 326, 325, 0, 0,
766 312, 313, 0, 301, 0, 283, 87, 89, 91, 0,
767 288, 0, 0, 0, 291, 93, 92, 96, 95, 316,
768 317, 302, 236, 103, 0, 289, 0, 274, 280, 279,
769 281, 0, 0, 56, 59, 0, 0, 180, 255, 0,
770 28, 0, 0, 0, 0, 249, 0, 0, 0, 364,
771 367, 0, 0, 0, 0, 0, 0, 0, 366, 0,
772 0, 0, 0, 347, 346, 348, 342, 343, 354, 358,
773 0, 0, 0, 0, 381, 382, 383, 0, 384, 355,
774 373, 0, 398, 0, 106, 107, 108, 0, 267, 296,
775 273, 82, 307, 324, 308, 303, 0, 293, 287, 292,
776 0, 328, 94, 304, 49, 141, 143, 275, 289, 0,
777 276, 166, 170, 63, 54, 0, 0, 177, 66, 172,
778 179, 259, 256, 23, 27, 0, 252, 242, 250, 244,
779 108, 369, 0, 362, 0, 400, 401, 0, 379, 0,
780 0, 0, 194, 0, 0, 0, 131, 132, 0, 0,
781 126, 129, 128, 365, 336, 340, 339, 350, 349, 0,
782 411, 359, 376, 0, 374, 375, 378, 356, 0, 332,
783 0, 111, 105, 309, 305, 0, 294, 0, 329, 330,
784 0, 277, 0, 0, 0, 74, 0, 57, 60, 174,
785 0, 173, 251, 0, 111, 363, 0, 368, 0, 0,
786 0, 387, 0, 0, 392, 390, 388, 130, 0, 389,
787 351, 377, 338, 371, 0, 0, 109, 118, 297, 0,
788 0, 111, 278, 169, 0, 0, 167, 171, 0, 0,
789 181, 253, 118, 361, 402, 0, 403, 117, 380, 0,
790 0, 127, 0, 113, 0, 0, 0, 120, 327, 331,
791 120, 75, 168, 103, 0, 120, 404, 334, 391, 112,
792 0, 0, 0, 0, 0, 0, 122, 144, 0, 122,
793 114, 0, 116, 110, 119, 0, 0, 133, 0, 133,
794 0, 133, 0, 121, 0, 0, 0, 0, 135, 0,
795 0, 175, 135, 115, 124, 123, 125, 0, 0, 0,
796 0, 408, 0, 147, 0, 0, 50, 0, 134, 0,
797 46, 0, 149, 0, 0, 145, 0, 0, 48, 136,
798 0, 148, 146, 151, 150, 0, 0, 153, 0, 156,
799 158, 0, 159, 407, 0, 160, 0, 0, 152, 161,
800 0, 0, 163, 157, 162, 164, 0, 154, 0, 165,
804 static const short yydefgoto[] = { 682,
805 4, 1, 5, 84, 138, 204, 6, 205, 206, 86,
806 268, 269, 270, 207, 125, 192, 88, 89, 90, 91,
807 92, 316, 378, 93, 511, 94, 122, 363, 123, 446,
808 191, 447, 121, 362, 95, 197, 367, 12, 13, 515,
809 14, 17, 18, 106, 171, 172, 173, 174, 346, 293,
810 294, 146, 147, 216, 317, 502, 547, 548, 573, 574,
811 567, 578, 597, 608, 480, 481, 619, 630, 251, 342,
812 253, 610, 654, 634, 659, 660, 444, 517, 521, 522,
813 560, 261, 262, 368, 451, 96, 97, 98, 99, 254,
814 482, 182, 114, 201, 202, 128, 375, 376, 456, 370,
815 115, 266, 187, 149, 150, 360, 255, 176, 241, 242,
816 243, 177, 295, 352, 179, 225, 226, 465, 433, 508,
817 509, 499, 500, 297, 298, 299, 300, 301, 397, 398,
818 302, 303, 304, 305, 382, 306, 470, 411, 307, 308,
819 309, 310, 383, 466, 467, 311, 662, 312, 130, 119,
823 static const short yypact[] = {-32768,
824 -25, 136, 368, 1350,-32768,-32768,-32768, 181,-32768,-32768,
825 -32768, 94,-32768,-32768,-32768, 181, 110,-32768,-32768, 33,
826 2903,-32768, 182, 2903,-32768, 17,-32768,-32768,-32768,-32768,
827 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
828 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
829 -32768,-32768,-32768,-32768,-32768, -11,-32768,-32768,-32768,-32768,
830 -32768,-32768,-32768, 2903,-32768, 2903,-32768, 181,-32768,-32768,
831 108,-32768,-32768,-32768,-32768, 181, 181,-32768,-32768, 2903,
832 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
833 2903,-32768,-32768,-32768,-32768,-32768, 399,-32768, 2903, 408,
834 155, 192, 205,-32768, 136, 204,-32768,-32768, 368, 1152,
835 -32768, 233, 223,-32768,-32768, 266,-32768, 181, 305, 408,
836 211, 235, 264,-32768, 1445,-32768, 408, 339,-32768, 347,
837 -32768, 377,-32768, 347,-32768, 347, 408, 1247, 1247, 408,
838 -32768,-32768, 408, 408,-32768, 196,-32768, 259, 322, 409,
839 -32768,-32768,-32768,-32768,-32768, 181, 387,-32768,-32768,-32768,
840 386, 181,-32768,-32768, 181, 534,-32768,-32768, 403, 2903,
841 410, 445, 453,-32768, 360, 439,-32768, 386, 474,-32768,
842 -32768, 496, 2903, 497, 2319, 239, 470, 486, 492, 401,
843 404,-32768,-32768,-32768,-32768,-32768, 408, 282, 493, 2414,
844 488, 494, 288,-32768,-32768,-32768,-32768,-32768, 322, 409,
845 121, 141,-32768, 408, 3200, 1836, 1933, 3059,-32768, 2030,
846 -32768,-32768, 1152,-32768, 499, 122,-32768,-32768, 386, 181,
847 181, 386, 502, 421, 360,-32768, 1152, 1152, 360, 1741,
848 -32768, 454,-32768, 328, 80,-32768,-32768, 525,-32768,-32768,
849 504,-32768, 507, 380,-32768,-32768,-32768,-32768, 522, 524,
850 515,-32768,-32768,-32768,-32768, 518, 2903, 514, 520,-32768,
851 -32768, 2903, 2903,-32768, 1836,-32768,-32768,-32768, 3200, 3109,
852 -32768, 266,-32768,-32768,-32768,-32768, 544, 3200, 545,-32768,
853 549, 551,-32768,-32768, 3033,-32768, 550,-32768, 114, 3226,
854 -32768, 374, 382, 382, 535, 193,-32768,-32768, 273,-32768,
855 -32768,-32768, 555, 560, 562, 536,-32768, 408,-32768, 537,
856 -32768, 539,-32768, 540, 541, 552,-32768,-32768, 553, 547,
857 -32768,-32768, 80,-32768, 554,-32768, 453, 439,-32768, 439,
858 454, 548, 177, 2127,-32768, 556,-32768,-32768,-32768,-32768,
859 -32768, 557,-32768,-32768, 2509, 380, 1644,-32768, 322, 469,
860 -32768, 47, 47,-32768,-32768, 408, 564, 538, 561, 559,
861 -32768, 569, 2414, 408, 2611,-32768, 2713, 558, 36, 565,
862 -32768, 293, 108, 3200, 10, 3200, 1022, 762,-32768, 220,
863 3200, 3226, 3226,-32768,-32768, 268, 374, 374, 275, 275,
864 181, 3150, 181, 181,-32768,-32768,-32768, 181,-32768, 382,
865 -32768, 3200,-32768, 3200,-32768,-32768,-32768, 314,-32768,-32768,
866 -32768,-32768,-32768,-32768, 563, 568, 566,-32768,-32768,-32768,
867 573, 181,-32768,-32768, 1836,-32768,-32768, 469, 354, 2224,
868 -32768,-32768, 165,-32768,-32768, 47, 47,-32768,-32768, 530,
869 -32768,-32768,-32768,-32768,-32768, 317,-32768,-32768,-32768,-32768,
870 -32768,-32768, 181, 567, 3200, 570,-32768, 572, 550, 362,
871 3200, 579, 581, 575, 577, 578,-32768,-32768, 2903, 384,
872 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 268,
873 -32768,-32768,-32768, 157,-32768,-32768,-32768, 275, 583,-32768,
874 397, -8,-32768,-32768,-32768, 574,-32768, 590, 591,-32768,
875 571,-32768, 587, 592, 363,-32768, 1547,-32768,-32768,-32768,
876 594,-32768,-32768, 408, -8,-32768, 181,-32768, 108, 2808,
877 3200,-32768, 28, 3200,-32768,-32768,-32768,-32768, 892,-32768,
878 -32768,-32768,-32768,-32768, 108, 2903,-32768, 582,-32768, 181,
879 181, 576,-32768,-32768, 181, 593,-32768,-32768, 408, 605,
880 -32768,-32768, 582,-32768,-32768, 2903,-32768,-32768, 550, 3200,
881 600,-32768, 331,-32768, 103, 408, 3200, 521,-32768,-32768,
882 521,-32768,-32768,-32768, 629, 521,-32768, 550,-32768,-32768,
883 108, 2903, 3200, 336, 634, 3200, 584, 597, 3200, 584,
884 -32768, 601,-32768,-32768,-32768, 639, 632, 596, 615, 596,
885 613, 596, 3200,-32768, 644, 648, 337, 3200, 608, 49,
886 623,-32768, 608,-32768,-32768,-32768,-32768, 652, 3200, 625,
887 49, 651, 50,-32768, 653, 631,-32768, 627,-32768, 658,
888 -32768, 63,-32768, 272, 49,-32768, 208, 642,-32768,-32768,
889 49,-32768,-32768, 660,-32768, 222, 222,-32768, 419, 666,
890 -32768, 661,-32768,-32768, 668,-32768, 41, 222,-32768, 316,
891 432, 468,-32768, 666,-32768,-32768, 426,-32768, 430,-32768,
892 -32768, 670, 676,-32768
895 static const short yypgoto[] = {-32768,
896 -32768,-32768,-32768,-32768, 595,-32768,-32768, 678, 677,-32768,
897 -32768,-32768, 307, 679,-32768,-32768, 610, 612, 616,-32768,
898 -121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
899 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 580,-32768,
900 -6,-32768, 585,-32768, 461,-32768, 451, 452,-32768,-32768,
901 471, -108, 478, -188,-32768, 232,-32768, -458,-32768, 127,
902 -473, 175, -169, 142, 137, 206, -206, 120,-32768, -180,
903 -32768,-32768, -507,-32768, -190, -230, -318,-32768,-32768,-32768,
904 -32768,-32768, 381,-32768,-32768, -89,-32768,-32768,-32768, -3,
905 -18,-32768, 32,-32768,-32768, 407, 476, 68,-32768,-32768,
906 56,-32768, -93, -127, 344, 398, -187, 257, -182, -213,
907 -101, 511, 30, -267, 603, -137,-32768, 586,-32768,-32768,
908 -32768, -531, -204, -254,-32768, 105, -46, 466,-32768,-32768,
909 -278, 455,-32768,-32768, 472, -265, -205,-32768,-32768, -372,
910 -32768, -303,-32768,-32768, 242, 7, -23, -38, 423, 656,
918 static const short yytable[] = { 118,
919 100, 103, 113, 196, 252, 413, 148, 141, 15, 19,
920 296, 186, 271, 296, 15, 209, 211, 112, 198, 275,
921 120, 395, 19, 391, 379, 341, 343, 389, 203, 117,
922 497, 2, 132, 385, 107, 101, 320, 399, 400, 324,
923 245, 391, 110, 670, 445, 595, 208, 219, 221, 391,
924 124, 545, 336, 442, 510, 643, 644, 645, 631, 102,
925 126, 151, 127, 180, 606, 426, 563, 611, 643, 651,
926 645, 361, 462, 632, 129, 381, 137, 673, 570, 371,
927 443, 151, 129, 129, 646, 526, 628, 140, 151, 3,
928 381, 330, 587, 581, 333, 142, 546, 640, 151, 652,
929 104, 151, 350, 263, 151, 151, 175, 219, 221, 219,
930 221, 15, 633, -55, 351, 19, 108, 488, 602, 180,
931 471, 100, 484, 642, 117, 105, 359, 518, 519, 469,
932 217, 218, 131, 592, 100, 100, 485, 655, 8, 178,
933 345, 109, 341, 343, 498, 327, 392, 469, 593, 564,
934 220, 218, 393, 328, 347, 9, 101, 276, 151, 469,
935 10, 152, 19, 431, 248, 435, 235, 437, 227, 101,
936 101, 228, 579, 580, 222, 151, 180, 277, 11, 112,
937 102, 472, 475, 483, 9, 271, 344, 218, 531, 10,
938 180, 180, 542, 102, 102, 232, 494, 180, 153, 514,
939 9, 9, 213, 402, 403, 10, 116, 154, 501, 418,
940 656, 541, 318, 429, 164, 151, 533, 657, 404, 175,
941 405, 406, 407, 408, 656, 341, 167, 214, 209, 211,
942 409, 657, 632, 175, 175, 156, 331, 332, 181, 345,
943 157, 345, 350, 327, 658, 256, 632, 283, 284, 285,
944 286, 328, 178, 183, 351, 396, 585, 219, 441, 513,
945 528, 283, 284, 285, 286, -101, 178, 178, 374, 374,
946 214, 318, 263, 178, 661, -405, 569, 279, 280, 151,
947 457, 631, 412, 661, 661, 402, 403, 9, 264, 164,
948 -101, 215, 282, 281, 274, 661, 632, 661, 661, 661,
949 404, 167, 405, 406, 407, 408, 653, 283, 284, 285,
950 286, 209, 409, 214, 185, 588, 327, 151, 151, 214,
951 503, 287, 188, 523, 328, 657, 289, 151, 464, 571,
952 159, 217, 218, 160, 483, 151, 441, 590, 161, 162,
953 632, 163, 604, 627, 468, 214, 189, 9, 524, 164,
954 489, 490, 10, 165, 166, 283, 284, 285, 286, 439,
955 190, 167, 591, 357, 218, 239, 168, 214, 539, 240,
956 218, 374, 199, 374, 290, 291, 159, 16, 131, 160,
957 -248, 292, 169, 474, 112, 356, 200, 9, 603, 357,
958 218, 279, 10, 531, 555, 558, 223, 556, 532, 358,
959 151, 9, 483, 621, 131, 623, 282, 491, 624, 495,
960 496, 598, 224, 143, 491, 539, 600, 144, 220, 218,
961 540, 283, 284, 285, 286, 666, 667, 145, 531, 234,
962 562, 318, 131, 544, 656, 287, 516, 674, 491, 675,
963 289, 657, 459, 65, 459, 67, 236, 69, 70, 15,
964 668, 72, 73, 74, 75, 669, 632, 668, 78, 79,
965 538, 668, 680, 344, 218, 584, 681, 594, 676, 491,
966 656, 283, 284, 285, 286, 112, 237, 657, 440, 218,
967 677, 679, 133, 135, 238, 151, 210, 212, 290, 291,
968 468, 244, 632, 338, 340, 292, 486, 487, 134, 136,
969 246, 247, 215, 249, 678, 257, 575, 283, 284, 285,
970 286, 258, 259, 559, 65, 260, 67, 265, 69, 70,
971 151, 272, 72, 73, 74, 75, 568, 273, 334, 78,
972 79, 335, 353, 491, 326, 112, 159, 151, 355, 160,
973 354, 364, 576, 365, 229, 230, 366, 163, 582, 369,
974 372, 373, 575, 384, 386, 164, 491, 491, 387, 231,
975 388, 15, 568, 391, 414, 401, 415, 167, 416, 417,
976 449, 450, 168, 419, 420, 454, 421, 422, 423, 424,
977 427, 636, 425, 434, 428, 452, 432, 520, 568, 504,
978 -406, 461, 636, 453, 505, 463, 635, 527, 554, 583,
979 549, 529, 530, 112, 552, 636, 636, 635, 663, 507,
980 534, 535, 636, 536, 537, 550, 506, 663, 663, 543,
981 635, 635, 551, 553, 665, 281, 596, 635, 561, 663,
982 577, 663, 663, 663, 159, 545, 589, 160, 599, 21,
983 605, 279, 280, 609, 607, 614, 613, 618, 620, 622,
984 625, 473, 281, 164, 626, 629, 282, 637, 639, 641,
985 -407, 649, 647, 648, 650, 167, 664, 645, 670, 683,
986 671, 283, 284, 285, 286, 684, 615, 672, 7, 455,
987 85, 139, 87, 325, 155, 287, 288, 337, 322, 339,
988 289, 278, 525, 158, 616, 477, 478, 479, 27, 28,
989 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
990 39, 40, 41, 42, 43, 44, 45, 601, 46, 47,
991 48, 49, 50, 51, 52, 53, 54, 55, 111, 57,
992 58, 59, 60, 61, 193, 62, 194, 586, 290, 291,
993 195, 612, 638, 617, 572, 292, 448, 65, 377, 67,
994 68, 69, 70, 438, 348, 72, 73, 74, 75, 76,
995 410, 77, 78, 79, 159, 394, 390, 160, 233, 21,
996 565, 279, 280, 184, 349, 0, 0, 0, 0, 0,
997 0, 473, 281, 164, 0, 0, 282, 0, 0, 0,
998 0, 0, 0, 0, 0, 167, 0, 0, 0, 0,
999 0, 283, 284, 285, 286, 476, 0, 0, 0, 0,
1000 0, 329, 0, 0, 0, 287, 288, 0, 0, 0,
1001 289, 0, 0, 0, 0, 477, 478, 479, 27, 28,
1002 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1003 39, 40, 41, 42, 43, 44, 45, 0, 46, 47,
1004 48, 49, 50, 51, 52, 53, 54, 55, 111, 57,
1005 58, 59, 60, 61, 0, 62, 0, 0, 290, 291,
1006 0, 0, 0, 0, 0, 292, 0, 65, 0, 67,
1007 68, 69, 70, 0, 0, 72, 73, 74, 75, 76,
1008 0, 77, 78, 79, 159, 0, 0, 160, 0, 21,
1009 0, 279, 280, 0, 0, 0, 0, 0, 0, 0,
1010 0, 473, 281, 164, 0, 0, 282, 0, 0, 0,
1011 0, 0, 0, 0, 0, 167, 0, 0, 0, 0,
1012 0, 283, 284, 285, 286, 0, 0, 0, 0, 0,
1013 0, 0, 0, 0, 0, 287, 288, 0, 0, 0,
1014 289, 0, 0, 0, 0, 477, 478, 479, 27, 28,
1015 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1016 39, 40, 41, 42, 43, 44, 45, 0, 46, 47,
1017 48, 49, 50, 51, 52, 53, 54, 55, 111, 57,
1018 58, 59, 60, 61, 0, 62, 0, 0, 290, 291,
1019 0, 0, 0, 0, 0, 292, 0, 65, 0, 67,
1020 68, 69, 70, 0, 0, 72, 73, 74, 75, 76,
1021 0, 77, 78, 79, 159, 0, 0, 160, 0, 21,
1022 0, 279, 280, 0, 0, 0, 0, 0, 0, 0,
1023 0, 473, 281, 164, 0, 0, 282, 0, 0, 0,
1024 0, 0, 0, 0, 0, 167, 0, 0, 0, 0,
1025 0, 283, 284, 285, 286, 0, 0, 0, 0, 0,
1026 0, 0, 0, 0, 0, 287, 288, 0, 0, 0,
1027 289, 0, 0, 0, 0, 0, 0, 0, 27, 28,
1028 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1029 39, 40, 41, 42, 43, 44, 45, 0, 46, 47,
1030 48, 49, 50, 51, 52, 53, 54, 55, 111, 57,
1031 58, 59, 60, 61, 0, 62, 0, 0, 290, 291,
1032 0, 0, 0, 0, 0, 292, 0, 65, 0, 67,
1033 68, 69, 70, 0, 0, 72, 73, 74, 75, 76,
1034 0, 77, 78, 79, 159, 0, 0, 160, 0, 21,
1035 0, 0, 161, 162, 0, 163, 0, 0, 0, 0,
1036 0, 22, 0, 164, 0, 0, 0, 165, 166, 0,
1037 0, 0, 0, 0, 0, 167, 0, 0, 0, 0,
1038 168, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1039 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
1040 0, 0, 0, 0, 0, 0, 0, 170, 27, 28,
1041 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
1042 39, 40, 41, 42, 43, 44, 45, 0, 46, 47,
1043 48, 49, 50, 51, 52, 53, 54, 55, 111, 57,
1044 58, 59, 60, 61, 21, 62, 0, 0, 0, 0,
1045 0, 0, 0, 0, 0, 0, 22, 65, 0, 67,
1046 68, 69, 70, 0, 0, 72, 73, 74, 75, 76,
1047 0, 77, 78, 79, 0, 0, 0, 0, 0, 0,
1048 0, 0, 0, 0, 23, 0, 24, 0, 0, 0,
1049 0, 0, 25, 0, 0, 0, 0, 0, 26, 0,
1050 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
1051 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1052 44, 45, 0, 46, 47, 48, 49, 50, 51, 52,
1053 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
1054 62, 0, 0, 0, 0, 63, 0, 21, 0, 64,
1055 0, 3, 65, 66, 67, 68, 69, 70, 71, 22,
1056 72, 73, 74, 75, 76, 0, 77, 78, 79, 80,
1057 81, 82, 83, 0, 0, 0, 0, 0, 0, 0,
1058 0, 0, 0, 0, 0, 0, 0, 23, 0, 24,
1059 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
1060 0, 26, 0, 0, 0, 0, 27, 28, 29, 30,
1061 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1062 41, 42, 43, 44, 45, 0, 46, 47, 48, 49,
1063 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1064 60, 61, 21, 62, 0, 0, 0, 0, 63, 0,
1065 0, 0, 64, 0, 22, 65, 66, 67, 68, 69,
1066 70, 71, 0, 72, 73, 74, 75, 76, 0, 77,
1067 78, 79, 80, 81, 82, 83, 0, 0, 0, 0,
1068 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,
1069 25, 0, 0, 0, 0, 0, 26, 0, 0, 0,
1070 0, 27, 28, 29, 30, 31, 32, 33, 34, 35,
1071 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
1072 0, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1073 55, 56, 57, 58, 59, 60, 61, 0, 62, 0,
1074 0, 0, 0, 0, 21, 0, 0, 64, 0, 0,
1075 65, 66, 67, 68, 69, 70, 22, 0, 72, 73,
1076 74, 75, 76, 0, 77, 78, 79, 80, 81, 82,
1077 83, 557, 0, 0, 0, 0, 0, 0, 0, 0,
1078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
1081 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1082 44, 45, 0, 46, 47, 48, 49, 50, 51, 52,
1083 53, 54, 55, 111, 57, 58, 59, 60, 61, 439,
1084 62, 21, 0, 357, 218, 0, 0, 0, 0, 0,
1085 0, 0, 65, 22, 67, 68, 69, 70, 131, 0,
1086 72, 73, 74, 75, 76, 0, 77, 78, 79, 0,
1087 81, 82, 83, 0, 0, 0, 0, 0, 0, 0,
1088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1090 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1091 37, 38, 39, 40, 41, 42, 43, 44, 45, 0,
1092 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1093 111, 57, 58, 59, 60, 61, 239, 62, 21, 0,
1094 240, 218, 0, 0, 0, 0, 0, 0, 0, 65,
1095 22, 67, 68, 69, 70, 0, 0, 72, 73, 74,
1096 75, 76, 250, 77, 78, 79, 0, 0, 0, 0,
1097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 0, 0, 0, 0, 0, 0, 27, 28, 29,
1100 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1101 40, 41, 42, 43, 44, 45, 0, 46, 47, 48,
1102 49, 50, 51, 52, 53, 54, 55, 111, 57, 58,
1103 59, 60, 61, 21, 62, 0, 0, 0, 0, 0,
1104 0, 0, 0, 0, 0, 22, 65, 0, 67, 68,
1105 69, 70, 0, 0, 72, 73, 74, 75, 76, 250,
1106 77, 78, 79, 0, 0, 0, 0, 0, 0, 0,
1107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1108 0, 0, 0, 0, 0, 0, 0, 0, 0, 314,
1109 315, 0, 27, 28, 29, 30, 31, 32, 33, 34,
1110 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1111 45, 0, 46, 47, 48, 49, 50, 51, 52, 53,
1112 54, 55, 111, 57, 58, 59, 60, 61, 0, 62,
1113 21, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1114 0, 65, 22, 67, 68, 69, 70, 0, 0, 72,
1115 73, 74, 75, 76, 0, 77, 78, 79, 0, 319,
1116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,
1119 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
1120 38, 39, 40, 41, 42, 43, 44, 45, 0, 46,
1121 47, 48, 49, 50, 51, 52, 53, 54, 55, 111,
1122 57, 58, 59, 60, 61, 0, 62, 21, 0, 0,
1123 0, 0, 0, 0, 0, 0, 0, 0, 65, 22,
1124 67, 68, 69, 70, 0, 0, 72, 73, 74, 75,
1125 76, 250, 77, 78, 79, 0, 323, 0, 0, 0,
1126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1128 0, 0, 0, 0, 0, 0, 27, 28, 29, 30,
1129 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1130 41, 42, 43, 44, 45, 0, 46, 47, 48, 49,
1131 50, 51, 52, 53, 54, 55, 111, 57, 58, 59,
1132 60, 61, 0, 62, 21, 0, 0, 0, 0, 0,
1133 0, 0, 0, 0, 0, 65, 22, 67, 68, 69,
1134 70, 0, 0, 72, 73, 74, 75, 76, 250, 77,
1135 78, 79, 0, 430, 0, 0, 0, 0, 0, 0,
1136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1138 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
1139 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1140 44, 45, 0, 46, 47, 48, 49, 50, 51, 52,
1141 53, 54, 55, 111, 57, 58, 59, 60, 61, 0,
1142 62, 21, 0, 0, 0, 0, 0, 0, 0, 0,
1143 0, 0, 65, 22, 67, 68, 69, 70, 0, 0,
1144 72, 73, 74, 75, 76, 250, 77, 78, 79, 0,
1145 512, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1148 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1149 37, 38, 39, 40, 41, 42, 43, 44, 45, 0,
1150 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1151 111, 57, 58, 59, 60, 61, 21, 62, 0, 0,
1152 0, 0, 0, 0, 0, 0, 0, 0, 22, 65,
1153 0, 67, 68, 69, 70, 0, 0, 72, 73, 74,
1154 75, 76, 250, 77, 78, 79, 0, 0, 0, 0,
1155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1157 0, 0, 0, 0, 0, 27, 28, 29, 30, 31,
1158 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1159 42, 43, 44, 45, 0, 46, 47, 48, 49, 50,
1160 51, 52, 53, 54, 55, 111, 57, 58, 59, 60,
1161 61, 21, 62, 0, 0, 0, 0, 0, 0, 0,
1162 0, 0, 0, 22, 65, 0, 67, 68, 69, 70,
1163 0, 0, 72, 73, 74, 75, 76, 250, 77, 78,
1164 79, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1167 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
1168 37, 38, 39, 40, 41, 42, 43, 44, 45, 0,
1169 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
1170 111, 57, 58, 59, 60, 61, 21, 62, 0, 0,
1171 0, 0, 0, 0, 0, 0, 0, 0, 22, 65,
1172 0, 67, 68, 69, 70, 0, 267, 72, 73, 74,
1173 75, 76, 0, 77, 78, 79, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1176 0, 0, 0, 0, 0, 27, 28, 29, 30, 31,
1177 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1178 42, 43, 44, 45, 0, 46, 47, 48, 49, 50,
1179 51, 52, 53, 54, 55, 111, 57, 58, 59, 60,
1180 61, 0, 62, 0, 0, 0, 0, 0, 21, 0,
1181 0, 0, 0, 0, 65, 0, 67, 68, 69, 70,
1182 22, 0, 72, 73, 74, 75, 76, 436, 77, 78,
1183 79, 0, 0, 0, 0, 458, 0, 0, 0, 0,
1184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186 0, 0, 0, 0, 0, 0, 0, 27, 28, 29,
1187 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1188 40, 41, 42, 43, 44, 45, 0, 46, 47, 48,
1189 49, 50, 51, 52, 53, 54, 55, 111, 57, 58,
1190 59, 60, 61, 0, 62, 0, 0, 0, 0, 0,
1191 21, 0, 0, 0, 0, 0, 65, 0, 67, 68,
1192 69, 70, 22, 0, 72, 73, 74, 75, 76, 0,
1193 77, 78, 79, 0, 0, 0, 0, 460, 0, 0,
1194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1196 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,
1197 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
1198 38, 39, 40, 41, 42, 43, 44, 45, 0, 46,
1199 47, 48, 49, 50, 51, 52, 53, 54, 55, 111,
1200 57, 58, 59, 60, 61, 21, 62, 0, 0, 0,
1201 0, 0, 0, 0, 0, 0, 0, 22, 65, 0,
1202 67, 68, 69, 70, 0, 0, 72, 73, 74, 75,
1203 76, 0, 77, 78, 79, 0, 0, 0, 0, 0,
1204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1206 0, 0, 0, 566, 27, 28, 29, 30, 31, 32,
1207 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1208 43, 44, 45, 0, 46, 47, 48, 49, 50, 51,
1209 52, 53, 54, 55, 111, 57, 58, 59, 60, 61,
1210 21, 62, 0, 0, 0, 0, 0, 0, 0, 0,
1211 0, 0, 22, 65, 0, 67, 68, 69, 70, 0,
1212 0, 72, 73, 74, 75, 76, 0, 77, 78, 79,
1213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1215 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,
1216 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
1217 38, 39, 40, 41, 42, 43, 44, 45, 0, 46,
1218 47, 48, 49, 50, 51, 52, 53, 54, 55, 111,
1219 57, 58, 59, 60, 61, 0, 62, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0, 65, 0,
1221 67, 68, 69, 70, 0, 0, 72, 73, 74, 75,
1222 76, 0, 77, 78, 79, 159, 0, 0, 160, 0,
1223 0, 0, 279, 280, 0, 0, 0, 0, 0, 0,
1224 0, 0, 9, 281, 164, 350, 0, 282, 0, 0,
1225 0, 159, 0, 0, 160, 0, 167, 351, 279, 280,
1226 0, 0, 283, 284, 285, 286, 0, 0, 9, 281,
1227 164, 0, 0, 282, 0, 0, 287, 288, 0, 0,
1228 0, 289, 167, 0, 321, 0, 0, 0, 283, 284,
1229 285, 286, 0, 0, 0, 0, 0, 0, 0, 0,
1230 0, 159, 287, 288, 160, 0, 0, 289, 279, 280,
1231 0, 0, 0, 0, 0, 0, 0, 0, 9, 281,
1232 164, 0, 0, 282, 0, 0, 0, 0, 0, 290,
1233 291, 0, 167, 0, 380, 0, 292, 0, 283, 284,
1234 285, 286, 159, 0, 0, 160, 0, 0, 0, 279,
1235 280, 0, 287, 288, 0, 290, 291, 289, 0, 9,
1236 281, 164, 292, 0, 282, 0, 0, 0, 0, 0,
1237 0, 0, 0, 167, 0, 493, 0, 0, 0, 283,
1238 284, 285, 286, 0, 0, 0, 0, 0, 0, 0,
1239 0, 0, 159, 287, 288, 160, 0, 0, 289, 279,
1240 280, 0, 0, 0, 0, 290, 291, 0, 0, 9,
1241 281, 164, 292, 0, 282, 0, 0, 0, 159, 0,
1242 0, 160, 0, 167, 0, 279, 280, 0, 0, 283,
1243 284, 285, 286, 0, 0, 9, 0, 164, 0, 0,
1244 282, 0, 0, 287, 288, 0, 290, 291, 289, 167,
1245 0, 0, 0, 292, 0, 283, 284, 285, 286, 0,
1246 0, 0, 0, 0, 0, 0, 0, 0, 0, 287,
1247 0, 0, 0, 0, 289, 0, 0, 0, 0, 0,
1248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1249 0, 0, 0, 0, 0, 0, 290, 291, 0, 0,
1250 0, 0, 0, 292, 0, 0, 0, 0, 0, 0,
1251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1252 0, 0, 290, 291, 0, 0, 0, 0, 0, 292
1255 static const short yycheck[] = { 23,
1256 4, 8, 21, 125, 185, 309, 100, 97, 2, 3,
1257 215, 120, 200, 218, 8, 143, 144, 21, 127, 208,
1258 24, 300, 16, 14, 279, 239, 240, 295, 137, 23,
1259 408, 57, 71, 288, 16, 4, 217, 303, 304, 220,
1260 178, 14, 10, 3, 363, 577, 140, 149, 150, 14,
1261 62, 60, 235, 7, 432, 6, 7, 8, 10, 4,
1262 64, 100, 66, 110, 596, 333, 525, 599, 6, 7,
1263 8, 254, 37, 25, 68, 280, 80, 37, 51, 267,
1264 34, 120, 76, 77, 35, 463, 618, 91, 127, 115,
1265 295, 229, 566, 552, 232, 99, 105, 629, 137, 37,
1266 7, 140, 23, 197, 143, 144, 110, 209, 210, 211,
1267 212, 105, 620, 97, 35, 109, 7, 396, 592, 166,
1268 111, 125, 390, 631, 118, 32, 254, 446, 447, 384,
1269 10, 11, 25, 31, 138, 139, 391, 645, 3, 110,
1270 242, 32, 356, 357, 410, 24, 33, 402, 46, 527,
1271 10, 11, 39, 32, 244, 20, 125, 37, 197, 414,
1272 25, 7, 156, 344, 183, 354, 170, 355, 162, 138,
1273 139, 165, 550, 551, 156, 214, 223, 37, 43, 183,
1274 125, 386, 387, 388, 20, 373, 10, 11, 32, 25,
1275 237, 238, 36, 138, 139, 166, 402, 244, 7, 35,
1276 20, 20, 7, 11, 12, 25, 25, 3, 414, 318,
1277 3, 490, 216, 37, 22, 254, 471, 10, 26, 223,
1278 28, 29, 30, 31, 3, 439, 34, 32, 356, 357,
1279 38, 10, 25, 237, 238, 32, 230, 231, 6, 341,
1280 37, 343, 23, 24, 37, 7, 25, 40, 41, 42,
1281 43, 32, 223, 31, 35, 302, 560, 359, 360, 440,
1282 465, 40, 41, 42, 43, 7, 237, 238, 272, 273,
1283 32, 275, 366, 244, 647, 10, 531, 10, 11, 318,
1284 374, 10, 10, 656, 657, 11, 12, 20, 7, 22,
1285 32, 33, 25, 21, 7, 668, 25, 670, 671, 672,
1286 26, 34, 28, 29, 30, 31, 35, 40, 41, 42,
1287 43, 439, 38, 32, 10, 570, 24, 356, 357, 32,
1288 7, 54, 112, 7, 32, 10, 59, 366, 36, 534,
1289 3, 10, 11, 6, 539, 374, 438, 7, 11, 12,
1290 25, 14, 7, 7, 383, 32, 112, 20, 32, 22,
1291 397, 398, 25, 26, 27, 40, 41, 42, 43, 6,
1292 97, 34, 32, 10, 11, 6, 39, 32, 32, 10,
1293 11, 375, 34, 377, 107, 108, 3, 10, 25, 6,
1294 34, 114, 55, 387, 388, 6, 10, 20, 593, 10,
1295 11, 10, 25, 32, 32, 517, 10, 35, 37, 20,
1296 439, 20, 607, 610, 25, 612, 25, 401, 613, 403,
1297 404, 581, 27, 6, 408, 32, 586, 10, 10, 11,
1298 37, 40, 41, 42, 43, 656, 657, 20, 32, 27,
1299 524, 435, 25, 37, 3, 54, 443, 668, 432, 670,
1300 59, 10, 375, 116, 377, 118, 37, 120, 121, 443,
1301 32, 124, 125, 126, 127, 37, 25, 32, 131, 132,
1302 479, 32, 37, 10, 11, 559, 37, 576, 37, 463,
1303 3, 40, 41, 42, 43, 479, 32, 10, 10, 11,
1304 671, 672, 76, 77, 32, 524, 143, 144, 107, 108,
1305 529, 53, 25, 237, 238, 114, 392, 393, 76, 77,
1306 27, 6, 33, 7, 37, 20, 545, 40, 41, 42,
1307 43, 20, 112, 517, 116, 112, 118, 25, 120, 121,
1308 559, 34, 124, 125, 126, 127, 530, 34, 27, 131,
1309 132, 111, 8, 527, 36, 539, 3, 576, 32, 6,
1310 37, 20, 546, 20, 11, 12, 32, 14, 555, 32,
1311 37, 32, 591, 10, 10, 22, 550, 551, 10, 26,
1312 10, 555, 566, 14, 10, 31, 7, 34, 7, 34,
1313 7, 34, 39, 37, 36, 7, 37, 37, 27, 27,
1314 27, 620, 36, 27, 37, 25, 31, 58, 592, 27,
1315 10, 34, 631, 35, 27, 31, 620, 31, 7, 7,
1316 27, 32, 31, 607, 34, 644, 645, 631, 647, 37,
1317 32, 37, 651, 37, 37, 26, 51, 656, 657, 37,
1318 644, 645, 32, 37, 648, 21, 106, 651, 35, 668,
1319 49, 670, 671, 672, 3, 60, 37, 6, 10, 8,
1320 7, 10, 11, 47, 61, 7, 46, 52, 34, 37,
1321 7, 20, 21, 22, 7, 48, 25, 35, 7, 35,
1322 10, 35, 10, 33, 7, 34, 25, 8, 3, 0,
1323 10, 40, 41, 42, 43, 0, 45, 10, 1, 373,
1324 4, 87, 4, 223, 105, 54, 55, 237, 218, 238,
1325 59, 214, 461, 109, 63, 64, 65, 66, 67, 68,
1326 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1327 79, 80, 81, 82, 83, 84, 85, 591, 87, 88,
1328 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1329 99, 100, 101, 102, 125, 104, 125, 563, 107, 108,
1330 125, 600, 623, 607, 539, 114, 366, 116, 273, 118,
1331 119, 120, 121, 356, 244, 124, 125, 126, 127, 128,
1332 306, 130, 131, 132, 3, 300, 295, 6, 166, 8,
1333 529, 10, 11, 118, 244, -1, -1, -1, -1, -1,
1334 -1, 20, 21, 22, -1, -1, 25, -1, -1, -1,
1335 -1, -1, -1, -1, -1, 34, -1, -1, -1, -1,
1336 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
1337 -1, 226, -1, -1, -1, 54, 55, -1, -1, -1,
1338 59, -1, -1, -1, -1, 64, 65, 66, 67, 68,
1339 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1340 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
1341 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1342 99, 100, 101, 102, -1, 104, -1, -1, 107, 108,
1343 -1, -1, -1, -1, -1, 114, -1, 116, -1, 118,
1344 119, 120, 121, -1, -1, 124, 125, 126, 127, 128,
1345 -1, 130, 131, 132, 3, -1, -1, 6, -1, 8,
1346 -1, 10, 11, -1, -1, -1, -1, -1, -1, -1,
1347 -1, 20, 21, 22, -1, -1, 25, -1, -1, -1,
1348 -1, -1, -1, -1, -1, 34, -1, -1, -1, -1,
1349 -1, 40, 41, 42, 43, -1, -1, -1, -1, -1,
1350 -1, -1, -1, -1, -1, 54, 55, -1, -1, -1,
1351 59, -1, -1, -1, -1, 64, 65, 66, 67, 68,
1352 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1353 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
1354 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1355 99, 100, 101, 102, -1, 104, -1, -1, 107, 108,
1356 -1, -1, -1, -1, -1, 114, -1, 116, -1, 118,
1357 119, 120, 121, -1, -1, 124, 125, 126, 127, 128,
1358 -1, 130, 131, 132, 3, -1, -1, 6, -1, 8,
1359 -1, 10, 11, -1, -1, -1, -1, -1, -1, -1,
1360 -1, 20, 21, 22, -1, -1, 25, -1, -1, -1,
1361 -1, -1, -1, -1, -1, 34, -1, -1, -1, -1,
1362 -1, 40, 41, 42, 43, -1, -1, -1, -1, -1,
1363 -1, -1, -1, -1, -1, 54, 55, -1, -1, -1,
1364 59, -1, -1, -1, -1, -1, -1, -1, 67, 68,
1365 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1366 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
1367 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1368 99, 100, 101, 102, -1, 104, -1, -1, 107, 108,
1369 -1, -1, -1, -1, -1, 114, -1, 116, -1, 118,
1370 119, 120, 121, -1, -1, 124, 125, 126, 127, 128,
1371 -1, 130, 131, 132, 3, -1, -1, 6, -1, 8,
1372 -1, -1, 11, 12, -1, 14, -1, -1, -1, -1,
1373 -1, 20, -1, 22, -1, -1, -1, 26, 27, -1,
1374 -1, -1, -1, -1, -1, 34, -1, -1, -1, -1,
1375 39, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1376 -1, -1, -1, -1, -1, -1, 55, -1, -1, -1,
1377 -1, -1, -1, -1, -1, -1, -1, 66, 67, 68,
1378 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
1379 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
1380 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
1381 99, 100, 101, 102, 8, 104, -1, -1, -1, -1,
1382 -1, -1, -1, -1, -1, -1, 20, 116, -1, 118,
1383 119, 120, 121, -1, -1, 124, 125, 126, 127, 128,
1384 -1, 130, 131, 132, -1, -1, -1, -1, -1, -1,
1385 -1, -1, -1, -1, 48, -1, 50, -1, -1, -1,
1386 -1, -1, 56, -1, -1, -1, -1, -1, 62, -1,
1387 -1, -1, -1, 67, 68, 69, 70, 71, 72, 73,
1388 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1389 84, 85, -1, 87, 88, 89, 90, 91, 92, 93,
1390 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
1391 104, -1, -1, -1, -1, 109, -1, 8, -1, 113,
1392 -1, 115, 116, 117, 118, 119, 120, 121, 122, 20,
1393 124, 125, 126, 127, 128, -1, 130, 131, 132, 133,
1394 134, 135, 136, -1, -1, -1, -1, -1, -1, -1,
1395 -1, -1, -1, -1, -1, -1, -1, 48, -1, 50,
1396 -1, -1, -1, -1, -1, 56, -1, -1, -1, -1,
1397 -1, 62, -1, -1, -1, -1, 67, 68, 69, 70,
1398 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1399 81, 82, 83, 84, 85, -1, 87, 88, 89, 90,
1400 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1401 101, 102, 8, 104, -1, -1, -1, -1, 109, -1,
1402 -1, -1, 113, -1, 20, 116, 117, 118, 119, 120,
1403 121, 122, -1, 124, 125, 126, 127, 128, -1, 130,
1404 131, 132, 133, 134, 135, 136, -1, -1, -1, -1,
1405 -1, -1, -1, -1, 50, -1, -1, -1, -1, -1,
1406 56, -1, -1, -1, -1, -1, 62, -1, -1, -1,
1407 -1, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1408 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1409 -1, 87, 88, 89, 90, 91, 92, 93, 94, 95,
1410 96, 97, 98, 99, 100, 101, 102, -1, 104, -1,
1411 -1, -1, -1, -1, 8, -1, -1, 113, -1, -1,
1412 116, 117, 118, 119, 120, 121, 20, -1, 124, 125,
1413 126, 127, 128, -1, 130, 131, 132, 133, 134, 135,
1414 136, 35, -1, -1, -1, -1, -1, -1, -1, -1,
1415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1417 -1, -1, -1, 67, 68, 69, 70, 71, 72, 73,
1418 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1419 84, 85, -1, 87, 88, 89, 90, 91, 92, 93,
1420 94, 95, 96, 97, 98, 99, 100, 101, 102, 6,
1421 104, 8, -1, 10, 11, -1, -1, -1, -1, -1,
1422 -1, -1, 116, 20, 118, 119, 120, 121, 25, -1,
1423 124, 125, 126, 127, 128, -1, 130, 131, 132, -1,
1424 134, 135, 136, -1, -1, -1, -1, -1, -1, -1,
1425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1426 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1427 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1428 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
1429 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1430 97, 98, 99, 100, 101, 102, 6, 104, 8, -1,
1431 10, 11, -1, -1, -1, -1, -1, -1, -1, 116,
1432 20, 118, 119, 120, 121, -1, -1, 124, 125, 126,
1433 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
1434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1436 -1, -1, -1, -1, -1, -1, -1, 67, 68, 69,
1437 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1438 80, 81, 82, 83, 84, 85, -1, 87, 88, 89,
1439 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1440 100, 101, 102, 8, 104, -1, -1, -1, -1, -1,
1441 -1, -1, -1, -1, -1, 20, 116, -1, 118, 119,
1442 120, 121, -1, -1, 124, 125, 126, 127, 128, 129,
1443 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
1444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1445 -1, -1, -1, -1, -1, -1, -1, -1, -1, 64,
1446 65, -1, 67, 68, 69, 70, 71, 72, 73, 74,
1447 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1448 85, -1, 87, 88, 89, 90, 91, 92, 93, 94,
1449 95, 96, 97, 98, 99, 100, 101, 102, -1, 104,
1450 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1451 -1, 116, 20, 118, 119, 120, 121, -1, -1, 124,
1452 125, 126, 127, 128, -1, 130, 131, 132, -1, 37,
1453 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1455 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
1456 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1457 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
1458 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1459 98, 99, 100, 101, 102, -1, 104, 8, -1, -1,
1460 -1, -1, -1, -1, -1, -1, -1, -1, 116, 20,
1461 118, 119, 120, 121, -1, -1, 124, 125, 126, 127,
1462 128, 129, 130, 131, 132, -1, 37, -1, -1, -1,
1463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1465 -1, -1, -1, -1, -1, -1, 67, 68, 69, 70,
1466 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1467 81, 82, 83, 84, 85, -1, 87, 88, 89, 90,
1468 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
1469 101, 102, -1, 104, 8, -1, -1, -1, -1, -1,
1470 -1, -1, -1, -1, -1, 116, 20, 118, 119, 120,
1471 121, -1, -1, 124, 125, 126, 127, 128, 129, 130,
1472 131, 132, -1, 37, -1, -1, -1, -1, -1, -1,
1473 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1475 -1, -1, -1, 67, 68, 69, 70, 71, 72, 73,
1476 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1477 84, 85, -1, 87, 88, 89, 90, 91, 92, 93,
1478 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
1479 104, 8, -1, -1, -1, -1, -1, -1, -1, -1,
1480 -1, -1, 116, 20, 118, 119, 120, 121, -1, -1,
1481 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
1482 37, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1483 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1485 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1486 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
1487 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1488 97, 98, 99, 100, 101, 102, 8, 104, -1, -1,
1489 -1, -1, -1, -1, -1, -1, -1, -1, 20, 116,
1490 -1, 118, 119, 120, 121, -1, -1, 124, 125, 126,
1491 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
1492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1494 -1, -1, -1, -1, -1, 67, 68, 69, 70, 71,
1495 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1496 82, 83, 84, 85, -1, 87, 88, 89, 90, 91,
1497 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1498 102, 8, 104, -1, -1, -1, -1, -1, -1, -1,
1499 -1, -1, -1, 20, 116, -1, 118, 119, 120, 121,
1500 -1, -1, 124, 125, 126, 127, 128, 129, 130, 131,
1501 132, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1504 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
1505 77, 78, 79, 80, 81, 82, 83, 84, 85, -1,
1506 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
1507 97, 98, 99, 100, 101, 102, 8, 104, -1, -1,
1508 -1, -1, -1, -1, -1, -1, -1, -1, 20, 116,
1509 -1, 118, 119, 120, 121, -1, 123, 124, 125, 126,
1510 127, 128, -1, 130, 131, 132, -1, -1, -1, -1,
1511 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1512 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1513 -1, -1, -1, -1, -1, 67, 68, 69, 70, 71,
1514 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1515 82, 83, 84, 85, -1, 87, 88, 89, 90, 91,
1516 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
1517 102, -1, 104, -1, -1, -1, -1, -1, 8, -1,
1518 -1, -1, -1, -1, 116, -1, 118, 119, 120, 121,
1519 20, -1, 124, 125, 126, 127, 128, 129, 130, 131,
1520 132, -1, -1, -1, -1, 35, -1, -1, -1, -1,
1521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1523 -1, -1, -1, -1, -1, -1, -1, 67, 68, 69,
1524 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
1525 80, 81, 82, 83, 84, 85, -1, 87, 88, 89,
1526 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
1527 100, 101, 102, -1, 104, -1, -1, -1, -1, -1,
1528 8, -1, -1, -1, -1, -1, 116, -1, 118, 119,
1529 120, 121, 20, -1, 124, 125, 126, 127, 128, -1,
1530 130, 131, 132, -1, -1, -1, -1, 35, -1, -1,
1531 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1533 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
1534 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1535 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
1536 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1537 98, 99, 100, 101, 102, 8, 104, -1, -1, -1,
1538 -1, -1, -1, -1, -1, -1, -1, 20, 116, -1,
1539 118, 119, 120, 121, -1, -1, 124, 125, 126, 127,
1540 128, -1, 130, 131, 132, -1, -1, -1, -1, -1,
1541 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1542 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1543 -1, -1, -1, 66, 67, 68, 69, 70, 71, 72,
1544 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1545 83, 84, 85, -1, 87, 88, 89, 90, 91, 92,
1546 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1547 8, 104, -1, -1, -1, -1, -1, -1, -1, -1,
1548 -1, -1, 20, 116, -1, 118, 119, 120, 121, -1,
1549 -1, 124, 125, 126, 127, 128, -1, 130, 131, 132,
1550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1552 -1, -1, -1, -1, -1, -1, -1, -1, -1, 67,
1553 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1554 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
1555 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
1556 98, 99, 100, 101, 102, -1, 104, -1, -1, -1,
1557 -1, -1, -1, -1, -1, -1, -1, -1, 116, -1,
1558 118, 119, 120, 121, -1, -1, 124, 125, 126, 127,
1559 128, -1, 130, 131, 132, 3, -1, -1, 6, -1,
1560 -1, -1, 10, 11, -1, -1, -1, -1, -1, -1,
1561 -1, -1, 20, 21, 22, 23, -1, 25, -1, -1,
1562 -1, 3, -1, -1, 6, -1, 34, 35, 10, 11,
1563 -1, -1, 40, 41, 42, 43, -1, -1, 20, 21,
1564 22, -1, -1, 25, -1, -1, 54, 55, -1, -1,
1565 -1, 59, 34, -1, 36, -1, -1, -1, 40, 41,
1566 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
1567 -1, 3, 54, 55, 6, -1, -1, 59, 10, 11,
1568 -1, -1, -1, -1, -1, -1, -1, -1, 20, 21,
1569 22, -1, -1, 25, -1, -1, -1, -1, -1, 107,
1570 108, -1, 34, -1, 36, -1, 114, -1, 40, 41,
1571 42, 43, 3, -1, -1, 6, -1, -1, -1, 10,
1572 11, -1, 54, 55, -1, 107, 108, 59, -1, 20,
1573 21, 22, 114, -1, 25, -1, -1, -1, -1, -1,
1574 -1, -1, -1, 34, -1, 36, -1, -1, -1, 40,
1575 41, 42, 43, -1, -1, -1, -1, -1, -1, -1,
1576 -1, -1, 3, 54, 55, 6, -1, -1, 59, 10,
1577 11, -1, -1, -1, -1, 107, 108, -1, -1, 20,
1578 21, 22, 114, -1, 25, -1, -1, -1, 3, -1,
1579 -1, 6, -1, 34, -1, 10, 11, -1, -1, 40,
1580 41, 42, 43, -1, -1, 20, -1, 22, -1, -1,
1581 25, -1, -1, 54, 55, -1, 107, 108, 59, 34,
1582 -1, -1, -1, 114, -1, 40, 41, 42, 43, -1,
1583 -1, -1, -1, -1, -1, -1, -1, -1, -1, 54,
1584 -1, -1, -1, -1, 59, -1, -1, -1, -1, -1,
1585 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1586 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
1587 -1, -1, -1, 114, -1, -1, -1, -1, -1, -1,
1588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1589 -1, -1, 107, 108, -1, -1, -1, -1, -1, 114
1591 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
1593 /* This file comes from bison-1.28. */
1595 /* Skeleton output parser for bison,
1596 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1598 This program is free software; you can redistribute it and/or modify
1599 it under the terms of the GNU General Public License as published by
1600 the Free Software Foundation; either version 2, or (at your option)
1603 This program is distributed in the hope that it will be useful,
1604 but WITHOUT ANY WARRANTY; without even the implied warranty of
1605 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1606 GNU General Public License for more details.
1608 You should have received a copy of the GNU General Public License
1609 along with this program; if not, write to the Free Software
1610 Foundation, Inc., 59 Temple Place - Suite 330,
1611 Boston, MA 02111-1307, USA. */
1613 /* As a special exception, when this file is copied by Bison into a
1614 Bison output file, you may use that output file without restriction.
1615 This special exception was added by the Free Software Foundation
1616 in version 1.24 of Bison. */
1618 /* This is the parser code that is written into each bison parser
1619 when the %semantic_parser declaration is not specified in the grammar.
1620 It was written by Richard Stallman by simplifying the hairy parser
1621 used when %semantic_parser is specified. */
1623 #ifndef YYSTACK_USE_ALLOCA
1625 #define YYSTACK_USE_ALLOCA
1626 #else /* alloca not defined */
1628 #define YYSTACK_USE_ALLOCA
1629 #define alloca __builtin_alloca
1630 #else /* not GNU C. */
1631 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
1632 #define YYSTACK_USE_ALLOCA
1634 #else /* not sparc */
1635 /* We think this test detects Watcom and Microsoft C. */
1636 /* This used to test MSDOS, but that is a bad idea
1637 since that symbol is in the user namespace. */
1638 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
1639 #if 0 /* No need for malloc.h, which pollutes the namespace;
1640 instead, just don't use alloca. */
1643 #else /* not MSDOS, or __TURBOC__ */
1645 /* I don't know what this was needed for, but it pollutes the namespace.
1646 So I turned it off. rms, 2 May 1997. */
1647 /* #include <malloc.h> */
1649 #define YYSTACK_USE_ALLOCA
1650 #else /* not MSDOS, or __TURBOC__, or _AIX */
1652 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
1653 and on HPUX 10. Eventually we can turn this on. */
1654 #define YYSTACK_USE_ALLOCA
1655 #define alloca __builtin_alloca
1658 #endif /* not _AIX */
1659 #endif /* not MSDOS, or __TURBOC__ */
1660 #endif /* not sparc */
1661 #endif /* not GNU C */
1662 #endif /* alloca not defined */
1663 #endif /* YYSTACK_USE_ALLOCA not defined */
1665 #ifdef YYSTACK_USE_ALLOCA
1666 #define YYSTACK_ALLOC alloca
1668 #define YYSTACK_ALLOC malloc
1671 /* Note: there must be only one dollar sign in this file.
1672 It is replaced by the list of actions, each action
1673 as one case of the switch. */
1675 #define yyerrok (yyerrstatus = 0)
1676 #define yyclearin (yychar = YYEMPTY)
1679 #define YYACCEPT goto yyacceptlab
1680 #define YYABORT goto yyabortlab
1681 #define YYERROR goto yyerrlab1
1682 /* Like YYERROR except do call yyerror.
1683 This remains here temporarily to ease the
1684 transition to the new meaning of YYERROR, for GCC.
1685 Once GCC version 2 has supplanted version 1, this can go. */
1686 #define YYFAIL goto yyerrlab
1687 #define YYRECOVERING() (!!yyerrstatus)
1688 #define YYBACKUP(token, value) \
1690 if (yychar == YYEMPTY && yylen == 1) \
1691 { yychar = (token), yylval = (value); \
1692 yychar1 = YYTRANSLATE (yychar); \
1697 { yyerror ("syntax error: cannot back up"); YYERROR; } \
1701 #define YYERRCODE 256
1704 #define YYLEX yylex()
1710 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
1712 #define YYLEX yylex(&yylval, &yylloc)
1714 #else /* not YYLSP_NEEDED */
1716 #define YYLEX yylex(&yylval, YYLEX_PARAM)
1718 #define YYLEX yylex(&yylval)
1720 #endif /* not YYLSP_NEEDED */
1723 /* If nonreentrant, generate the variables here */
1727 int yychar; /* the lookahead symbol */
1728 YYSTYPE yylval; /* the semantic value of the */
1729 /* lookahead symbol */
1732 YYLTYPE yylloc; /* location data for the lookahead */
1736 int yynerrs; /* number of parse errors so far */
1737 #endif /* not YYPURE */
1740 int yydebug; /* nonzero means print parse trace */
1741 /* Since this is uninitialized, it does not stop multiple parsers
1745 /* YYINITDEPTH indicates the initial size of the parser's stacks */
1748 #define YYINITDEPTH 200
1751 /* YYMAXDEPTH is the maximum size the stacks can grow to
1752 (effective only if the built-in stack extension method is used). */
1759 #define YYMAXDEPTH 10000
1762 /* Define __yy_memcpy. Note that the size argument
1763 should be passed with type unsigned int, because that is what the non-GCC
1764 definitions require. With GCC, __builtin_memcpy takes an arg
1765 of type size_t, but it can handle unsigned int. */
1767 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
1768 #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
1769 #else /* not GNU C or C++ */
1772 /* This is the most reliable way to avoid incompatibilities
1773 in available built-in functions on various systems. */
1775 __yy_memcpy (to, from, count)
1780 register char *f = from;
1781 register char *t = to;
1782 register int i = count;
1788 #else /* __cplusplus */
1790 /* This is the most reliable way to avoid incompatibilities
1791 in available built-in functions on various systems. */
1793 __yy_memcpy (char *to, char *from, unsigned int count)
1795 register char *t = to;
1796 register char *f = from;
1797 register int i = count;
1808 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1809 into yyparse. The argument should have type void *.
1810 It should actually point to an object.
1811 Grammar actions can access the variable by casting it
1812 to the proper pointer type. */
1814 #ifdef YYPARSE_PARAM
1816 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1817 #define YYPARSE_PARAM_DECL
1818 #else /* not __cplusplus */
1819 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
1820 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1821 #endif /* not __cplusplus */
1822 #else /* not YYPARSE_PARAM */
1823 #define YYPARSE_PARAM_ARG
1824 #define YYPARSE_PARAM_DECL
1825 #endif /* not YYPARSE_PARAM */
1827 /* Prevent warning if -Wstrict-prototypes. */
1829 #ifdef YYPARSE_PARAM
1830 int yyparse (void *);
1837 yyparse(YYPARSE_PARAM_ARG)
1840 register int yystate;
1842 register short *yyssp;
1843 register YYSTYPE *yyvsp;
1844 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1845 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
1847 short yyssa[YYINITDEPTH]; /* the state stack */
1848 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
1850 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1851 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
1854 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1855 YYLTYPE *yyls = yylsa;
1858 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1860 #define YYPOPSTACK (yyvsp--, yyssp--)
1863 int yystacksize = YYINITDEPTH;
1864 int yyfree_stacks = 0;
1875 YYSTYPE yyval; /* the variable used to return */
1876 /* semantic values from the action */
1883 fprintf(stderr, "Starting parse\n");
1889 yychar = YYEMPTY; /* Cause a token to be read. */
1891 /* Initialize stack pointers.
1892 Waste one element of value and location stack
1893 so that they stay on the same level as the state stack.
1894 The wasted elements are never initialized. */
1902 /* Push a new state, which is found in yystate . */
1903 /* In all cases, when you get here, the value and location stacks
1904 have just been pushed. so pushing a state here evens the stacks. */
1909 if (yyssp >= yyss + yystacksize - 1)
1911 /* Give user a chance to reallocate the stack */
1912 /* Use copies of these so that the &'s don't force the real ones into memory. */
1913 YYSTYPE *yyvs1 = yyvs;
1914 short *yyss1 = yyss;
1916 YYLTYPE *yyls1 = yyls;
1919 /* Get the current used size of the three stacks, in elements. */
1920 int size = yyssp - yyss + 1;
1923 /* Each stack pointer address is followed by the size of
1924 the data in use in that stack, in bytes. */
1926 /* This used to be a conditional around just the two extra args,
1927 but that might be undefined if yyoverflow is a macro. */
1928 yyoverflow("parser stack overflow",
1929 &yyss1, size * sizeof (*yyssp),
1930 &yyvs1, size * sizeof (*yyvsp),
1931 &yyls1, size * sizeof (*yylsp),
1934 yyoverflow("parser stack overflow",
1935 &yyss1, size * sizeof (*yyssp),
1936 &yyvs1, size * sizeof (*yyvsp),
1940 yyss = yyss1; yyvs = yyvs1;
1944 #else /* no yyoverflow */
1945 /* Extend the stack our own way. */
1946 if (yystacksize >= YYMAXDEPTH)
1948 yyerror("parser stack overflow");
1960 if (yystacksize > YYMAXDEPTH)
1961 yystacksize = YYMAXDEPTH;
1962 #ifndef YYSTACK_USE_ALLOCA
1965 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1966 __yy_memcpy ((char *)yyss, (char *)yyss1,
1967 size * (unsigned int) sizeof (*yyssp));
1968 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1969 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1970 size * (unsigned int) sizeof (*yyvsp));
1972 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1973 __yy_memcpy ((char *)yyls, (char *)yyls1,
1974 size * (unsigned int) sizeof (*yylsp));
1976 #endif /* no yyoverflow */
1978 yyssp = yyss + size - 1;
1979 yyvsp = yyvs + size - 1;
1981 yylsp = yyls + size - 1;
1986 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1989 if (yyssp >= yyss + yystacksize - 1)
1995 fprintf(stderr, "Entering state %d\n", yystate);
2001 /* Do appropriate processing given the current state. */
2002 /* Read a lookahead token if we need one and don't already have one. */
2005 /* First try to decide what to do without reference to lookahead token. */
2007 yyn = yypact[yystate];
2011 /* Not known => get a lookahead token if don't already have one. */
2013 /* yychar is either YYEMPTY or YYEOF
2014 or a valid token in external form. */
2016 if (yychar == YYEMPTY)
2020 fprintf(stderr, "Reading a token: ");
2025 /* Convert token to internal form (in yychar1) for indexing tables with */
2027 if (yychar <= 0) /* This means end of input. */
2030 yychar = YYEOF; /* Don't call YYLEX any more */
2034 fprintf(stderr, "Now at end of input.\n");
2039 yychar1 = YYTRANSLATE(yychar);
2044 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
2045 /* Give the individual parser a way to print the precise meaning
2046 of a token, for further debugging info. */
2048 YYPRINT (stderr, yychar, yylval);
2050 fprintf (stderr, ")\n");
2056 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
2061 /* yyn is what to do for this token type in this state.
2062 Negative => reduce, -yyn is rule number.
2063 Positive => shift, yyn is new state.
2064 New state is final state => don't bother to shift,
2065 just return success.
2066 0, or most negative number => error. */
2081 /* Shift the lookahead token. */
2085 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
2088 /* Discard the token being shifted unless it is eof. */
2089 if (yychar != YYEOF)
2097 /* count tokens shifted since error; after three, turn off error status. */
2098 if (yyerrstatus) yyerrstatus--;
2103 /* Do the default action for the current state. */
2106 yyn = yydefact[yystate];
2110 /* Do a reduction. yyn is the number of a rule to reduce with. */
2114 yyval = yyvsp[1-yylen]; /* implement default value of the action */
2121 fprintf (stderr, "Reducing via rule %d (line %d), ",
2124 /* Print the symbols being reduced, and their result. */
2125 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
2126 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
2127 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
2135 { lhExternals (yyvsp[0].interfacelist); ;
2138 { interfaceNodeList_free (yyvsp[-2].interfacelist); interfaceNodeList_free (yyvsp[0].interfacelist); ;
2141 { yyval.interfacelist = interfaceNodeList_new (); ;
2144 { yyval.interfacelist = interfaceNodeList_addh (yyvsp[-1].interfacelist, yyvsp[0].iface);;
2147 { yyval.interfacelist = interfaceNodeList_new (); ;
2150 { yyval.interfacelist = consInterfaceNode (yyvsp[-1].iface, yyvsp[0].interfacelist);;
2153 { yyval.interfacelist = consInterfaceNode (yyvsp[-1].iface, yyvsp[0].interfacelist);;
2156 { yyval.interfacelist = interfaceNodeList_new (); ;
2159 { yyval.interfacelist = interfaceNodeList_addh (yyvsp[-1].interfacelist, yyvsp[0].iface);;
2162 { yyval.iface = makeInterfaceNodeImports (yyvsp[-1].importlist);
2163 /* assume subspecs are already processed, symbol table info in external file */
2167 { yyval.iface = makeInterfaceNodeUses (yyvsp[-1].traitreflist); readlsignatures (yyval.iface);;
2170 { declareConstant (yyvsp[0].constdeclaration); yyval.iface = interfaceNode_makeConst (yyvsp[0].constdeclaration); ;
2173 { declareVar (yyvsp[0].vardeclaration); yyval.iface = interfaceNode_makeVar (yyvsp[0].vardeclaration); ;
2176 { declareType (yyvsp[0].type); yyval.iface = interfaceNode_makeType (yyvsp[0].type); ;
2179 { declareFcn (yyvsp[0].fcn, typeId_invalid); yyval.iface = interfaceNode_makeFcn (yyvsp[0].fcn); ;
2182 { yyval.iface = interfaceNode_makeClaim (yyvsp[0].claim); ;
2185 { declareIter (yyvsp[0].iter); yyval.iface = interfaceNode_makeIter (yyvsp[0].iter); ;
2188 { yyval.iter = makeIterNode (yyvsp[-4].ltok, yyvsp[-2].paramlist); ;
2191 { yyval.paramlist = paramNodeList_new (); ;
2194 { yyval.paramlist = yyvsp[0].paramlist; ;
2197 { yyval.paramlist = paramNodeList_add (paramNodeList_new (), yyvsp[0].param); ;
2200 { yyval.paramlist = paramNodeList_add (yyvsp[-2].paramlist,yyvsp[0].param); ;
2203 { yyval.param = markYieldParamNode (yyvsp[0].param); ;
2206 { yyval.param = yyvsp[0].param; ;
2209 { symtable_export (g_symtab, FALSE); ;
2212 { yyval.iface = yyvsp[0].iface; symtable_export (g_symtab, TRUE); ;
2215 { declarePrivConstant (yyvsp[0].constdeclaration); yyval.iface = interfaceNode_makePrivConst (yyvsp[0].constdeclaration); ;
2218 { declarePrivVar (yyvsp[0].vardeclaration); yyval.iface = interfaceNode_makePrivVar (yyvsp[0].vardeclaration); ;
2221 { declarePrivType (yyvsp[0].type); yyval.iface = interfaceNode_makePrivType (yyvsp[0].type); ;
2224 { declarePrivFcn (yyvsp[0].fcn, typeId_invalid); yyval.iface = interfaceNode_makePrivFcn (yyvsp[0].fcn); ;
2227 { yyval.constdeclaration = makeConstDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls); ;
2230 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, FALSE); yyval.vardeclaration->qualifier = QLF_NONE; ;
2233 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, FALSE); yyval.vardeclaration->qualifier = QLF_CONST; ;
2236 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, FALSE); yyval.vardeclaration->qualifier = QLF_VOLATILE; ;
2239 { yyval.type = makeAbstractTypeNode (yyvsp[0].abstract); ;
2242 { yyval.type = makeExposedTypeNode (yyvsp[0].exposed); ;
2245 { yyval.typequal = qual_createPrintfLike (); ;
2248 { yyval.typequal = qual_createScanfLike (); ;
2251 { yyval.typequal = qual_createMessageLike (); ;
2254 { enteringFcnScope (yyvsp[-2].lcltypespec, yyvsp[-1].declare, yyvsp[0].globals); ;
2257 { yyval.fcn = makeFcnNode (qual_createUnknown (), yyvsp[-12].lcltypespec, yyvsp[-11].declare, yyvsp[-10].globals, yyvsp[-7].vardeclarationlist, yyvsp[-6].letdecls,
2258 yyvsp[-5].lclpredicate, yyvsp[-4].lclpredicate, yyvsp[-3].modify, yyvsp[-2].lclpredicate, yyvsp[-1].lclpredicate);
2259 /* type, declarator, glovbls, privateinits,
2260 lets, checks, requires, modifies, ensures, claims */
2261 symtable_exitScope (g_symtab);
2265 { enteringFcnScope (yyvsp[-2].lcltypespec, yyvsp[-1].declare, yyvsp[0].globals); ;
2268 { yyval.fcn = makeFcnNode (yyvsp[-13].typequal, yyvsp[-12].lcltypespec, yyvsp[-11].declare, yyvsp[-10].globals, yyvsp[-7].vardeclarationlist,
2269 yyvsp[-6].letdecls, yyvsp[-5].lclpredicate, yyvsp[-4].lclpredicate, yyvsp[-3].modify, yyvsp[-2].lclpredicate, yyvsp[-1].lclpredicate);
2270 /* type, declarator, glovbls, privateinits,
2271 lets, checks, requires, modifies, ensures, claims */
2272 symtable_exitScope (g_symtab);
2276 { enteringClaimScope (yyvsp[-2].paramlist, yyvsp[0].globals); ;
2279 { yyval.claim = makeClaimNode (yyvsp[-11].ltok, yyvsp[-9].paramlist, yyvsp[-7].globals, yyvsp[-4].letdecls, yyvsp[-3].lclpredicate, yyvsp[-2].program, yyvsp[-1].lclpredicate);
2280 symtable_exitScope (g_symtab); ;
2283 { yyval.claim = (claimNode) 0; ;
2286 {g_inTypeDef = TRUE; ;
2289 {g_inTypeDef = FALSE; ;
2292 { yyval.abstract = makeAbstractNode (yyvsp[-5].ltok, yyvsp[-2].ltok, TRUE, FALSE, yyvsp[0].abstbody); ;
2295 {g_inTypeDef = TRUE; ;
2298 {g_inTypeDef = FALSE; ;
2301 { yyval.abstract = makeAbstractNode (yyvsp[-6].ltok, yyvsp[-2].ltok, TRUE, TRUE, yyvsp[0].abstbody); ;
2304 {g_inTypeDef = TRUE; ;
2307 {g_inTypeDef = FALSE; ;
2310 { yyval.abstract = makeAbstractNode (yyvsp[-5].ltok, yyvsp[-2].ltok, TRUE, TRUE, yyvsp[0].abstbody); ;
2313 {g_inTypeDef = TRUE; ;
2316 {g_inTypeDef = FALSE; ;
2319 { yyval.abstract = makeAbstractNode (yyvsp[-5].ltok, yyvsp[-2].ltok, FALSE, FALSE, yyvsp[0].abstbody); ;
2322 { g_inTypeDef = TRUE; setExposedType (yyvsp[0].lcltypespec); ;
2325 { g_inTypeDef = FALSE; ;
2328 { yyval.exposed = makeExposedNode (yyvsp[-5].ltok, yyvsp[-4].lcltypespec, yyvsp[-2].declaratorinvs); /* to support mutually recursive types */ ;
2331 { yyval.exposed = makeExposedNode (yyvsp[0].ltok, makeLclTypeSpecNodeSU (yyvsp[-1].structorunion), declaratorInvNodeList_new ()); ;
2334 { yyval.exposed = makeExposedNode (yyvsp[0].ltok, makeLclTypeSpecNodeEnum (yyvsp[-1].enumspec), declaratorInvNodeList_new ()); ;
2337 { yyval.importlist = importNodeList_add (importNodeList_new (), yyvsp[0].import); ;
2340 { yyval.importlist = importNodeList_add (yyvsp[-2].importlist, yyvsp[0].import); ;
2343 { yyval.import = importNode_makePlain (yyvsp[0].ltok); ;
2346 { checkBrackets (yyvsp[-2].ltok, yyvsp[0].ltok); yyval.import = importNode_makeBracketed (yyvsp[-1].ltok); ;
2349 { yyval.import = importNode_makeQuoted (yyvsp[0].ltok); ;
2352 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
2355 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
2358 { yyval.traitreflist = traitRefNodeList_add (traitRefNodeList_new (), yyvsp[0].traitref); ;
2361 { yyval.traitreflist = traitRefNodeList_add (yyvsp[-2].traitreflist, yyvsp[0].traitref); ;
2364 { yyval.traitref = makeTraitRefNode (ltokenList_singleton (yyvsp[0].ltok), (renamingNode)0); ;
2367 { yyval.traitref = makeTraitRefNode (ltokenList_singleton (yyvsp[-3].ltok), yyvsp[-1].renaming); ;
2370 { yyval.traitref = makeTraitRefNode (yyvsp[-1].ltokenList, (renamingNode)0); ;
2373 { yyval.traitref = makeTraitRefNode (yyvsp[-4].ltokenList, yyvsp[-1].renaming); ;
2376 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
2379 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
2382 { yyval.renaming = makeRenamingNode (typeNameNodeList_new (), yyvsp[0].replacelist); ;
2385 { yyval.renaming = makeRenamingNode (yyvsp[0].namelist, replaceNodeList_new ()); ;
2388 { yyval.renaming = makeRenamingNode (yyvsp[-2].namelist, yyvsp[0].replacelist); ;
2391 { yyval.namelist = typeNameNodeList_add (typeNameNodeList_new (), yyvsp[0].typname); ;
2394 { yyval.namelist = typeNameNodeList_add (yyvsp[-2].namelist, yyvsp[0].typname); ;
2397 { yyval.replacelist = replaceNodeList_add (replaceNodeList_new (), yyvsp[0].replace); ;
2400 { yyval.replacelist = replaceNodeList_add (yyvsp[-2].replacelist, yyvsp[0].replace); ;
2403 { yyval.replace = makeReplaceNode (yyvsp[-1].ltok, yyvsp[-2].typname, TRUE, yyvsp[0].ltok, NULL, NULL); ;
2406 { yyval.replace = makeReplaceNameNode (yyvsp[-1].ltok, yyvsp[-2].typname, yyvsp[0].name); ;
2409 { yyval.replace = makeReplaceNode (yyvsp[-2].ltok, yyvsp[-3].typname, FALSE, ltoken_undefined,
2410 yyvsp[-1].name, yyvsp[0].signature); ;
2413 { yyval.name = makeNameNodeId (yyvsp[0].ltok); ;
2416 { yyval.name = makeNameNodeForm (yyvsp[0].opform); ;
2419 { yyval.initdecls = initDeclNodeList_add (initDeclNodeList_new (), yyvsp[0].initdecl); ;
2422 { yyval.initdecls = initDeclNodeList_add (yyvsp[-2].initdecls, yyvsp[0].initdecl); ;
2425 { yyval.initdecl = makeInitDeclNode (yyvsp[0].declare, (termNode)0); ;
2428 { yyval.initdecl = makeInitDeclNode (yyvsp[-2].declare, yyvsp[0].term); ;
2431 { yyval.globals = varDeclarationNodeList_new (); ;
2434 { varDeclarationNodeList_addh (yyvsp[-1].globals, yyvsp[0].vardeclaration); yyval.globals = yyvsp[-1].globals; ;
2437 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, TRUE, FALSE); ;
2440 { yyval.vardeclaration = makeInternalStateNode (); ;
2443 { yyval.vardeclaration = makeFileSystemNode (); ;
2446 { yyval.vardeclarationlist = varDeclarationNodeList_new (); ;
2449 { varDeclarationNodeList_addh (yyvsp[-1].vardeclarationlist, yyvsp[0].vardeclaration); yyval.vardeclarationlist = yyvsp[-1].vardeclarationlist; ;
2452 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, TRUE); ;
2455 { yyval.letdecls = letDeclNodeList_new (); ;
2458 { yyval.letdecls = yyvsp[-1].letdecls; ;
2461 { yyval.letdecls = letDeclNodeList_add (letDeclNodeList_new (), yyvsp[0].letdecl); ;
2464 { yyval.letdecls = letDeclNodeList_add (yyvsp[-2].letdecls, yyvsp[0].letdecl); ;
2467 { yyval.letdecl = makeLetDeclNode (yyvsp[-4].ltok, yyvsp[-2].lcltypespec, yyvsp[0].term); ;
2470 { yyval.letdecl = makeLetDeclNode (yyvsp[-2].ltok, (lclTypeSpecNode)0, yyvsp[0].term); ;
2473 { yyval.lclpredicate = (lclPredicateNode)0; ;
2476 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeChecksNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); ;
2479 { yyval.lclpredicate = (lclPredicateNode)0; ;
2482 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeRequiresNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate);;
2485 { yyval.modify = (modifyNode)0; ;
2488 { yyval.modify = makeModifyNodeSpecial (yyvsp[-2].ltok, TRUE); ;
2491 { yyval.modify = makeModifyNodeSpecial (yyvsp[-2].ltok, FALSE); ;
2494 { yyval.modify = makeModifyNodeRef (yyvsp[-2].ltok, yyvsp[-1].storereflist); ;
2497 { yyval.storereflist = storeRefNodeList_add (storeRefNodeList_new (), yyvsp[0].storeref); ;
2500 { yyval.storereflist = storeRefNodeList_add (yyvsp[-2].storereflist, yyvsp[0].storeref); ;
2503 { yyval.storeref = makeStoreRefNodeTerm (yyvsp[0].term); ;
2506 { yyval.storeref = makeStoreRefNodeType (yyvsp[0].lcltypespec, FALSE); ;
2509 { yyval.storeref = makeStoreRefNodeType (yyvsp[0].lcltypespec, TRUE); ;
2512 { yyval.storeref = makeStoreRefNodeInternal (); ;
2515 { yyval.storeref = makeStoreRefNodeSystem (); ;
2518 { yyval.lclpredicate = (lclPredicateNode)0; ;
2521 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeEnsuresNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate);;
2524 { yyval.lclpredicate = (lclPredicateNode)0; ;
2527 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeIntraClaimNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate);;
2530 { yyval.paramlist = paramNodeList_new (); ;
2533 { yyval.paramlist = yyvsp[0].paramlist; ;
2536 { yyval.paramlist = paramNodeList_add (paramNodeList_new (), paramNode_elipsis ()); ;
2539 { yyval.paramlist = paramNodeList_add (yyvsp[-2].paramlist, paramNode_elipsis ()); ;
2542 { yyval.paramlist = paramNodeList_single (yyvsp[0].param); ;
2545 { yyval.paramlist = paramNodeList_add (yyvsp[-2].paramlist, yyvsp[0].param); ;
2548 { yyval.program = (programNode)0; ;
2551 { yyval.program = yyvsp[-1].program; ;
2554 { yyval.program = yyvsp[-2].program; ;
2557 { yyval.program = makeProgramNode (yyvsp[0].stmt); ;
2560 { yyval.program = yyvsp[-1].program; yyval.program->wrapped = yyval.program->wrapped + 1; ;
2563 { programNodeList x = programNodeList_new ();
2564 programNodeList_addh (x, yyvsp[-1].program);
2565 yyval.program = makeProgramNodeAction (x, ACT_ITER);
2569 { programNodeList x = programNodeList_new ();
2570 programNodeList_addh (x, yyvsp[-2].program);
2571 programNodeList_addh (x, yyvsp[0].program);
2572 yyval.program = makeProgramNodeAction (x, ACT_ALTERNATE);
2576 { programNodeList x = programNodeList_new ();
2577 programNodeList_addh (x, yyvsp[-2].program);
2578 programNodeList_addh (x, yyvsp[0].program);
2579 yyval.program = makeProgramNodeAction (x, ACT_SEQUENCE);
2583 { yyval.stmt = makeStmtNode (ltoken_undefined, yyvsp[-3].ltok, yyvsp[-1].termlist); ;
2586 { yyval.stmt = makeStmtNode (ltoken_undefined, yyvsp[-2].ltok, termNodeList_new ()); ;
2589 { yyval.stmt = makeStmtNode (yyvsp[-4].ltok, yyvsp[-2].ltok, termNodeList_new ()); ;
2592 { yyval.stmt = makeStmtNode (yyvsp[-5].ltok, yyvsp[-3].ltok, yyvsp[-1].termlist); ;
2595 { yyval.termlist = termNodeList_push (termNodeList_new (), yyvsp[0].term); ;
2598 { yyval.termlist = termNodeList_push (yyvsp[-2].termlist, yyvsp[0].term); ;
2601 { yyval.term = makeSimpleTermNode (yyvsp[0].ltok); ;
2604 { yyval.term = makePrefixTermNode (yyvsp[-1].ltok, yyvsp[0].term); ;
2607 { yyval.term = makePostfixTermNode2 (yyvsp[-1].term, yyvsp[0].ltok); ;
2610 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term); ;
2613 { yyval.term = yyvsp[-1].term; yyval.term->wrapped = yyval.term->wrapped + 1; ;
2616 { yyval.term = makeOpCallTermNode (yyvsp[-2].ltok, yyvsp[-1].ltok, termNodeList_new (), yyvsp[0].ltok); ;
2619 { yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
2622 { yyval.abstbody = (abstBodyNode)0; ;
2625 { yyval.abstbody = makeAbstBodyNode (yyvsp[-2].ltok, yyvsp[-1].fcns); ;
2628 { yyval.abstbody = makeAbstBodyNode2 (yyvsp[-3].ltok, yyvsp[-2].ltokenList); ;
2631 { yyval.abstbody = (abstBodyNode)0; ;
2634 { yyval.fcns = fcnNodeList_new (); ;
2637 { yyval.fcns = fcnNodeList_add (yyvsp[-1].fcns, yyvsp[0].fcn); ;
2640 { yyval.lclpredicate = (lclPredicateNode)0; ;
2643 { g_inTypeDef = FALSE; ;
2646 { yyvsp[-1].lclpredicate->tok = yyvsp[-5].ltok; yyvsp[-1].lclpredicate->kind = LPD_CONSTRAINT;
2647 checkLclPredicate (yyvsp[-5].ltok, yyvsp[-1].lclpredicate);
2648 yyval.lclpredicate = yyvsp[-1].lclpredicate;
2649 symtable_exitScope (g_symtab);
2654 { yyval.declaratorinvs = declaratorInvNodeList_add (declaratorInvNodeList_new (), yyvsp[0].declaratorinv); ;
2657 { yyval.declaratorinvs = declaratorInvNodeList_add (yyvsp[-2].declaratorinvs, yyvsp[0].declaratorinv); ;
2660 { declareForwardType (yyvsp[0].declare); ;
2663 { yyval.declaratorinv = makeDeclaratorInvNode (yyvsp[-2].declare, yyvsp[0].abstbody); ;
2666 { yyval.abstbody = (abstBodyNode)0; ;
2669 { yyval.abstbody = makeExposedBodyNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); ;
2672 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_VOID, 0)); ;
2675 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_CHAR, 0)); ;
2678 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_DOUBLE, 0)); ;
2681 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_FLOAT, 0)); ;
2684 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_INT, 0)); ;
2687 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_LONG, 0)); ;
2690 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_SHORT, 0)); ;
2693 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_SIGNED, 0)); ;
2696 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_UNSIGNED, 0)); ;
2699 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_UNKNOWN, 0)); ;
2702 { yyval.ctypes = makeCTypesNode ((CTypesNode)0, yyvsp[0].ltok); ;
2705 { yyval.ctypes = makeCTypesNode (yyvsp[-1].ctypes, yyvsp[0].ltok); ;
2708 { yyval.ctypes = makeTypeSpecifier (yyvsp[0].ltok); ;
2711 { yyval.ctypes = yyvsp[0].ctypes; yyval.ctypes->sort = sort_lookupName (lclctype_toSort (yyvsp[0].ctypes->intfield)); ;
2714 { yyval.typequal = qual_createOut (); ;
2717 { yyval.typequal = qual_createUnused (); ;
2720 { yyval.typequal = qual_createSef (); ;
2723 { yyval.typequal = qual_createOnly (); ;
2726 { yyval.typequal = qual_createOwned (); ;
2729 { yyval.typequal = qual_createDependent (); ;
2732 { yyval.typequal = qual_createKeep (); ;
2735 { yyval.typequal = qual_createKept (); ;
2738 { yyval.typequal = qual_createObserver (); ;
2741 { yyval.typequal = qual_createExits (); ;
2744 { yyval.typequal = qual_createMayExit (); ;
2747 { yyval.typequal = qual_createTrueExit (); ;
2750 { yyval.typequal = qual_createFalseExit (); ;
2753 { yyval.typequal = qual_createNeverExit (); ;
2756 { yyval.typequal = qual_createOnly (); ;
2759 { yyval.typequal = qual_createShared (); ;
2762 { yyval.typequal = qual_createUnique (); ;
2765 { yyval.typequal = qual_createChecked (); ;
2768 { yyval.typequal = qual_createUnchecked (); ;
2771 { yyval.typequal = qual_createCheckedStrict (); ;
2774 { yyval.typequal = qual_createTrueNull (); ;
2777 { yyval.typequal = qual_createFalseNull (); ;
2780 { yyval.typequal = qual_createRelNull (); ;
2783 { yyval.typequal = qual_createRelDef (); ;
2786 { yyval.typequal = qual_createRefCounted (); ;
2789 { yyval.typequal = qual_createRefs (); ;
2792 { yyval.typequal = qual_createNewRef (); ;
2795 { yyval.typequal = qual_createKillRef (); ;
2798 { yyval.typequal = qual_createNull (); ;
2801 { yyval.typequal = qual_createNotNull (); ;
2804 { yyval.typequal = qual_createReturned (); ;
2807 { yyval.typequal = qual_createExposed (); ;
2810 { yyval.typequal = qual_createPartial (); ;
2813 { yyval.typequal = qual_createNullTerminated () ; ;
2816 { yyval.typequal = qual_createUndef (); ;
2819 { yyval.typequal = qual_createKilled (); ;
2822 { yyval.lcltypespec = makeLclTypeSpecNodeType (yyvsp[0].ctypes); ;
2825 { yyval.lcltypespec = makeLclTypeSpecNodeSU (yyvsp[0].structorunion); ;
2828 { yyval.lcltypespec = makeLclTypeSpecNodeEnum (yyvsp[0].enumspec); ;
2831 { yyval.lcltypespec = lclTypeSpecNode_addQual (yyvsp[0].lcltypespec, yyvsp[-1].typequal); ;
2834 { yyval.lcltypespec = makeLclTypeSpecNodeConj (yyvsp[-3].lcltypespec, yyvsp[-1].lcltypespec); ;
2837 { llassert (lclTypeSpecNode_isDefined (yyvsp[-1].lcltypespec));
2838 yyvsp[-1].lcltypespec->pointers = yyvsp[0].count; yyval.lcltypespec = yyvsp[-1].lcltypespec; ;
2841 { yyval.count = 1; ;
2844 { yyval.count = yyvsp[-1].count + 1; ;
2847 { (void) checkAndEnterTag (TAG_FWDSTRUCT, ltoken_copy (yyvsp[0].ltok)); ;
2850 { yyval.structorunion = makestrOrUnionNode (yyvsp[-5].ltok, SU_STRUCT, yyvsp[-4].ltok, yyvsp[-1].structdecls); ;
2853 { (void) checkAndEnterTag (TAG_FWDUNION, ltoken_copy (yyvsp[0].ltok)); ;
2856 { yyval.structorunion = makestrOrUnionNode (yyvsp[-5].ltok, SU_UNION, yyvsp[-4].ltok, yyvsp[-1].structdecls); ;
2859 { yyval.structorunion = makeForwardstrOrUnionNode (yyvsp[-1].ltok, SU_STRUCT, yyvsp[0].ltok); ;
2862 { yyval.structorunion = makeForwardstrOrUnionNode (yyvsp[-1].ltok, SU_UNION, yyvsp[0].ltok); ;
2865 { yyval.ltok = ltoken_undefined; ;
2868 { yyval.structdecls = stDeclNodeList_add (stDeclNodeList_new (), yyvsp[0].structdecl); ;
2871 { yyval.structdecls = stDeclNodeList_add (yyvsp[-1].structdecls, yyvsp[0].structdecl); ;
2874 { yyval.structdecl = makestDeclNode (yyvsp[-2].lcltypespec, yyvsp[-1].declarelist); ;
2877 { yyval.declarelist = declaratorNodeList_add (declaratorNodeList_new (), yyvsp[0].declare); ;
2880 { yyval.declarelist = declaratorNodeList_add (yyvsp[-2].declarelist, yyvsp[0].declare); ;
2889 { yyval.enumspec = makeEnumSpecNode (yyvsp[-5].ltok, yyvsp[-4].ltok, yyvsp[-2].ltokenList); ;
2892 { yyval.enumspec = makeEnumSpecNode2 (yyvsp[-1].ltok, yyvsp[0].ltok); ;
2895 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
2898 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
2901 { yyval.declare = makeDeclaratorNode (yyvsp[0].typeexpr); ;
2904 { yyval.declare = makeDeclaratorNode (yyvsp[0].typeexpr); ;
2907 { yyval.typeexpr = makeTypeExpr (yyvsp[0].ltok); ;
2910 { yyval.typeexpr = yyvsp[-1].typeexpr; yyval.typeexpr->wrapped = yyval.typeexpr->wrapped + 1; ;
2913 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2916 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2919 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2922 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
2925 { yyval.typeexpr = makeTypeExpr (yyvsp[0].ltok); ;
2928 { yyval.typeexpr = yyvsp[-1].typeexpr; yyval.typeexpr->wrapped = yyval.typeexpr->wrapped + 1; ;
2931 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2934 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2937 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2940 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
2943 { yyval.typeexpr = makeTypeExpr (yyvsp[0].ltok); ;
2946 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2949 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2952 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2955 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
2958 { yyval.param = makeParamNode (yyvsp[-1].lcltypespec, yyvsp[0].typeexpr); ;
2961 { yyval.param = makeParamNode (yyvsp[-1].lcltypespec, yyvsp[0].typeexpr); ;
2964 { yyval.param = makeParamNode (yyvsp[-1].lcltypespec, yyvsp[0].abstDecl); ;
2967 { yyval.typname = makeTypeNameNode (FALSE, yyvsp[-1].lcltypespec, yyvsp[0].abstDecl); ;
2970 { yyval.typname = makeTypeNameNode (TRUE, yyvsp[-1].lcltypespec, yyvsp[0].abstDecl); ;
2973 { yyval.typname = makeTypeNameNodeOp (yyvsp[0].opform); ;
2976 { yyval.abstDecl = (abstDeclaratorNode)0; ;
2979 { yyval.abstDecl = (abstDeclaratorNode)yyvsp[0].typeexpr; ;
2982 { yyval.typeexpr = yyvsp[-1].typeexpr; yyval.typeexpr->wrapped = yyval.typeexpr->wrapped + 1; ;
2985 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2988 { yyval.typeexpr = makePointerNode (yyvsp[0].ltok, (typeExpr)0); ;
2991 { yyval.typeexpr = makeArrayNode ((typeExpr)0, yyvsp[0].array); ;
2994 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2997 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
3000 { yyval.typeexpr = makeFunctionNode ((typeExpr)0, yyvsp[-1].paramlist); ;
3003 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
3006 { yyval.array = makeArrayQualNode (yyvsp[-1].ltok, (termNode)0); ;
3009 { yyval.array = makeArrayQualNode (yyvsp[-2].ltok, yyvsp[-1].term); ;
3012 { yyval.opform = makeOpFormNode (yyvsp[-5].ltok, OPF_IF, opFormUnion_createMiddle (0), ltoken_undefined); ;
3015 { yyval.opform = makeOpFormNode (yyvsp[0].ltok, OPF_ANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3018 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3021 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_ANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
3024 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MANYOPM,
3025 opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
3028 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3031 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3034 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3037 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3040 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3043 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3046 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3049 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMMIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3052 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_SELECT,
3053 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3056 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MAP,
3057 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3060 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MSELECT,
3061 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3064 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMAP,
3065 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3068 { yyval.count = 0; ;
3071 { yyval.count = 1; ;
3074 { yyval.count = yyvsp[-2].count + 1; ;
3077 { yyval.signature = makesigNode (yyvsp[-3].ltok, yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
3080 { yyval.ltokenList = ltokenList_new (); ;
3083 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
3086 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
3089 { yyval.lclpredicate = makeLclPredicateNode (ltoken_undefined, yyvsp[0].term, LPD_PLAIN);;
3092 { yyval.term = checkSort (yyvsp[0].term); ;
3095 { yyval.term = makeIfTermNode (yyvsp[-5].ltok,yyvsp[-4].term,yyvsp[-3].ltok,yyvsp[-2].term,yyvsp[-1].ltok,yyvsp[0].term); ;
3098 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term); ;
3101 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.term = makeQuantifiedTermNode (yyvsp[-3].quantifiers, yyvsp[-2].ltok, yyvsp[-1].lclpredicate->predicate, yyvsp[0].ltok);
3102 symtable_exitScope (g_symtab);
3106 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term);;
3109 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term);;
3112 { yyval.term = makePostfixTermNode (yyvsp[-1].term, yyvsp[0].ltokenList); ;
3115 { yyval.term = CollapseInfixTermNode (yyvsp[-1].term, yyvsp[0].termlist); ;
3118 { yyval.term = makePrefixTermNode (yyvsp[-1].ltok, yyvsp[0].term); ;
3121 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
3124 { yyval.ltokenList = ltokenList_push (yyvsp[-1].ltokenList, yyvsp[0].ltok); ;
3127 { yyval.termlist = pushInfixOpPartNode (termNodeList_new (), yyvsp[-1].ltok, yyvsp[0].term); ;
3130 { yyval.termlist = pushInfixOpPartNode (yyvsp[-2].termlist, yyvsp[-1].ltok, yyvsp[0].term); ;
3133 { yyval.term = computePossibleSorts (yyvsp[0].term); ;
3136 { yyval.term = updateMatchedNode ((termNode)0, yyvsp[-1].term, yyvsp[0].term); ;
3139 { yyval.term = updateMatchedNode (yyvsp[-1].term, yyvsp[0].term, (termNode)0); ;
3142 { yyval.term = updateMatchedNode (yyvsp[-2].term, yyvsp[-1].term, yyvsp[0].term); ;
3145 { yyval.term = computePossibleSorts (yyvsp[0].term); ;
3148 { yyval.term = updateSqBracketedNode ((termNode)0, yyvsp[-1].term, yyvsp[0].term); ;
3151 { yyval.term = yyvsp[-2].term; yyval.term->sort = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); ;
3154 { yyval.term = makeSqBracketedNode (yyvsp[-4].ltok, yyvsp[-3].termlist, yyvsp[-2].ltok);
3155 yyval.term->given = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); ;
3158 { yyval.term = makeSqBracketedNode (yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3161 { yyval.term = makeSqBracketedNode (yyvsp[-3].ltok, termNodeList_new (), yyvsp[-2].ltok);
3162 yyval.term->given = sort_lookupName (ltoken_getText (yyvsp[0].ltok));
3166 { yyval.term = makeSqBracketedNode (yyvsp[-1].ltok, termNodeList_new (), yyvsp[0].ltok); ;
3169 { yyval.term = makeMatchedNode (yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3172 { yyval.term = makeMatchedNode (yyvsp[-1].ltok, termNodeList_new (), yyvsp[0].ltok); ;
3175 { yyval.termlist = termNodeList_push (termNodeList_new (), yyvsp[0].term); ;
3178 { yyval.termlist = termNodeList_push (yyvsp[-2].termlist, yyvsp[0].term); ;
3181 { yyval.term = yyvsp[-1].term; yyval.term->wrapped = yyval.term->wrapped + 1; ;
3184 { yyval.term = makeSimpleTermNode (yyvsp[0].ltok); ;
3187 { yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3190 { yyval.term = makePostfixTermNode2 (yyvsp[-1].term, yyvsp[0].ltok); ;
3193 { ltoken_markOwned (yyvsp[0].ltok); yyval.term = makeSelectTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].ltok); ;
3196 { ltoken_markOwned (yyvsp[0].ltok); yyval.term = makeMapTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].ltok); ;
3199 { yyval.term = updateSqBracketedNode (yyvsp[-2].term, makeSqBracketedNode (yyvsp[-1].ltok, termNodeList_new (), yyvsp[0].ltok),
3203 { yyval.term = updateSqBracketedNode (yyvsp[-3].term, makeSqBracketedNode (yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok), (termNode)0); ;
3206 { yyval.term = yyvsp[-2].term; yyval.term->given = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); ;
3209 { yyval.termlist = termNodeList_push (termNodeList_new (), yyvsp[0].term); ;
3212 { yyval.termlist = termNodeList_push (yyvsp[-2].termlist, yyvsp[0].term); ;
3215 { yyval.term = makeSimpleTermNode (yyvsp[0].ltok); ;
3218 { yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3221 { yyval.term = makeUnchangedTermNode1 (yyvsp[-3].ltok, yyvsp[-1].ltok); ;
3224 { yyval.term = makeUnchangedTermNode2 (yyvsp[-3].ltok, yyvsp[-1].storereflist); ;
3227 { termNodeList x = termNodeList_new ();
3228 termNodeList_addh (x, yyvsp[-1].term);
3229 yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, x, yyvsp[0].ltok);
3233 { termNodeList x = termNodeList_new ();
3234 termNodeList_addh (x, yyvsp[-3].term);
3235 termNodeList_addh (x, yyvsp[-1].term);
3236 yyval.term = makeOpCallTermNode (yyvsp[-5].ltok, yyvsp[-4].ltok, x, yyvsp[0].ltok);
3240 { yyval.term = makeSizeofTermNode (yyvsp[-3].ltok, yyvsp[-1].lcltypespec); ;
3243 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_int); ;
3246 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_cstring); ;
3249 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_char); ;
3252 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_double); ;
3255 { yyval.quantifiers = quantifierNodeList_add (quantifierNodeList_new (), yyvsp[0].quantifier); ;
3258 { yyval.quantifiers = quantifierNodeList_add (yyvsp[-1].quantifiers, yyvsp[0].quantifier); ;
3261 { scopeInfo si = (scopeInfo) dmalloc (sizeof (*si));
3262 si->kind = SPE_QUANT;
3263 symtable_enterScope (g_symtab, si); ;
3266 { yyval.quantifier = makeQuantifierNode (yyvsp[0].vars, yyvsp[-2].ltok); ;
3269 { yyval.vars = varNodeList_add (varNodeList_new (), yyvsp[0].var); ;
3272 { yyval.vars = varNodeList_add (yyvsp[-2].vars, yyvsp[0].var); ;
3275 { yyval.var = makeVarNode (yyvsp[-2].ltok, FALSE, yyvsp[0].lcltypespec); ;
3278 { yyval.var = makeVarNode (yyvsp[-3].ltok, TRUE, yyvsp[0].lcltypespec); ;
3281 /* the action file gets copied in in place of this dollarsign */
3293 short *ssp1 = yyss - 1;
3294 fprintf (stderr, "state stack now");
3295 while (ssp1 != yyssp)
3296 fprintf (stderr, " %d", *++ssp1);
3297 fprintf (stderr, "\n");
3307 yylsp->first_line = yylloc.first_line;
3308 yylsp->first_column = yylloc.first_column;
3309 yylsp->last_line = (yylsp-1)->last_line;
3310 yylsp->last_column = (yylsp-1)->last_column;
3315 yylsp->last_line = (yylsp+yylen-1)->last_line;
3316 yylsp->last_column = (yylsp+yylen-1)->last_column;
3320 /* Now "shift" the result of the reduction.
3321 Determine what state that goes to,
3322 based on the state we popped back to
3323 and the rule number reduced by. */
3327 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3328 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3329 yystate = yytable[yystate];
3331 yystate = yydefgoto[yyn - YYNTBASE];
3335 yyerrlab: /* here on detecting error */
3338 /* If not already recovering from an error, report this error. */
3342 #ifdef YYERROR_VERBOSE
3343 yyn = yypact[yystate];
3345 if (yyn > YYFLAG && yyn < YYLAST)
3352 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3353 for (x = (yyn < 0 ? -yyn : 0);
3354 x < (sizeof(yytname) / sizeof(char *)); x++)
3355 if (yycheck[x + yyn] == x)
3356 size += strlen(yytname[x]) + 15, count++;
3357 msg = (char *) malloc(size + 15);
3360 strcpy(msg, "parse error");
3365 for (x = (yyn < 0 ? -yyn : 0);
3366 x < (sizeof(yytname) / sizeof(char *)); x++)
3367 if (yycheck[x + yyn] == x)
3369 strcat(msg, count == 0 ? ", expecting `" : " or `");
3370 strcat(msg, yytname[x]);
3379 yyerror ("parse error; also virtual memory exceeded");
3382 #endif /* YYERROR_VERBOSE */
3383 yyerror("parse error");
3387 yyerrlab1: /* here on error raised explicitly by an action */
3389 if (yyerrstatus == 3)
3391 /* if just tried and failed to reuse lookahead token after an error, discard it. */
3393 /* return failure if at end of input */
3394 if (yychar == YYEOF)
3399 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3405 /* Else will try to reuse lookahead token
3406 after shifting the error token. */
3408 yyerrstatus = 3; /* Each real token shifted decrements this */
3412 yyerrdefault: /* current state does not do anything special for the error token. */
3415 /* This is wrong; only states that explicitly want error tokens
3416 should shift them. */
3417 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3418 if (yyn) goto yydefault;
3421 yyerrpop: /* pop the current state because it cannot handle the error token */
3423 if (yyssp == yyss) YYABORT;
3433 short *ssp1 = yyss - 1;
3434 fprintf (stderr, "Error: state stack now");
3435 while (ssp1 != yyssp)
3436 fprintf (stderr, " %d", *++ssp1);
3437 fprintf (stderr, "\n");
3443 yyn = yypact[yystate];
3448 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3467 fprintf(stderr, "Shifting error token, ");
3479 /* YYACCEPT comes here. */
3491 /* YYABORT comes here. */
3504 # include "bison.reset"
3507 ** yytext is set in lex scanner
3508 ** extern YYSTYPE yylval;
3509 ** yylval is defined by code generated by bison
3512 void ylerror (char *s)
3515 ** This resetting of the left context is very important when multiple
3516 ** files are to be parsed. We do not want failures to propagate.
3517 ** Lex/Yacc does not reset the flags when the parsing goes bad.
3522 lclfatalerror (yllval.ltok,
3523 message ("%s: Token code: %s, Token String: %s",
3524 cstring_fromChars (s),
3525 ltoken_unparseCodeName (yllval.ltok),
3526 ltoken_getRawString (yllval.ltok)));
3530 static void yyprint (FILE *f, int t, YYSTYPE value)
3532 fprintf (f, " type: %d (%s)", t,
3533 cstring_toCharsSafe (ltoken_getRawString (value.ltok)));
3543 ** Resets all flags in bison.head
3565 /*@=evalorderuncon@*/
3574 /*@=elseifcomplete@*/
3578 /*@=readonlytrans@*/
3581 /*@=systemunrecog@*/
3582 /*@=dependenttrans@*/
3583 /*@=unqualifiedtrans@*/
3587 /*drl added 11/27/2001*/