]> andersk Git - splint.git/blob - src/llgrammar.c.der
- library fixes:
[splint.git] / src / llgrammar.c.der
1 /*
2 ** Inserted at beginning of c files generated by bison
3 ** REMEMBER:  Change bison.reset too.
4 */
5
6 /*@-allmacros@*/
7 /*@+boolint@*/
8 /*@+charint@*/
9 /*@-macroparams@*/
10 /*@-macroundef@*/
11 /*@-unreachable@*/
12 /*@-macrospec@*/
13 /*@-varuse@*/
14 /*@+ignorequals@*/
15 /*@-macrostmt@*/
16 /*@-noeffect@*/
17 /*@-shadow@*/
18 /*@-exitarg@*/
19 /*@-macroredef@*/
20 /*@-uniondef@*/
21 /*@-compdef@*/
22 /*@-matchfields@*/
23 /*@-exportlocal@*/
24 /*@-evalorderuncon@*/
25 /*@-exportheader@*/
26 /*@-typeuse@*/
27 /*@-redecl@*/
28 /*@-redef@*/
29 /*@-noparams@*/
30 /*@-ansireserved@*/
31 /*@-fielduse@*/
32 /*@-ifblock@*/
33 /*@-elseifcomplete@*/
34 /*@-whileblock@*/
35 /*@-forblock@*/
36 /*@-branchstate@*/
37 /*@-readonlytrans@*/
38 /*@-namechecks@*/
39 /*@-usedef@*/
40 /*@-systemunrecog@*/
41 /*@-dependenttrans@*/
42 /*@-unqualifiedtrans@*/
43 /*@-nullassign@*/
44 /*@-nullpass@*/
45 /*@-nullptrarith*/
46 /*@-usereleased@*/
47 /*@-declundef@*/
48
49 /*drl added 11/27/2001*/
50 /*@-bounds@*/
51 /* < end of bison.head > */
52
53
54 /*  A Bison parser, made from llgrammar.y
55     by GNU Bison version 1.28  */
56
57 #define YYBISON 1  /* Identify Bison output.  */
58
59 #define yyparse ylparse
60 #define yylex yllex
61 #define yyerror ylerror
62 #define yylval yllval
63 #define yychar ylchar
64 #define yydebug yldebug
65 #define yynerrs ylnerrs
66 #define simpleOp        257
67 #define PREFIX_OP       258
68 #define POSTFIX_OP      259
69 #define LLT_MULOP       260
70 #define LLT_SEMI        261
71 #define LLT_VERTICALBAR 262
72 #define ITERATION_OP    263
73 #define LLT_LPAR        264
74 #define LLT_LBRACKET    265
75 #define selectSym       266
76 #define LLT_IF_THEN_ELSE        267
77 #define logicalOp       268
78 #define eqSepSym        269
79 #define equationSym     270
80 #define commentSym      271
81 #define LLT_WHITESPACE  272
82 #define LLT_EOL 273
83 #define LLT_TYPEDEF_NAME        274
84 #define quantifierSym   275
85 #define openSym 276
86 #define closeSym        277
87 #define sepSym  278
88 #define simpleId        279
89 #define mapSym  280
90 #define markerSym       281
91 #define preSym  282
92 #define postSym 283
93 #define anySym  284
94 #define LLT_COLON       285
95 #define LLT_COMMA       286
96 #define LLT_EQUALS      287
97 #define LLT_LBRACE      288
98 #define LLT_RBRACE      289
99 #define LLT_RBRACKET    290
100 #define LLT_RPAR        291
101 #define LLT_QUOTE       292
102 #define eqOp    293
103 #define LLT_CCHAR       294
104 #define LLT_CFLOAT      295
105 #define LLT_CINTEGER    296
106 #define LLT_LCSTRING    297
107 #define LLT_ALL 298
108 #define LLT_ANYTHING    299
109 #define LLT_BE  300
110 #define LLT_BODY        301
111 #define LLT_CLAIMS      302
112 #define LLT_CHECKS      303
113 #define LLT_CONSTANT    304
114 #define LLT_ELSE        305
115 #define LLT_ENSURES     306
116 #define LLT_FOR 307
117 #define LLT_FRESH       308
118 #define LLT_IF  309
119 #define LLT_IMMUTABLE   310
120 #define LLT_IMPORTS     311
121 #define LLT_CONSTRAINT  312
122 #define LLT_ISSUB       313
123 #define LLT_LET 314
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
129 #define LLT_OBJ 320
130 #define LLT_OUT 321
131 #define LLT_SEF 322
132 #define LLT_ONLY        323
133 #define LLT_PARTIAL     324
134 #define LLT_OWNED       325
135 #define LLT_DEPENDENT   326
136 #define LLT_KEEP        327
137 #define LLT_KEPT        328
138 #define LLT_TEMP        329
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
161 #define LLT_REFS        352
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
172 #define LLT_SPEC        363
173 #define LLT_TAGGEDUNION 364
174 #define LLT_THEN        365
175 #define LLT_TYPE        366
176 #define LLT_TYPEDEF     367
177 #define LLT_UNCHANGED   368
178 #define LLT_USES        369
179 #define LLT_CHAR        370
180 #define LLT_CONST       371
181 #define LLT_DOUBLE      372
182 #define LLT_ENUM        373
183 #define LLT_FLOAT       374
184 #define LLT_INT 375
185 #define LLT_ITER        376
186 #define LLT_YIELD       377
187 #define LLT_LONG        378
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
195 #define LLT_VOID        386
196 #define LLT_VOLATILE    387
197 #define LLT_PRINTFLIKE  388
198 #define LLT_SCANFLIKE   389
199 #define LLT_MESSAGELIKE 390
200
201
202
203 # include "splintMacros.nf"
204 # include "llbasic.h"
205 # include "lclscan.h"
206 # include "checking.h"
207 # include "lslparse.h" 
208 # include "lh.h"
209 # include "usymtab_interface.h"
210
211 /*@-noparams@*/
212 static /*@unused@*/ void yyprint ();
213 /*@=noparams@*/
214
215 /*@-redecl@*/
216 void ylerror (char *) /*@modifies *g_warningstream@*/ ;
217 /*@=redecl@*/
218
219 bool g_inTypeDef = FALSE;
220
221 /*@constant int YYDEBUG;@*/
222 # define YYDEBUG 1
223
224 /*@notfunction@*/
225 # define YYPRINT(file, type, value) yyprint (file, type, value)
226
227 /*
228 ** This is necessary, or else when the bison-generated code #include's malloc.h,
229 ** there will be a parse error.
230 **
231 ** Unfortunately, it means the error checking on malloc, etc. is lost for allocations
232 ** in bison-generated files under Win32.
233 */
234
235 # ifdef WIN32
236 # undef malloc
237 # undef calloc
238 # undef realloc
239 # endif
240
241
242 typedef union 
243 {
244   ltoken ltok;  /* a leaf is also an ltoken */
245   qual typequal;
246   unsigned int count;
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   /*@only@*/ pointers pointers;
280   /*    taggedUnionNode taggedunion; */
281   /*@only@*/ globalList globals;
282   /*@only@*/ constDeclarationNode constdeclaration;
283   /*@only@*/ varDeclarationNode vardeclaration;
284   /*@only@*/ varDeclarationNodeList vardeclarationlist;
285   /*@only@*/ initDeclNodeList initdecls;
286   /*@only@*/ initDeclNode initdecl;
287   /*@only@*/ stDeclNodeList structdecls;
288   /*@only@*/ stDeclNode structdecl;
289   /*@only@*/ strOrUnionNode structorunion;
290   /*@only@*/ enumSpecNode enumspec; 
291   /*@only@*/ lclTypeSpecNode lcltypespec;
292   /*@only@*/ typeNameNode typname;
293   /*@only@*/ opFormNode opform;
294   /*@only@*/ sigNode signature;
295   /*@only@*/ nameNode name;
296   /*@only@*/ typeNameNodeList namelist;
297   /*@only@*/ replaceNode replace;       
298   /*@only@*/ replaceNodeList replacelist;
299   /*@only@*/ renamingNode renaming;
300   /*@only@*/ traitRefNode traitref;
301   /*@only@*/ traitRefNodeList traitreflist;
302   /*@only@*/ importNode import;
303   /*@only@*/ importNodeList importlist;
304   /*@only@*/ interfaceNode iface;
305   /*@only@*/ interfaceNodeList interfacelist; 
306   /*@only@*/ CTypesNode ctypes;
307   /*@-redef@*/
308 } YYSTYPE;
309 #ifndef YYDEBUG
310 #define YYDEBUG 1
311 #endif
312
313 #include <stdio.h>
314
315 #ifndef __cplusplus
316 #ifndef __STDC__
317 #define const
318 #endif
319 #endif
320
321
322
323 #define YYFINAL         684
324 #define YYFLAG          -32768
325 #define YYNTBASE        137
326
327 #define YYTRANSLATE(x) ((unsigned)(x) <= 390 ? yytranslate[x] : 291)
328
329 static const short yytranslate[] = {     0,
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,     2,     2,     2,     2,     2,
355      2,     2,     2,     2,     2,     1,     3,     4,     5,     6,
356      7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
357     17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
358     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
359     37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
360     47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
361     57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
362     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
363     77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
364     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
365     97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
366    107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
367    117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
368    127,   128,   129,   130,   131,   132,   133,   134,   135,   136
369 };
370
371 #if YYDEBUG != 0
372 static const short yyprhs[] = {     0,
373      0,     1,     5,     6,     9,    11,    13,    14,    17,    20,
374     21,    24,    26,    28,    30,    34,    38,    40,    42,    44,
375     46,    48,    50,    57,    58,    60,    62,    66,    69,    71,
376     72,    76,    78,    80,    82,    84,    89,    93,    98,   103,
377    105,   107,   109,   111,   113,   114,   128,   129,   144,   145,
378    159,   164,   165,   166,   173,   174,   175,   183,   184,   185,
379    193,   194,   195,   202,   203,   204,   211,   214,   217,   219,
380    223,   225,   229,   231,   233,   237,   239,   241,   245,   247,
381    252,   256,   263,   265,   269,   271,   273,   277,   279,   283,
382    285,   289,   293,   297,   302,   304,   306,   308,   310,   312,
383    316,   318,   322,   323,   326,   330,   333,   336,   337,   340,
384    345,   346,   350,   352,   356,   362,   366,   368,   369,   373,
385    374,   378,   379,   383,   387,   391,   393,   397,   399,   401,
386    404,   406,   408,   409,   413,   414,   418,   419,   421,   423,
387    425,   429,   431,   435,   436,   441,   447,   449,   453,   456,
388    460,   464,   469,   473,   479,   486,   488,   492,   494,   496,
389    499,   502,   506,   510,   514,   519,   521,   525,   530,   534,
390    535,   538,   539,   541,   542,   549,   551,   555,   556,   560,
391    561,   565,   567,   569,   571,   573,   575,   577,   579,   581,
392    583,   585,   587,   590,   592,   594,   596,   598,   600,   602,
393    604,   606,   608,   610,   612,   614,   616,   618,   620,   622,
394    624,   626,   628,   630,   632,   634,   636,   638,   640,   642,
395    644,   646,   648,   650,   652,   654,   656,   658,   660,   662,
396    664,   666,   668,   670,   672,   675,   681,   683,   686,   688,
397    691,   692,   699,   700,   707,   710,   713,   714,   716,   718,
398    721,   725,   727,   731,   732,   734,   741,   744,   746,   750,
399    752,   754,   756,   760,   763,   766,   770,   775,   777,   781,
400    784,   787,   791,   796,   798,   801,   804,   808,   813,   816,
401    819,   822,   825,   829,   831,   832,   834,   838,   841,   843,
402    845,   848,   852,   856,   861,   864,   868,   875,   877,   880,
403    883,   887,   891,   896,   901,   907,   911,   916,   921,   927,
404    930,   933,   937,   941,   943,   945,   947,   949,   951,   953,
405    955,   956,   958,   960,   964,   966,   968,   973,   974,   976,
406    978,   982,   984,   986,   993,   995,   999,  1001,  1006,  1010,
407   1014,  1016,  1019,  1022,  1024,  1026,  1028,  1031,  1033,  1036,
408   1039,  1043,  1045,  1047,  1050,  1053,  1057,  1059,  1062,  1066,
409   1068,  1074,  1078,  1083,  1086,  1090,  1093,  1095,  1099,  1103,
410   1105,  1110,  1112,  1115,  1119,  1123,  1127,  1132,  1136,  1138,
411   1142,  1144,  1146,  1148,  1150,  1152,  1154,  1159,  1164,  1169,
412   1174,  1181,  1186,  1188,  1190,  1192,  1194,  1196,  1199,  1200,
413   1204,  1206,  1210,  1214,  1219,  1221,  1223,  1225,  1227,  1229,
414   1231,  1233,  1235
415 };
416
417 static const short yyrhs[] = {    -1,
418    139,   138,   141,     0,     0,   139,   140,     0,   144,     0,
419    145,     0,     0,   146,   142,     0,   151,   142,     0,     0,
420    142,   143,     0,   146,     0,   151,     0,   145,     0,    57,
421    175,     7,     0,   115,   179,     7,     0,   154,     0,   155,
422      0,   156,     0,   158,     0,   161,     0,   147,     0,   122,
423    285,    10,   148,    37,     7,     0,     0,   149,     0,   150,
424      0,   149,    32,   150,     0,   123,   244,     0,   244,     0,
425      0,   109,   152,   153,     0,   154,     0,   155,     0,   156,
426      0,   158,     0,    50,   227,   189,     7,     0,   227,   189,
427      7,     0,   117,   227,   189,     7,     0,   133,   227,   189,
428      7,     0,   163,     0,   172,     0,   134,     0,   135,     0,
429    136,     0,     0,   227,   240,   191,   159,    34,   193,   195,
430    199,   200,   201,   204,   205,    35,     0,     0,   157,   227,
431    240,   191,   160,    34,   193,   195,   199,   200,   201,   204,
432    205,    35,     0,     0,    48,   287,    10,   206,    37,   191,
433    162,    34,   195,   200,   209,   204,    35,     0,    48,   284,
434    287,     7,     0,     0,     0,    62,   164,   112,    20,   165,
435    214,     0,     0,     0,    62,   166,    97,   112,    20,   167,
436    214,     0,     0,     0,    97,    62,   168,   112,    20,   169,
437    214,     0,     0,     0,    56,   170,   112,    20,   171,   214,
438      0,     0,     0,   113,   227,   173,   219,   174,     7,     0,
439    230,     7,     0,   238,     7,     0,   176,     0,   175,    32,
440    176,     0,   178,     0,     3,   178,     3,     0,    43,     0,
441    178,     0,   177,    32,   178,     0,   283,     0,   180,     0,
442    179,    32,   180,     0,   289,     0,   289,    10,   182,    37,
443      0,    10,   181,    37,     0,    10,   181,    37,    10,   182,
444     37,     0,   289,     0,   181,    32,   289,     0,   184,     0,
445    183,     0,   183,    32,   184,     0,   245,     0,   183,    32,
446    245,     0,   185,     0,   184,    32,   185,     0,   245,    53,
447    223,     0,   245,    53,   186,     0,   245,    53,   186,   256,
448      0,   290,     0,   249,     0,   188,     0,   260,     0,   190,
449      0,   189,    32,   190,     0,   240,     0,   240,    33,   187,
450      0,     0,   191,   192,     0,   227,   189,     7,     0,    64,
451      7,     0,    65,     7,     0,     0,   193,   194,     0,   105,
452    227,   189,     7,     0,     0,    60,   196,     7,     0,   197,
453      0,   196,    32,   197,     0,   285,    31,   198,    46,   260,
454      0,   285,    46,   260,     0,   227,     0,     0,    49,   259,
455      7,     0,     0,   106,   259,     7,     0,     0,    61,    63,
456      7,     0,    61,    45,     7,     0,    61,   202,     7,     0,
457    203,     0,   202,    32,   203,     0,   260,     0,   228,     0,
458     66,   228,     0,    64,     0,    65,     0,     0,    52,   259,
459      7,     0,     0,    48,   259,     7,     0,     0,   207,     0,
460    208,     0,   129,     0,   208,    32,   129,     0,   244,     0,
461    208,    32,   244,     0,     0,    47,    34,   210,    35,     0,
462     47,    34,   210,     7,    35,     0,   211,     0,    10,   210,
463     37,     0,   210,     6,     0,   210,     8,   210,     0,   210,
464      7,   210,     0,   284,    10,   212,    37,     0,   284,    10,
465     37,     0,   285,    33,   284,    10,    37,     0,   285,    33,
466    284,    10,   212,    37,     0,   213,     0,   212,    32,   213,
467      0,   277,     0,   285,     0,     3,   213,     0,   213,     3,
468      0,   213,     3,   213,     0,    10,   213,    37,     0,   284,
469     10,    37,     0,   284,    10,   212,    37,     0,     7,     0,
470     34,   215,    35,     0,    34,   177,    35,     7,     0,    34,
471     35,     7,     0,     0,   215,   158,     0,     0,   217,     0,
472      0,    58,   218,   279,    10,   259,    37,     0,   220,     0,
473    219,    32,   220,     0,     0,   240,   221,   222,     0,     0,
474     34,   216,    35,     0,   132,     0,   116,     0,   118,     0,
475    120,     0,   121,     0,   124,     0,   125,     0,   126,     0,
476    131,     0,   127,     0,   223,     0,   224,   223,     0,    20,
477      0,   224,     0,    67,     0,    78,     0,    68,     0,    69,
478      0,    71,     0,    72,     0,    73,     0,    74,     0,    95,
479      0,    79,     0,    80,     0,    82,     0,    83,     0,    81,
480      0,    75,     0,    76,     0,    77,     0,    87,     0,    88,
481      0,    89,     0,    90,     0,    91,     0,    99,     0,   100,
482      0,    97,     0,    98,     0,   104,     0,   101,     0,    92,
483      0,    93,     0,    94,     0,    96,     0,    70,     0,   102,
484      0,    84,     0,    85,     0,   225,     0,   230,     0,   238,
485      0,   226,   227,     0,     8,   228,    31,   228,     8,     0,
486    227,     0,   227,   229,     0,     6,     0,   229,     6,     0,
487      0,   128,   233,   231,    34,   234,    35,     0,     0,   130,
488    233,   232,    34,   234,    35,     0,   128,   286,     0,   130,
489    286,     0,     0,   286,     0,   235,     0,   234,   235,     0,
490    227,   236,     7,     0,   240,     0,   236,    32,   240,     0,
491      0,    32,     0,   119,   233,    34,   239,   237,    35,     0,
492    119,   286,     0,    25,     0,   239,    32,    25,     0,   242,
493      0,   241,     0,   285,     0,    10,   241,    37,     0,     6,
494    241,     0,   241,   248,     0,   241,    10,    37,     0,   241,
495     10,   207,    37,     0,    20,     0,    10,   242,    37,     0,
496      6,   242,     0,   242,   248,     0,   242,    10,    37,     0,
497    242,    10,   207,    37,     0,    20,     0,     6,   243,     0,
498    243,   248,     0,   243,    10,    37,     0,   243,    10,   207,
499     37,     0,   227,   243,     0,   227,   241,     0,   227,   246,
500      0,   227,   246,     0,    66,   227,   246,     0,   249,     0,
501      0,   247,     0,    10,   247,    37,     0,     6,   247,     0,
502      6,     0,   248,     0,   247,   248,     0,   247,    10,    37,
503      0,    10,   207,    37,     0,   247,    10,   207,    37,     0,
504     11,    36,     0,    11,   188,    36,     0,    55,    27,   111,
505     27,    51,    27,     0,   252,     0,    27,   252,     0,   252,
506     27,     0,    27,   252,    27,     0,   250,   253,   251,     0,
507     27,   250,   253,   251,     0,   250,   253,   251,    27,     0,
508     27,   250,   253,   251,    27,     0,    11,   253,    36,     0,
509     11,   253,    36,    27,     0,    27,    11,   253,    36,     0,
510     27,    11,   253,    36,    27,     0,    12,   283,     0,    26,
511    283,     0,    27,    12,   283,     0,    27,    26,   283,     0,
512     22,     0,    34,     0,    23,     0,    35,     0,   264,     0,
513     14,     0,    39,     0,     0,   254,     0,    27,     0,   254,
514    255,    27,     0,    32,     0,    24,     0,    31,   257,    26,
515    288,     0,     0,   258,     0,   288,     0,   258,    32,   288,
516      0,   260,     0,   261,     0,    55,   261,   111,   261,    51,
517    261,     0,   262,     0,   261,    14,   261,     0,   263,     0,
518    278,    10,   259,    37,     0,   263,    39,   263,     0,   263,
519     33,   263,     0,   265,     0,   268,   266,     0,   268,   267,
520      0,     3,     0,     6,     0,   268,     0,   264,   265,     0,
521    264,     0,   266,   264,     0,   264,   268,     0,   267,   264,
522    268,     0,   273,     0,   269,     0,   269,   273,     0,   273,
523    269,     0,   273,   269,   273,     0,   270,     0,   270,   273,
524      0,   271,    31,   288,     0,   271,     0,    11,   272,    36,
525     31,   288,     0,    11,   272,    36,     0,    11,    36,    31,
526    288,     0,    11,    36,     0,   250,   272,   251,     0,   250,
527    251,     0,   260,     0,   272,   255,   260,     0,    10,   261,
528     37,     0,   285,     0,   290,    10,   274,    37,     0,   276,
529      0,   273,   275,     0,   273,    12,   283,     0,   273,    26,
530    283,     0,   273,    11,    36,     0,   273,    11,   274,    36,
531      0,   273,    31,   288,     0,   261,     0,   274,    32,   261,
532      0,    28,     0,    29,     0,    30,     0,    38,     0,   277,
533      0,   107,     0,    54,    10,   274,    37,     0,   114,    10,
534     44,    37,     0,   114,    10,   202,    37,     0,   108,    10,
535    260,    37,     0,    59,    10,   260,    32,   260,    37,     0,
536    108,    10,   227,    37,     0,    42,     0,    43,     0,    40,
537      0,    41,     0,   279,     0,   278,   279,     0,     0,    21,
538    280,   281,     0,   282,     0,   281,    32,   282,     0,   285,
539     31,   198,     0,   285,    31,    66,   198,     0,    25,     0,
540     20,     0,    25,     0,    25,     0,   283,     0,   283,     0,
541    283,     0,   283,     0,   283,     0
542 };
543
544 #endif
545
546 #if YYDEBUG != 0
547 static const short yyrline[] = { 0,
548    382,   383,   386,   387,   390,   391,   394,   395,   396,   399,
549    400,   403,   404,   405,   408,   414,   418,   420,   422,   424,
550    426,   428,   432,   436,   437,   440,   442,   446,   447,   450,
551    451,   454,   456,   458,   460,   464,   468,   470,   472,   476,
552    477,   480,   481,   482,   485,   486,   493,   495,   506,   508,
553    511,   515,   515,   516,   517,   517,   519,   520,   521,   522,
554    523,   523,   524,   527,   528,   529,   530,   532,   548,   550,
555    554,   555,   557,   560,   561,   564,   568,   570,   574,   576,
556    578,   580,   584,   585,   588,   590,   592,   595,   597,   600,
557    602,   605,   606,   607,   611,   612,   614,   616,   619,   621,
558    625,   626,   629,   631,   635,   636,   637,   640,   641,   644,
559    648,   649,   652,   653,   656,   657,   659,   662,   663,   666,
560    667,   670,   671,   672,   673,   676,   677,   680,   681,   682,
561    683,   684,   687,   688,   691,   692,   695,   696,   699,   700,
562    701,   704,   705,   708,   709,   710,   713,   714,   717,   722,
563    728,   736,   738,   740,   742,   746,   747,   750,   751,   752,
564    753,   754,   755,   756,   758,   762,   763,   764,   765,   768,
565    769,   772,   773,   776,   776,   785,   786,   790,   791,   794,
566    795,   798,   799,   800,   801,   802,   803,   804,   805,   806,
567    807,   815,   816,   821,   823,   829,   830,   831,   832,   833,
568    834,   835,   836,   837,   838,   839,   840,   841,   842,   843,
569    844,   845,   846,   847,   848,   849,   850,   851,   852,   853,
570    854,   855,   856,   857,   858,   859,   860,   861,   862,   863,
571    864,   867,   869,   871,   873,   875,   884,   885,   890,   891,
572    894,   896,   898,   900,   902,   904,   908,   909,   912,   913,
573    918,   921,   923,   927,   928,   931,   933,   937,   938,   948,
574    949,   952,   953,   954,   955,   956,   957,   960,   961,   962,
575    963,   964,   965,   974,   975,   976,   977,   978,   984,   985,
576    986,   996,   997,   998,  1003,  1004,  1007,  1008,  1009,  1010,
577   1011,  1012,  1013,  1014,  1017,  1018,  1021,  1023,  1025,  1027,
578   1029,  1032,  1034,  1036,  1038,  1040,  1042,  1050,  1052,  1054,
579   1057,  1060,  1063,  1068,  1069,  1072,  1073,  1076,  1077,  1078,
580   1081,  1082,  1085,  1086,  1089,  1090,  1093,  1096,  1097,  1100,
581   1101,  1104,  1107,  1113,  1115,  1116,  1119,  1120,  1125,  1127,
582   1131,  1132,  1133,  1136,  1137,  1140,  1141,  1144,  1145,  1148,
583   1149,  1152,  1153,  1154,  1155,  1156,  1157,  1158,  1161,  1162,
584   1165,  1168,  1170,  1174,  1178,  1179,  1182,  1183,  1186,  1188,
585   1190,  1192,  1193,  1195,  1197,  1199,  1202,  1204,  1208,  1209,
586   1212,  1213,  1214,  1215,  1218,  1219,  1220,  1221,  1222,  1223,
587   1228,  1234,  1244,  1245,  1246,  1247,  1250,  1252,  1256,  1260,
588   1263,  1264,  1267,  1268,  1271,  1272,  1275,  1276,  1277,  1278,
589   1279,  1280,  1281
590 };
591 #endif
592
593
594 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
595
596 static const char * const yytname[] = {   "$","error","$undefined.","simpleOp",
597 "PREFIX_OP","POSTFIX_OP","LLT_MULOP","LLT_SEMI","LLT_VERTICALBAR","ITERATION_OP",
598 "LLT_LPAR","LLT_LBRACKET","selectSym","LLT_IF_THEN_ELSE","logicalOp","eqSepSym",
599 "equationSym","commentSym","LLT_WHITESPACE","LLT_EOL","LLT_TYPEDEF_NAME","quantifierSym",
600 "openSym","closeSym","sepSym","simpleId","mapSym","markerSym","preSym","postSym",
601 "anySym","LLT_COLON","LLT_COMMA","LLT_EQUALS","LLT_LBRACE","LLT_RBRACE","LLT_RBRACKET",
602 "LLT_RPAR","LLT_QUOTE","eqOp","LLT_CCHAR","LLT_CFLOAT","LLT_CINTEGER","LLT_LCSTRING",
603 "LLT_ALL","LLT_ANYTHING","LLT_BE","LLT_BODY","LLT_CLAIMS","LLT_CHECKS","LLT_CONSTANT",
604 "LLT_ELSE","LLT_ENSURES","LLT_FOR","LLT_FRESH","LLT_IF","LLT_IMMUTABLE","LLT_IMPORTS",
605 "LLT_CONSTRAINT","LLT_ISSUB","LLT_LET","LLT_MODIFIES","LLT_MUTABLE","LLT_NOTHING",
606 "LLT_INTERNAL","LLT_FILESYS","LLT_OBJ","LLT_OUT","LLT_SEF","LLT_ONLY","LLT_PARTIAL",
607 "LLT_OWNED","LLT_DEPENDENT","LLT_KEEP","LLT_KEPT","LLT_TEMP","LLT_SHARED","LLT_UNIQUE",
608 "LLT_UNUSED","LLT_EXITS","LLT_MAYEXIT","LLT_NEVEREXIT","LLT_TRUEEXIT","LLT_FALSEEXIT",
609 "LLT_UNDEF","LLT_KILLED","LLT_CHECKMOD","LLT_CHECKED","LLT_UNCHECKED","LLT_CHECKEDSTRICT",
610 "LLT_TRUENULL","LLT_FALSENULL","LLT_LNULL","LLT_LNOTNULL","LLT_RETURNED","LLT_OBSERVER",
611 "LLT_EXPOSED","LLT_REFCOUNTED","LLT_REFS","LLT_RELNULL","LLT_RELDEF","LLT_KILLREF",
612 "LLT_NULLTERMINATED","LLT_TEMPREF","LLT_NEWREF","LLT_PRIVATE","LLT_REQUIRES",
613 "LLT_RESULT","LLT_SIZEOF","LLT_SPEC","LLT_TAGGEDUNION","LLT_THEN","LLT_TYPE",
614 "LLT_TYPEDEF","LLT_UNCHANGED","LLT_USES","LLT_CHAR","LLT_CONST","LLT_DOUBLE",
615 "LLT_ENUM","LLT_FLOAT","LLT_INT","LLT_ITER","LLT_YIELD","LLT_LONG","LLT_SHORT",
616 "LLT_SIGNED","LLT_UNKNOWN","LLT_STRUCT","LLT_TELIPSIS","LLT_UNION","LLT_UNSIGNED",
617 "LLT_VOID","LLT_VOLATILE","LLT_PRINTFLIKE","LLT_SCANFLIKE","LLT_MESSAGELIKE",
618 "interface","@1","externals","external","optDeclarations","declarations","declaration",
619 "imports","uses","export","iter","iterParamList","realIterParamList","iterParam",
620 "private","@2","private2","constDeclaration","varDeclaration","type","special",
621 "fcn","@3","@4","claim","@5","abstract","@6","@7","@8","@9","@10","@11","@12",
622 "@13","exposed","@14","@15","importNameList","importName","interfaceNameList",
623 "interfaceName","traitRefNodeList","traitRef","traitIdList","renaming","nameList",
624 "replaceNodeList","replace","name","initializer","constLclExpr","initDecls",
625 "initDecl","globals","globalDecl","privateInits","privateInit","optLetDecl",
626 "beDeclList","beDecl","sortSpec","optChecks","optRequire","optModify","storeRefList",
627 "storeRef","optEnsure","optClaim","optParamList","realParamList","paramList",
628 "optBody","callExpr","stmt","valueList","value","abstBody","fcns","optTypeInv",
629 "typeInv","@16","declaratorInvs","declaratorInv","@17","optExposedBody","CType",
630 "CTypes","typeSpecifier","specialQualifier","lclTypeSpec","lclType","pointers",
631 "structOrUnionSpec","@18","@19","optTagId","structDecls","structDecl","declaratorList",
632 "optCOMMA","enumSpec","enumeratorList","declarator","notype_decl","after_type_decl",
633 "parameter_decl","param","typeName","optAbstDeclarator","abstDeclarator","arrayQual",
634 "opForm","open","close","anyOp","middle","placeList","separator","signature",
635 "domain","sortList","lclPredicate","term","term0","equalityTerm","simpleOpTerm",
636 "simpleOp2","prefixOpTerm","postfixOps","infixOpPart","secondary","bracketed",
637 "sqBracketed","matched","args","primary","termList","stateFcn","lclPrimary",
638 "cLiteral","quantifiers","quantifier","@20","quantifiedList","quantified","simpleIdOrTypedefName",
639 "fcnId","varId","tagId","claimId","sortId","traitId","opId", NULL
640 };
641 #endif
642
643 static const short yyr1[] = {     0,
644    138,   137,   139,   139,   140,   140,   141,   141,   141,   142,
645    142,   143,   143,   143,   144,   145,   146,   146,   146,   146,
646    146,   146,   147,   148,   148,   149,   149,   150,   150,   152,
647    151,   153,   153,   153,   153,   154,   155,   155,   155,   156,
648    156,   157,   157,   157,   159,   158,   160,   158,   162,   161,
649    161,   164,   165,   163,   166,   167,   163,   168,   169,   163,
650    170,   171,   163,   173,   174,   172,   172,   172,   175,   175,
651    176,   176,   176,   177,   177,   178,   179,   179,   180,   180,
652    180,   180,   181,   181,   182,   182,   182,   183,   183,   184,
653    184,   185,   185,   185,   186,   186,   187,   188,   189,   189,
654    190,   190,   191,   191,   192,   192,   192,   193,   193,   194,
655    195,   195,   196,   196,   197,   197,   198,   199,   199,   200,
656    200,   201,   201,   201,   201,   202,   202,   203,   203,   203,
657    203,   203,   204,   204,   205,   205,   206,   206,   207,   207,
658    207,   208,   208,   209,   209,   209,   210,   210,   210,   210,
659    210,   211,   211,   211,   211,   212,   212,   213,   213,   213,
660    213,   213,   213,   213,   213,   214,   214,   214,   214,   215,
661    215,   216,   216,   218,   217,   219,   219,   221,   220,   222,
662    222,   223,   223,   223,   223,   223,   223,   223,   223,   223,
663    223,   224,   224,   225,   225,   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,   226,   226,   226,   226,   226,   226,   226,   226,   226,
667    226,   227,   227,   227,   227,   227,   228,   228,   229,   229,
668    231,   230,   232,   230,   230,   230,   233,   233,   234,   234,
669    235,   236,   236,   237,   237,   238,   238,   239,   239,   240,
670    240,   241,   241,   241,   241,   241,   241,   242,   242,   242,
671    242,   242,   242,   243,   243,   243,   243,   243,   244,   244,
672    244,   245,   245,   245,   246,   246,   247,   247,   247,   247,
673    247,   247,   247,   247,   248,   248,   249,   249,   249,   249,
674    249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
675    249,   249,   249,   250,   250,   251,   251,   252,   252,   252,
676    253,   253,   254,   254,   255,   255,   256,   257,   257,   258,
677    258,   259,   260,   261,   261,   261,   262,   262,   262,   262,
678    263,   263,   263,   264,   264,   265,   265,   266,   266,   267,
679    267,   268,   268,   268,   268,   268,   268,   268,   269,   269,
680    270,   270,   270,   270,   271,   271,   272,   272,   273,   273,
681    273,   273,   273,   273,   273,   273,   273,   273,   274,   274,
682    275,   275,   275,   275,   276,   276,   276,   276,   276,   276,
683    276,   276,   277,   277,   277,   277,   278,   278,   280,   279,
684    281,   281,   282,   282,   283,   283,   284,   285,   286,   287,
685    288,   289,   290
686 };
687
688 static const short yyr2[] = {     0,
689      0,     3,     0,     2,     1,     1,     0,     2,     2,     0,
690      2,     1,     1,     1,     3,     3,     1,     1,     1,     1,
691      1,     1,     6,     0,     1,     1,     3,     2,     1,     0,
692      3,     1,     1,     1,     1,     4,     3,     4,     4,     1,
693      1,     1,     1,     1,     0,    13,     0,    14,     0,    13,
694      4,     0,     0,     6,     0,     0,     7,     0,     0,     7,
695      0,     0,     6,     0,     0,     6,     2,     2,     1,     3,
696      1,     3,     1,     1,     3,     1,     1,     3,     1,     4,
697      3,     6,     1,     3,     1,     1,     3,     1,     3,     1,
698      3,     3,     3,     4,     1,     1,     1,     1,     1,     3,
699      1,     3,     0,     2,     3,     2,     2,     0,     2,     4,
700      0,     3,     1,     3,     5,     3,     1,     0,     3,     0,
701      3,     0,     3,     3,     3,     1,     3,     1,     1,     2,
702      1,     1,     0,     3,     0,     3,     0,     1,     1,     1,
703      3,     1,     3,     0,     4,     5,     1,     3,     2,     3,
704      3,     4,     3,     5,     6,     1,     3,     1,     1,     2,
705      2,     3,     3,     3,     4,     1,     3,     4,     3,     0,
706      2,     0,     1,     0,     6,     1,     3,     0,     3,     0,
707      3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
708      1,     1,     2,     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,     1,     1,     1,     1,     1,     1,
712      1,     1,     1,     1,     2,     5,     1,     2,     1,     2,
713      0,     6,     0,     6,     2,     2,     0,     1,     1,     2,
714      3,     1,     3,     0,     1,     6,     2,     1,     3,     1,
715      1,     1,     3,     2,     2,     3,     4,     1,     3,     2,
716      2,     3,     4,     1,     2,     2,     3,     4,     2,     2,
717      2,     2,     3,     1,     0,     1,     3,     2,     1,     1,
718      2,     3,     3,     4,     2,     3,     6,     1,     2,     2,
719      3,     3,     4,     4,     5,     3,     4,     4,     5,     2,
720      2,     3,     3,     1,     1,     1,     1,     1,     1,     1,
721      0,     1,     1,     3,     1,     1,     4,     0,     1,     1,
722      3,     1,     1,     6,     1,     3,     1,     4,     3,     3,
723      1,     2,     2,     1,     1,     1,     2,     1,     2,     2,
724      3,     1,     1,     2,     2,     3,     1,     2,     3,     1,
725      5,     3,     4,     2,     3,     2,     1,     3,     3,     1,
726      4,     1,     2,     3,     3,     3,     4,     3,     1,     3,
727      1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
728      6,     4,     1,     1,     1,     1,     1,     2,     0,     3,
729      1,     3,     3,     4,     1,     1,     1,     1,     1,     1,
730      1,     1,     1
731 };
732
733 static const short yydefact[] = {     3,
734      1,     0,     0,     7,     4,     5,     6,     0,   406,   405,
735     73,     0,    69,    71,    76,     0,     0,    77,   412,    79,
736      0,   194,     0,     0,    61,    52,   196,   198,   199,   228,
737    200,   201,   202,   203,   210,   211,   212,   197,   205,   206,
738    209,   207,   208,   230,   231,   213,   214,   215,   216,   217,
739    224,   225,   226,   204,   227,   220,   221,   218,   219,   223,
740    229,   222,    30,     0,   183,     0,   184,   247,   185,   186,
741      0,   187,   188,   189,   191,   247,   247,   190,   182,     0,
742     42,    43,    44,     2,    10,    22,    10,    17,    18,    19,
743      0,    20,    21,    40,    41,   192,   195,   232,     0,     0,
744    233,   234,     0,    15,     0,     0,    83,    16,     0,     0,
745    220,   237,     0,   233,   234,   407,   410,     0,     0,     0,
746      0,     0,     0,    58,     0,    64,     0,     0,   409,   257,
747    408,     0,   241,   245,   243,   246,     0,     8,     9,     0,
748    193,   235,     0,     0,   268,     0,    99,   103,   261,   260,
749    262,    67,    68,    72,    70,     0,    81,    78,   344,   345,
750    321,     0,   319,   314,     0,     0,   315,   320,     0,     0,
751      0,    86,    85,    90,   285,    88,   284,   321,   298,   318,
752    239,   238,     0,     0,   137,     0,   101,     0,     0,     0,
753      0,    31,    32,    33,    34,    35,     0,     0,     0,    24,
754      0,     0,     0,    11,    14,    12,    13,   103,   264,   270,
755      0,     0,    37,     0,     0,    45,     0,     0,   265,     0,
756    271,    84,     0,   323,     0,   322,   310,   311,   321,     0,
757      0,   321,   299,     0,   285,    80,     0,     0,   289,     0,
758    282,   286,   290,     0,     0,   300,   240,     0,    51,   140,
759      0,   138,   139,   285,   142,    36,    62,    53,     0,     0,
760     65,   176,   178,    38,   258,   254,     0,     0,    25,    26,
761     29,     0,     0,    39,    47,   263,   269,   100,     0,     0,
762    399,   408,   395,   396,   393,   394,     0,     0,     0,   386,
763      0,     0,   102,    97,     0,    98,   333,   335,   337,     0,
764    341,   346,   353,   357,   360,   352,   372,   385,     0,   397,
765    413,   370,     0,     0,     0,     0,   104,     0,   266,     0,
766    295,     0,   272,     0,     0,   306,   326,   325,     0,     0,
767    312,   313,     0,   301,     0,   283,    87,    89,    91,     0,
768    288,     0,     0,     0,   291,    93,    92,    96,    95,   316,
769    317,   302,   236,   103,     0,   289,     0,   274,   280,   279,
770    281,     0,     0,    56,    59,     0,     0,   180,   255,     0,
771     28,     0,     0,     0,     0,   249,     0,     0,     0,   364,
772    367,     0,     0,     0,     0,     0,     0,     0,   366,     0,
773      0,     0,     0,   347,   346,   348,   342,   343,   354,   358,
774      0,     0,     0,     0,   381,   382,   383,     0,   384,   355,
775    373,     0,   398,     0,   106,   107,   108,     0,   267,   296,
776    273,    82,   307,   324,   308,   303,     0,   293,   287,   292,
777      0,   328,    94,   304,    49,   141,   143,   275,   289,     0,
778    276,   166,   170,    63,    54,     0,     0,   177,    66,   172,
779    179,   259,   256,    23,    27,     0,   252,   242,   250,   244,
780    108,   369,     0,   362,     0,   400,   401,     0,   379,     0,
781      0,     0,   194,     0,     0,     0,   131,   132,     0,     0,
782    126,   129,   128,   365,   336,   340,   339,   350,   349,     0,
783    411,   359,   376,     0,   374,   375,   378,   356,     0,   332,
784      0,   111,   105,   309,   305,     0,   294,     0,   329,   330,
785      0,   277,     0,     0,     0,    74,     0,    57,    60,   174,
786      0,   173,   251,     0,   111,   363,     0,   368,     0,     0,
787      0,   387,     0,     0,   392,   390,   388,   130,     0,   389,
788    351,   377,   338,   371,     0,     0,   109,   118,   297,     0,
789      0,   111,   278,   169,     0,     0,   167,   171,     0,     0,
790    181,   253,   118,   361,   402,     0,   403,   117,   380,     0,
791      0,   127,     0,   113,     0,     0,     0,   120,   327,   331,
792    120,    75,   168,   103,     0,   120,   404,   334,   391,   112,
793      0,     0,     0,     0,     0,     0,   122,   144,     0,   122,
794    114,     0,   116,   110,   119,     0,     0,   133,     0,   133,
795      0,   133,     0,   121,     0,     0,     0,     0,   135,     0,
796      0,   175,   135,   115,   124,   123,   125,     0,     0,     0,
797      0,   408,     0,   147,     0,     0,    50,     0,   134,     0,
798     46,     0,   149,     0,     0,   145,     0,     0,    48,   136,
799      0,   148,   146,   151,   150,     0,     0,   153,     0,   156,
800    158,     0,   159,   407,     0,   160,     0,     0,   152,   161,
801      0,     0,   163,   157,   162,   164,     0,   154,     0,   165,
802    155,     0,     0,     0
803 };
804
805 static const short yydefgoto[] = {   682,
806      4,     1,     5,    84,   138,   204,     6,   205,   206,    86,
807    268,   269,   270,   207,   125,   192,    88,    89,    90,    91,
808     92,   316,   378,    93,   511,    94,   122,   363,   123,   446,
809    191,   447,   121,   362,    95,   197,   367,    12,    13,   515,
810     14,    17,    18,   106,   171,   172,   173,   174,   346,   293,
811    294,   146,   147,   216,   317,   502,   547,   548,   573,   574,
812    567,   578,   597,   608,   480,   481,   619,   630,   251,   342,
813    253,   610,   654,   634,   659,   660,   444,   517,   521,   522,
814    560,   261,   262,   368,   451,    96,    97,    98,    99,   254,
815    482,   182,   114,   201,   202,   128,   375,   376,   456,   370,
816    115,   266,   187,   149,   150,   360,   255,   176,   241,   242,
817    243,   177,   295,   352,   179,   225,   226,   465,   433,   508,
818    509,   499,   500,   297,   298,   299,   300,   301,   397,   398,
819    302,   303,   304,   305,   382,   306,   470,   411,   307,   308,
820    309,   310,   383,   466,   467,   311,   662,   312,   130,   119,
821    492,    20,   313
822 };
823
824 static const short yypact[] = {-32768,
825    -25,   136,   368,  1350,-32768,-32768,-32768,   181,-32768,-32768,
826 -32768,    94,-32768,-32768,-32768,   181,   110,-32768,-32768,    33,
827   2903,-32768,   182,  2903,-32768,    17,-32768,-32768,-32768,-32768,
828 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
829 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
830 -32768,-32768,-32768,-32768,-32768,   -11,-32768,-32768,-32768,-32768,
831 -32768,-32768,-32768,  2903,-32768,  2903,-32768,   181,-32768,-32768,
832    108,-32768,-32768,-32768,-32768,   181,   181,-32768,-32768,  2903,
833 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
834   2903,-32768,-32768,-32768,-32768,-32768,   399,-32768,  2903,   408,
835    155,   192,   205,-32768,   136,   204,-32768,-32768,   368,  1152,
836 -32768,   233,   223,-32768,-32768,   266,-32768,   181,   305,   408,
837    211,   235,   264,-32768,  1445,-32768,   408,   339,-32768,   347,
838 -32768,   377,-32768,   347,-32768,   347,   408,  1247,  1247,   408,
839 -32768,-32768,   408,   408,-32768,   196,-32768,   259,   322,   409,
840 -32768,-32768,-32768,-32768,-32768,   181,   387,-32768,-32768,-32768,
841    386,   181,-32768,-32768,   181,   534,-32768,-32768,   403,  2903,
842    410,   445,   453,-32768,   360,   439,-32768,   386,   474,-32768,
843 -32768,   496,  2903,   497,  2319,   239,   470,   486,   492,   401,
844    404,-32768,-32768,-32768,-32768,-32768,   408,   282,   493,  2414,
845    488,   494,   288,-32768,-32768,-32768,-32768,-32768,   322,   409,
846    121,   141,-32768,   408,  3200,  1836,  1933,  3059,-32768,  2030,
847 -32768,-32768,  1152,-32768,   499,   122,-32768,-32768,   386,   181,
848    181,   386,   502,   421,   360,-32768,  1152,  1152,   360,  1741,
849 -32768,   454,-32768,   328,    80,-32768,-32768,   525,-32768,-32768,
850    504,-32768,   507,   380,-32768,-32768,-32768,-32768,   522,   524,
851    515,-32768,-32768,-32768,-32768,   518,  2903,   514,   520,-32768,
852 -32768,  2903,  2903,-32768,  1836,-32768,-32768,-32768,  3200,  3109,
853 -32768,   266,-32768,-32768,-32768,-32768,   544,  3200,   545,-32768,
854    549,   551,-32768,-32768,  3033,-32768,   550,-32768,   114,  3226,
855 -32768,   374,   382,   382,   535,   193,-32768,-32768,   273,-32768,
856 -32768,-32768,   555,   560,   562,   536,-32768,   408,-32768,   537,
857 -32768,   539,-32768,   540,   541,   552,-32768,-32768,   553,   547,
858 -32768,-32768,    80,-32768,   554,-32768,   453,   439,-32768,   439,
859    454,   548,   177,  2127,-32768,   556,-32768,-32768,-32768,-32768,
860 -32768,   557,-32768,-32768,  2509,   380,  1644,-32768,   322,   469,
861 -32768,    47,    47,-32768,-32768,   408,   564,   538,   561,   559,
862 -32768,   569,  2414,   408,  2611,-32768,  2713,   558,    36,   565,
863 -32768,   293,   108,  3200,    10,  3200,  1022,   762,-32768,   220,
864   3200,  3226,  3226,-32768,-32768,   268,   374,   374,   275,   275,
865    181,  3150,   181,   181,-32768,-32768,-32768,   181,-32768,   382,
866 -32768,  3200,-32768,  3200,-32768,-32768,-32768,   314,-32768,-32768,
867 -32768,-32768,-32768,-32768,   563,   568,   566,-32768,-32768,-32768,
868    573,   181,-32768,-32768,  1836,-32768,-32768,   469,   354,  2224,
869 -32768,-32768,   165,-32768,-32768,    47,    47,-32768,-32768,   530,
870 -32768,-32768,-32768,-32768,-32768,   317,-32768,-32768,-32768,-32768,
871 -32768,-32768,   181,   567,  3200,   570,-32768,   572,   550,   362,
872   3200,   579,   581,   575,   577,   578,-32768,-32768,  2903,   384,
873 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   268,
874 -32768,-32768,-32768,   157,-32768,-32768,-32768,   275,   583,-32768,
875    397,    -8,-32768,-32768,-32768,   574,-32768,   590,   591,-32768,
876    571,-32768,   587,   592,   363,-32768,  1547,-32768,-32768,-32768,
877    594,-32768,-32768,   408,    -8,-32768,   181,-32768,   108,  2808,
878   3200,-32768,    28,  3200,-32768,-32768,-32768,-32768,   892,-32768,
879 -32768,-32768,-32768,-32768,   108,  2903,-32768,   582,-32768,   181,
880    181,   576,-32768,-32768,   181,   593,-32768,-32768,   408,   605,
881 -32768,-32768,   582,-32768,-32768,  2903,-32768,-32768,   550,  3200,
882    600,-32768,   331,-32768,   103,   408,  3200,   521,-32768,-32768,
883    521,-32768,-32768,-32768,   629,   521,-32768,   550,-32768,-32768,
884    108,  2903,  3200,   336,   634,  3200,   584,   597,  3200,   584,
885 -32768,   601,-32768,-32768,-32768,   639,   632,   596,   615,   596,
886    613,   596,  3200,-32768,   644,   648,   337,  3200,   608,    49,
887    623,-32768,   608,-32768,-32768,-32768,-32768,   652,  3200,   625,
888     49,   651,    50,-32768,   653,   631,-32768,   627,-32768,   658,
889 -32768,    63,-32768,   272,    49,-32768,   208,   642,-32768,-32768,
890     49,-32768,-32768,   660,-32768,   222,   222,-32768,   419,   666,
891 -32768,   661,-32768,-32768,   668,-32768,    41,   222,-32768,   316,
892    432,   468,-32768,   666,-32768,-32768,   426,-32768,   430,-32768,
893 -32768,   670,   676,-32768
894 };
895
896 static const short yypgoto[] = {-32768,
897 -32768,-32768,-32768,-32768,   595,-32768,-32768,   678,   677,-32768,
898 -32768,-32768,   307,   679,-32768,-32768,   610,   612,   616,-32768,
899   -121,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
900 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   580,-32768,
901     -6,-32768,   585,-32768,   461,-32768,   451,   452,-32768,-32768,
902    471,  -108,   478,  -188,-32768,   232,-32768,  -458,-32768,   127,
903   -473,   175,  -169,   142,   137,   206,  -206,   120,-32768,  -180,
904 -32768,-32768,  -507,-32768,  -190,  -230,  -318,-32768,-32768,-32768,
905 -32768,-32768,   381,-32768,-32768,   -89,-32768,-32768,-32768,    -3,
906    -18,-32768,    32,-32768,-32768,   407,   476,    68,-32768,-32768,
907     56,-32768,   -93,  -127,   344,   398,  -187,   257,  -182,  -213,
908   -101,   511,    30,  -267,   603,  -137,-32768,   586,-32768,-32768,
909 -32768,  -531,  -204,  -254,-32768,   105,   -46,   466,-32768,-32768,
910   -278,   455,-32768,-32768,   472,  -265,  -205,-32768,-32768,  -372,
911 -32768,  -303,-32768,-32768,   242,     7,   -23,   -38,   423,   656,
912   -377,    19,   531
913 };
914
915
916 #define YYLAST          3340
917
918
919 static const short yytable[] = {   118,
920    100,   103,   113,   196,   252,   413,   148,   141,    15,    19,
921    296,   186,   271,   296,    15,   209,   211,   112,   198,   275,
922    120,   395,    19,   391,   379,   341,   343,   389,   203,   117,
923    497,     2,   132,   385,   107,   101,   320,   399,   400,   324,
924    245,   391,   110,   670,   445,   595,   208,   219,   221,   391,
925    124,   545,   336,   442,   510,   643,   644,   645,   631,   102,
926    126,   151,   127,   180,   606,   426,   563,   611,   643,   651,
927    645,   361,   462,   632,   129,   381,   137,   673,   570,   371,
928    443,   151,   129,   129,   646,   526,   628,   140,   151,     3,
929    381,   330,   587,   581,   333,   142,   546,   640,   151,   652,
930    104,   151,   350,   263,   151,   151,   175,   219,   221,   219,
931    221,    15,   633,   -55,   351,    19,   108,   488,   602,   180,
932    471,   100,   484,   642,   117,   105,   359,   518,   519,   469,
933    217,   218,   131,   592,   100,   100,   485,   655,     8,   178,
934    345,   109,   341,   343,   498,   327,   392,   469,   593,   564,
935    220,   218,   393,   328,   347,     9,   101,   276,   151,   469,
936     10,   152,    19,   431,   248,   435,   235,   437,   227,   101,
937    101,   228,   579,   580,   222,   151,   180,   277,    11,   112,
938    102,   472,   475,   483,     9,   271,   344,   218,   531,    10,
939    180,   180,   542,   102,   102,   232,   494,   180,   153,   514,
940      9,     9,   213,   402,   403,    10,   116,   154,   501,   418,
941    656,   541,   318,   429,   164,   151,   533,   657,   404,   175,
942    405,   406,   407,   408,   656,   341,   167,   214,   209,   211,
943    409,   657,   632,   175,   175,   156,   331,   332,   181,   345,
944    157,   345,   350,   327,   658,   256,   632,   283,   284,   285,
945    286,   328,   178,   183,   351,   396,   585,   219,   441,   513,
946    528,   283,   284,   285,   286,  -101,   178,   178,   374,   374,
947    214,   318,   263,   178,   661,  -405,   569,   279,   280,   151,
948    457,   631,   412,   661,   661,   402,   403,     9,   264,   164,
949   -101,   215,   282,   281,   274,   661,   632,   661,   661,   661,
950    404,   167,   405,   406,   407,   408,   653,   283,   284,   285,
951    286,   209,   409,   214,   185,   588,   327,   151,   151,   214,
952    503,   287,   188,   523,   328,   657,   289,   151,   464,   571,
953    159,   217,   218,   160,   483,   151,   441,   590,   161,   162,
954    632,   163,   604,   627,   468,   214,   189,     9,   524,   164,
955    489,   490,    10,   165,   166,   283,   284,   285,   286,   439,
956    190,   167,   591,   357,   218,   239,   168,   214,   539,   240,
957    218,   374,   199,   374,   290,   291,   159,    16,   131,   160,
958   -248,   292,   169,   474,   112,   356,   200,     9,   603,   357,
959    218,   279,    10,   531,   555,   558,   223,   556,   532,   358,
960    151,     9,   483,   621,   131,   623,   282,   491,   624,   495,
961    496,   598,   224,   143,   491,   539,   600,   144,   220,   218,
962    540,   283,   284,   285,   286,   666,   667,   145,   531,   234,
963    562,   318,   131,   544,   656,   287,   516,   674,   491,   675,
964    289,   657,   459,    65,   459,    67,   236,    69,    70,    15,
965    668,    72,    73,    74,    75,   669,   632,   668,    78,    79,
966    538,   668,   680,   344,   218,   584,   681,   594,   676,   491,
967    656,   283,   284,   285,   286,   112,   237,   657,   440,   218,
968    677,   679,   133,   135,   238,   151,   210,   212,   290,   291,
969    468,   244,   632,   338,   340,   292,   486,   487,   134,   136,
970    246,   247,   215,   249,   678,   257,   575,   283,   284,   285,
971    286,   258,   259,   559,    65,   260,    67,   265,    69,    70,
972    151,   272,    72,    73,    74,    75,   568,   273,   334,    78,
973     79,   335,   353,   491,   326,   112,   159,   151,   355,   160,
974    354,   364,   576,   365,   229,   230,   366,   163,   582,   369,
975    372,   373,   575,   384,   386,   164,   491,   491,   387,   231,
976    388,    15,   568,   391,   414,   401,   415,   167,   416,   417,
977    449,   450,   168,   419,   420,   454,   421,   422,   423,   424,
978    427,   636,   425,   434,   428,   452,   432,   520,   568,   504,
979   -406,   461,   636,   453,   505,   463,   635,   527,   554,   583,
980    549,   529,   530,   112,   552,   636,   636,   635,   663,   507,
981    534,   535,   636,   536,   537,   550,   506,   663,   663,   543,
982    635,   635,   551,   553,   665,   281,   596,   635,   561,   663,
983    577,   663,   663,   663,   159,   545,   589,   160,   599,    21,
984    605,   279,   280,   609,   607,   614,   613,   618,   620,   622,
985    625,   473,   281,   164,   626,   629,   282,   637,   639,   641,
986   -407,   649,   647,   648,   650,   167,   664,   645,   670,   683,
987    671,   283,   284,   285,   286,   684,   615,   672,     7,   455,
988     85,   139,    87,   325,   155,   287,   288,   337,   322,   339,
989    289,   278,   525,   158,   616,   477,   478,   479,    27,    28,
990     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
991     39,    40,    41,    42,    43,    44,    45,   601,    46,    47,
992     48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
993     58,    59,    60,    61,   193,    62,   194,   586,   290,   291,
994    195,   612,   638,   617,   572,   292,   448,    65,   377,    67,
995     68,    69,    70,   438,   348,    72,    73,    74,    75,    76,
996    410,    77,    78,    79,   159,   394,   390,   160,   233,    21,
997    565,   279,   280,   184,   349,     0,     0,     0,     0,     0,
998      0,   473,   281,   164,     0,     0,   282,     0,     0,     0,
999      0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
1000      0,   283,   284,   285,   286,   476,     0,     0,     0,     0,
1001      0,   329,     0,     0,     0,   287,   288,     0,     0,     0,
1002    289,     0,     0,     0,     0,   477,   478,   479,    27,    28,
1003     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1004     39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
1005     48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
1006     58,    59,    60,    61,     0,    62,     0,     0,   290,   291,
1007      0,     0,     0,     0,     0,   292,     0,    65,     0,    67,
1008     68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
1009      0,    77,    78,    79,   159,     0,     0,   160,     0,    21,
1010      0,   279,   280,     0,     0,     0,     0,     0,     0,     0,
1011      0,   473,   281,   164,     0,     0,   282,     0,     0,     0,
1012      0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
1013      0,   283,   284,   285,   286,     0,     0,     0,     0,     0,
1014      0,     0,     0,     0,     0,   287,   288,     0,     0,     0,
1015    289,     0,     0,     0,     0,   477,   478,   479,    27,    28,
1016     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1017     39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
1018     48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
1019     58,    59,    60,    61,     0,    62,     0,     0,   290,   291,
1020      0,     0,     0,     0,     0,   292,     0,    65,     0,    67,
1021     68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
1022      0,    77,    78,    79,   159,     0,     0,   160,     0,    21,
1023      0,   279,   280,     0,     0,     0,     0,     0,     0,     0,
1024      0,   473,   281,   164,     0,     0,   282,     0,     0,     0,
1025      0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
1026      0,   283,   284,   285,   286,     0,     0,     0,     0,     0,
1027      0,     0,     0,     0,     0,   287,   288,     0,     0,     0,
1028    289,     0,     0,     0,     0,     0,     0,     0,    27,    28,
1029     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1030     39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
1031     48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
1032     58,    59,    60,    61,     0,    62,     0,     0,   290,   291,
1033      0,     0,     0,     0,     0,   292,     0,    65,     0,    67,
1034     68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
1035      0,    77,    78,    79,   159,     0,     0,   160,     0,    21,
1036      0,     0,   161,   162,     0,   163,     0,     0,     0,     0,
1037      0,    22,     0,   164,     0,     0,     0,   165,   166,     0,
1038      0,     0,     0,     0,     0,   167,     0,     0,     0,     0,
1039    168,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1040      0,     0,     0,     0,     0,     0,   169,     0,     0,     0,
1041      0,     0,     0,     0,     0,     0,     0,   170,    27,    28,
1042     29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1043     39,    40,    41,    42,    43,    44,    45,     0,    46,    47,
1044     48,    49,    50,    51,    52,    53,    54,    55,   111,    57,
1045     58,    59,    60,    61,    21,    62,     0,     0,     0,     0,
1046      0,     0,     0,     0,     0,     0,    22,    65,     0,    67,
1047     68,    69,    70,     0,     0,    72,    73,    74,    75,    76,
1048      0,    77,    78,    79,     0,     0,     0,     0,     0,     0,
1049      0,     0,     0,     0,    23,     0,    24,     0,     0,     0,
1050      0,     0,    25,     0,     0,     0,     0,     0,    26,     0,
1051      0,     0,     0,    27,    28,    29,    30,    31,    32,    33,
1052     34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
1053     44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
1054     53,    54,    55,    56,    57,    58,    59,    60,    61,     0,
1055     62,     0,     0,     0,     0,    63,     0,    21,     0,    64,
1056      0,     3,    65,    66,    67,    68,    69,    70,    71,    22,
1057     72,    73,    74,    75,    76,     0,    77,    78,    79,    80,
1058     81,    82,    83,     0,     0,     0,     0,     0,     0,     0,
1059      0,     0,     0,     0,     0,     0,     0,    23,     0,    24,
1060      0,     0,     0,     0,     0,    25,     0,     0,     0,     0,
1061      0,    26,     0,     0,     0,     0,    27,    28,    29,    30,
1062     31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
1063     41,    42,    43,    44,    45,     0,    46,    47,    48,    49,
1064     50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
1065     60,    61,    21,    62,     0,     0,     0,     0,    63,     0,
1066      0,     0,    64,     0,    22,    65,    66,    67,    68,    69,
1067     70,    71,     0,    72,    73,    74,    75,    76,     0,    77,
1068     78,    79,    80,    81,    82,    83,     0,     0,     0,     0,
1069      0,     0,     0,     0,    24,     0,     0,     0,     0,     0,
1070     25,     0,     0,     0,     0,     0,    26,     0,     0,     0,
1071      0,    27,    28,    29,    30,    31,    32,    33,    34,    35,
1072     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
1073      0,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1074     55,    56,    57,    58,    59,    60,    61,     0,    62,     0,
1075      0,     0,     0,     0,    21,     0,     0,    64,     0,     0,
1076     65,    66,    67,    68,    69,    70,    22,     0,    72,    73,
1077     74,    75,    76,     0,    77,    78,    79,    80,    81,    82,
1078     83,   557,     0,     0,     0,     0,     0,     0,     0,     0,
1079      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1080      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1081      0,     0,     0,    27,    28,    29,    30,    31,    32,    33,
1082     34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
1083     44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
1084     53,    54,    55,   111,    57,    58,    59,    60,    61,   439,
1085     62,    21,     0,   357,   218,     0,     0,     0,     0,     0,
1086      0,     0,    65,    22,    67,    68,    69,    70,   131,     0,
1087     72,    73,    74,    75,    76,     0,    77,    78,    79,     0,
1088     81,    82,    83,     0,     0,     0,     0,     0,     0,     0,
1089      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1090      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1091     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1092     37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
1093     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
1094    111,    57,    58,    59,    60,    61,   239,    62,    21,     0,
1095    240,   218,     0,     0,     0,     0,     0,     0,     0,    65,
1096     22,    67,    68,    69,    70,     0,     0,    72,    73,    74,
1097     75,    76,   250,    77,    78,    79,     0,     0,     0,     0,
1098      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1099      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1100      0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
1101     30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
1102     40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
1103     49,    50,    51,    52,    53,    54,    55,   111,    57,    58,
1104     59,    60,    61,    21,    62,     0,     0,     0,     0,     0,
1105      0,     0,     0,     0,     0,    22,    65,     0,    67,    68,
1106     69,    70,     0,     0,    72,    73,    74,    75,    76,   250,
1107     77,    78,    79,     0,     0,     0,     0,     0,     0,     0,
1108      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1109      0,     0,     0,     0,     0,     0,     0,     0,     0,   314,
1110    315,     0,    27,    28,    29,    30,    31,    32,    33,    34,
1111     35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1112     45,     0,    46,    47,    48,    49,    50,    51,    52,    53,
1113     54,    55,   111,    57,    58,    59,    60,    61,     0,    62,
1114     21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1115      0,    65,    22,    67,    68,    69,    70,     0,     0,    72,
1116     73,    74,    75,    76,     0,    77,    78,    79,     0,   319,
1117      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1118      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1119      0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
1120     28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1121     38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
1122     47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
1123     57,    58,    59,    60,    61,     0,    62,    21,     0,     0,
1124      0,     0,     0,     0,     0,     0,     0,     0,    65,    22,
1125     67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
1126     76,   250,    77,    78,    79,     0,   323,     0,     0,     0,
1127      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1128      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1129      0,     0,     0,     0,     0,     0,    27,    28,    29,    30,
1130     31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
1131     41,    42,    43,    44,    45,     0,    46,    47,    48,    49,
1132     50,    51,    52,    53,    54,    55,   111,    57,    58,    59,
1133     60,    61,     0,    62,    21,     0,     0,     0,     0,     0,
1134      0,     0,     0,     0,     0,    65,    22,    67,    68,    69,
1135     70,     0,     0,    72,    73,    74,    75,    76,   250,    77,
1136     78,    79,     0,   430,     0,     0,     0,     0,     0,     0,
1137      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1138      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1139      0,     0,     0,    27,    28,    29,    30,    31,    32,    33,
1140     34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
1141     44,    45,     0,    46,    47,    48,    49,    50,    51,    52,
1142     53,    54,    55,   111,    57,    58,    59,    60,    61,     0,
1143     62,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1144      0,     0,    65,    22,    67,    68,    69,    70,     0,     0,
1145     72,    73,    74,    75,    76,   250,    77,    78,    79,     0,
1146    512,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1147      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1148      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1149     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1150     37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
1151     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
1152    111,    57,    58,    59,    60,    61,    21,    62,     0,     0,
1153      0,     0,     0,     0,     0,     0,     0,     0,    22,    65,
1154      0,    67,    68,    69,    70,     0,     0,    72,    73,    74,
1155     75,    76,   250,    77,    78,    79,     0,     0,     0,     0,
1156      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1157      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1158      0,     0,     0,     0,     0,    27,    28,    29,    30,    31,
1159     32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
1160     42,    43,    44,    45,     0,    46,    47,    48,    49,    50,
1161     51,    52,    53,    54,    55,   111,    57,    58,    59,    60,
1162     61,    21,    62,     0,     0,     0,     0,     0,     0,     0,
1163      0,     0,     0,    22,    65,     0,    67,    68,    69,    70,
1164      0,     0,    72,    73,    74,    75,    76,   250,    77,    78,
1165     79,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1166      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1167      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1168     27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
1169     37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
1170     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
1171    111,    57,    58,    59,    60,    61,    21,    62,     0,     0,
1172      0,     0,     0,     0,     0,     0,     0,     0,    22,    65,
1173      0,    67,    68,    69,    70,     0,   267,    72,    73,    74,
1174     75,    76,     0,    77,    78,    79,     0,     0,     0,     0,
1175      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1176      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1177      0,     0,     0,     0,     0,    27,    28,    29,    30,    31,
1178     32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
1179     42,    43,    44,    45,     0,    46,    47,    48,    49,    50,
1180     51,    52,    53,    54,    55,   111,    57,    58,    59,    60,
1181     61,     0,    62,     0,     0,     0,     0,     0,    21,     0,
1182      0,     0,     0,     0,    65,     0,    67,    68,    69,    70,
1183     22,     0,    72,    73,    74,    75,    76,   436,    77,    78,
1184     79,     0,     0,     0,     0,   458,     0,     0,     0,     0,
1185      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1186      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1187      0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
1188     30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
1189     40,    41,    42,    43,    44,    45,     0,    46,    47,    48,
1190     49,    50,    51,    52,    53,    54,    55,   111,    57,    58,
1191     59,    60,    61,     0,    62,     0,     0,     0,     0,     0,
1192     21,     0,     0,     0,     0,     0,    65,     0,    67,    68,
1193     69,    70,    22,     0,    72,    73,    74,    75,    76,     0,
1194     77,    78,    79,     0,     0,     0,     0,   460,     0,     0,
1195      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1196      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1197      0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
1198     28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1199     38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
1200     47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
1201     57,    58,    59,    60,    61,    21,    62,     0,     0,     0,
1202      0,     0,     0,     0,     0,     0,     0,    22,    65,     0,
1203     67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
1204     76,     0,    77,    78,    79,     0,     0,     0,     0,     0,
1205      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1206      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1207      0,     0,     0,   566,    27,    28,    29,    30,    31,    32,
1208     33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
1209     43,    44,    45,     0,    46,    47,    48,    49,    50,    51,
1210     52,    53,    54,    55,   111,    57,    58,    59,    60,    61,
1211     21,    62,     0,     0,     0,     0,     0,     0,     0,     0,
1212      0,     0,    22,    65,     0,    67,    68,    69,    70,     0,
1213      0,    72,    73,    74,    75,    76,     0,    77,    78,    79,
1214      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1215      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1216      0,     0,     0,     0,     0,     0,     0,     0,     0,    27,
1217     28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1218     38,    39,    40,    41,    42,    43,    44,    45,     0,    46,
1219     47,    48,    49,    50,    51,    52,    53,    54,    55,   111,
1220     57,    58,    59,    60,    61,     0,    62,     0,     0,     0,
1221      0,     0,     0,     0,     0,     0,     0,     0,    65,     0,
1222     67,    68,    69,    70,     0,     0,    72,    73,    74,    75,
1223     76,     0,    77,    78,    79,   159,     0,     0,   160,     0,
1224      0,     0,   279,   280,     0,     0,     0,     0,     0,     0,
1225      0,     0,     9,   281,   164,   350,     0,   282,     0,     0,
1226      0,   159,     0,     0,   160,     0,   167,   351,   279,   280,
1227      0,     0,   283,   284,   285,   286,     0,     0,     9,   281,
1228    164,     0,     0,   282,     0,     0,   287,   288,     0,     0,
1229      0,   289,   167,     0,   321,     0,     0,     0,   283,   284,
1230    285,   286,     0,     0,     0,     0,     0,     0,     0,     0,
1231      0,   159,   287,   288,   160,     0,     0,   289,   279,   280,
1232      0,     0,     0,     0,     0,     0,     0,     0,     9,   281,
1233    164,     0,     0,   282,     0,     0,     0,     0,     0,   290,
1234    291,     0,   167,     0,   380,     0,   292,     0,   283,   284,
1235    285,   286,   159,     0,     0,   160,     0,     0,     0,   279,
1236    280,     0,   287,   288,     0,   290,   291,   289,     0,     9,
1237    281,   164,   292,     0,   282,     0,     0,     0,     0,     0,
1238      0,     0,     0,   167,     0,   493,     0,     0,     0,   283,
1239    284,   285,   286,     0,     0,     0,     0,     0,     0,     0,
1240      0,     0,   159,   287,   288,   160,     0,     0,   289,   279,
1241    280,     0,     0,     0,     0,   290,   291,     0,     0,     9,
1242    281,   164,   292,     0,   282,     0,     0,     0,   159,     0,
1243      0,   160,     0,   167,     0,   279,   280,     0,     0,   283,
1244    284,   285,   286,     0,     0,     9,     0,   164,     0,     0,
1245    282,     0,     0,   287,   288,     0,   290,   291,   289,   167,
1246      0,     0,     0,   292,     0,   283,   284,   285,   286,     0,
1247      0,     0,     0,     0,     0,     0,     0,     0,     0,   287,
1248      0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
1249      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1250      0,     0,     0,     0,     0,     0,   290,   291,     0,     0,
1251      0,     0,     0,   292,     0,     0,     0,     0,     0,     0,
1252      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1253      0,     0,   290,   291,     0,     0,     0,     0,     0,   292
1254 };
1255
1256 static const short yycheck[] = {    23,
1257      4,     8,    21,   125,   185,   309,   100,    97,     2,     3,
1258    215,   120,   200,   218,     8,   143,   144,    21,   127,   208,
1259     24,   300,    16,    14,   279,   239,   240,   295,   137,    23,
1260    408,    57,    71,   288,    16,     4,   217,   303,   304,   220,
1261    178,    14,    10,     3,   363,   577,   140,   149,   150,    14,
1262     62,    60,   235,     7,   432,     6,     7,     8,    10,     4,
1263     64,   100,    66,   110,   596,   333,   525,   599,     6,     7,
1264      8,   254,    37,    25,    68,   280,    80,    37,    51,   267,
1265     34,   120,    76,    77,    35,   463,   618,    91,   127,   115,
1266    295,   229,   566,   552,   232,    99,   105,   629,   137,    37,
1267      7,   140,    23,   197,   143,   144,   110,   209,   210,   211,
1268    212,   105,   620,    97,    35,   109,     7,   396,   592,   166,
1269    111,   125,   390,   631,   118,    32,   254,   446,   447,   384,
1270     10,    11,    25,    31,   138,   139,   391,   645,     3,   110,
1271    242,    32,   356,   357,   410,    24,    33,   402,    46,   527,
1272     10,    11,    39,    32,   244,    20,   125,    37,   197,   414,
1273     25,     7,   156,   344,   183,   354,   170,   355,   162,   138,
1274    139,   165,   550,   551,   156,   214,   223,    37,    43,   183,
1275    125,   386,   387,   388,    20,   373,    10,    11,    32,    25,
1276    237,   238,    36,   138,   139,   166,   402,   244,     7,    35,
1277     20,    20,     7,    11,    12,    25,    25,     3,   414,   318,
1278      3,   490,   216,    37,    22,   254,   471,    10,    26,   223,
1279     28,    29,    30,    31,     3,   439,    34,    32,   356,   357,
1280     38,    10,    25,   237,   238,    32,   230,   231,     6,   341,
1281     37,   343,    23,    24,    37,     7,    25,    40,    41,    42,
1282     43,    32,   223,    31,    35,   302,   560,   359,   360,   440,
1283    465,    40,    41,    42,    43,     7,   237,   238,   272,   273,
1284     32,   275,   366,   244,   647,    10,   531,    10,    11,   318,
1285    374,    10,    10,   656,   657,    11,    12,    20,     7,    22,
1286     32,    33,    25,    21,     7,   668,    25,   670,   671,   672,
1287     26,    34,    28,    29,    30,    31,    35,    40,    41,    42,
1288     43,   439,    38,    32,    10,   570,    24,   356,   357,    32,
1289      7,    54,   112,     7,    32,    10,    59,   366,    36,   534,
1290      3,    10,    11,     6,   539,   374,   438,     7,    11,    12,
1291     25,    14,     7,     7,   383,    32,   112,    20,    32,    22,
1292    397,   398,    25,    26,    27,    40,    41,    42,    43,     6,
1293     97,    34,    32,    10,    11,     6,    39,    32,    32,    10,
1294     11,   375,    34,   377,   107,   108,     3,    10,    25,     6,
1295     34,   114,    55,   387,   388,     6,    10,    20,   593,    10,
1296     11,    10,    25,    32,    32,   517,    10,    35,    37,    20,
1297    439,    20,   607,   610,    25,   612,    25,   401,   613,   403,
1298    404,   581,    27,     6,   408,    32,   586,    10,    10,    11,
1299     37,    40,    41,    42,    43,   656,   657,    20,    32,    27,
1300    524,   435,    25,    37,     3,    54,   443,   668,   432,   670,
1301     59,    10,   375,   116,   377,   118,    37,   120,   121,   443,
1302     32,   124,   125,   126,   127,    37,    25,    32,   131,   132,
1303    479,    32,    37,    10,    11,   559,    37,   576,    37,   463,
1304      3,    40,    41,    42,    43,   479,    32,    10,    10,    11,
1305    671,   672,    76,    77,    32,   524,   143,   144,   107,   108,
1306    529,    53,    25,   237,   238,   114,   392,   393,    76,    77,
1307     27,     6,    33,     7,    37,    20,   545,    40,    41,    42,
1308     43,    20,   112,   517,   116,   112,   118,    25,   120,   121,
1309    559,    34,   124,   125,   126,   127,   530,    34,    27,   131,
1310    132,   111,     8,   527,    36,   539,     3,   576,    32,     6,
1311     37,    20,   546,    20,    11,    12,    32,    14,   555,    32,
1312     37,    32,   591,    10,    10,    22,   550,   551,    10,    26,
1313     10,   555,   566,    14,    10,    31,     7,    34,     7,    34,
1314      7,    34,    39,    37,    36,     7,    37,    37,    27,    27,
1315     27,   620,    36,    27,    37,    25,    31,    58,   592,    27,
1316     10,    34,   631,    35,    27,    31,   620,    31,     7,     7,
1317     27,    32,    31,   607,    34,   644,   645,   631,   647,    37,
1318     32,    37,   651,    37,    37,    26,    51,   656,   657,    37,
1319    644,   645,    32,    37,   648,    21,   106,   651,    35,   668,
1320     49,   670,   671,   672,     3,    60,    37,     6,    10,     8,
1321      7,    10,    11,    47,    61,     7,    46,    52,    34,    37,
1322      7,    20,    21,    22,     7,    48,    25,    35,     7,    35,
1323     10,    35,    10,    33,     7,    34,    25,     8,     3,     0,
1324     10,    40,    41,    42,    43,     0,    45,    10,     1,   373,
1325      4,    87,     4,   223,   105,    54,    55,   237,   218,   238,
1326     59,   214,   461,   109,    63,    64,    65,    66,    67,    68,
1327     69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
1328     79,    80,    81,    82,    83,    84,    85,   591,    87,    88,
1329     89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
1330     99,   100,   101,   102,   125,   104,   125,   563,   107,   108,
1331    125,   600,   623,   607,   539,   114,   366,   116,   273,   118,
1332    119,   120,   121,   356,   244,   124,   125,   126,   127,   128,
1333    306,   130,   131,   132,     3,   300,   295,     6,   166,     8,
1334    529,    10,    11,   118,   244,    -1,    -1,    -1,    -1,    -1,
1335     -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,    -1,
1336     -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
1337     -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,
1338     -1,   226,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,
1339     59,    -1,    -1,    -1,    -1,    64,    65,    66,    67,    68,
1340     69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
1341     79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
1342     89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
1343     99,   100,   101,   102,    -1,   104,    -1,    -1,   107,   108,
1344     -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,   118,
1345    119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
1346     -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,     8,
1347     -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1348     -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,    -1,
1349     -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
1350     -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
1351     -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,
1352     59,    -1,    -1,    -1,    -1,    64,    65,    66,    67,    68,
1353     69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
1354     79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
1355     89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
1356     99,   100,   101,   102,    -1,   104,    -1,    -1,   107,   108,
1357     -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,   118,
1358    119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
1359     -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,     8,
1360     -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1361     -1,    20,    21,    22,    -1,    -1,    25,    -1,    -1,    -1,
1362     -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
1363     -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
1364     -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,
1365     59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
1366     69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
1367     79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
1368     89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
1369     99,   100,   101,   102,    -1,   104,    -1,    -1,   107,   108,
1370     -1,    -1,    -1,    -1,    -1,   114,    -1,   116,    -1,   118,
1371    119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
1372     -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,     8,
1373     -1,    -1,    11,    12,    -1,    14,    -1,    -1,    -1,    -1,
1374     -1,    20,    -1,    22,    -1,    -1,    -1,    26,    27,    -1,
1375     -1,    -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,
1376     39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1377     -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
1378     -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    68,
1379     69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
1380     79,    80,    81,    82,    83,    84,    85,    -1,    87,    88,
1381     89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
1382     99,   100,   101,   102,     8,   104,    -1,    -1,    -1,    -1,
1383     -1,    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,   118,
1384    119,   120,   121,    -1,    -1,   124,   125,   126,   127,   128,
1385     -1,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,    -1,
1386     -1,    -1,    -1,    -1,    48,    -1,    50,    -1,    -1,    -1,
1387     -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    62,    -1,
1388     -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
1389     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1390     84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
1391     94,    95,    96,    97,    98,    99,   100,   101,   102,    -1,
1392    104,    -1,    -1,    -1,    -1,   109,    -1,     8,    -1,   113,
1393     -1,   115,   116,   117,   118,   119,   120,   121,   122,    20,
1394    124,   125,   126,   127,   128,    -1,   130,   131,   132,   133,
1395    134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1396     -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    50,
1397     -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,    -1,
1398     -1,    62,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
1399     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
1400     81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
1401     91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1402    101,   102,     8,   104,    -1,    -1,    -1,    -1,   109,    -1,
1403     -1,    -1,   113,    -1,    20,   116,   117,   118,   119,   120,
1404    121,   122,    -1,   124,   125,   126,   127,   128,    -1,   130,
1405    131,   132,   133,   134,   135,   136,    -1,    -1,    -1,    -1,
1406     -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
1407     56,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
1408     -1,    67,    68,    69,    70,    71,    72,    73,    74,    75,
1409     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1410     -1,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1411     96,    97,    98,    99,   100,   101,   102,    -1,   104,    -1,
1412     -1,    -1,    -1,    -1,     8,    -1,    -1,   113,    -1,    -1,
1413    116,   117,   118,   119,   120,   121,    20,    -1,   124,   125,
1414    126,   127,   128,    -1,   130,   131,   132,   133,   134,   135,
1415    136,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1416     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1417     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1418     -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
1419     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1420     84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
1421     94,    95,    96,    97,    98,    99,   100,   101,   102,     6,
1422    104,     8,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,
1423     -1,    -1,   116,    20,   118,   119,   120,   121,    25,    -1,
1424    124,   125,   126,   127,   128,    -1,   130,   131,   132,    -1,
1425    134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1426     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1427     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1428     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1429     77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
1430     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1431     97,    98,    99,   100,   101,   102,     6,   104,     8,    -1,
1432     10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,
1433     20,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
1434    127,   128,   129,   130,   131,   132,    -1,    -1,    -1,    -1,
1435     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1436     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1437     -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
1438     70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
1439     80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,
1440     90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
1441    100,   101,   102,     8,   104,    -1,    -1,    -1,    -1,    -1,
1442     -1,    -1,    -1,    -1,    -1,    20,   116,    -1,   118,   119,
1443    120,   121,    -1,    -1,   124,   125,   126,   127,   128,   129,
1444    130,   131,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1445     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1446     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
1447     65,    -1,    67,    68,    69,    70,    71,    72,    73,    74,
1448     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1449     85,    -1,    87,    88,    89,    90,    91,    92,    93,    94,
1450     95,    96,    97,    98,    99,   100,   101,   102,    -1,   104,
1451      8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1452     -1,   116,    20,   118,   119,   120,   121,    -1,    -1,   124,
1453    125,   126,   127,   128,    -1,   130,   131,   132,    -1,    37,
1454     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1455     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1456     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
1457     68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1458     78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
1459     88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1460     98,    99,   100,   101,   102,    -1,   104,     8,    -1,    -1,
1461     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    20,
1462    118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
1463    128,   129,   130,   131,   132,    -1,    37,    -1,    -1,    -1,
1464     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1465     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1466     -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,
1467     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
1468     81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
1469     91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
1470    101,   102,    -1,   104,     8,    -1,    -1,    -1,    -1,    -1,
1471     -1,    -1,    -1,    -1,    -1,   116,    20,   118,   119,   120,
1472    121,    -1,    -1,   124,   125,   126,   127,   128,   129,   130,
1473    131,   132,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
1474     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1475     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1476     -1,    -1,    -1,    67,    68,    69,    70,    71,    72,    73,
1477     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1478     84,    85,    -1,    87,    88,    89,    90,    91,    92,    93,
1479     94,    95,    96,    97,    98,    99,   100,   101,   102,    -1,
1480    104,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1481     -1,    -1,   116,    20,   118,   119,   120,   121,    -1,    -1,
1482    124,   125,   126,   127,   128,   129,   130,   131,   132,    -1,
1483     37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1484     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1485     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1486     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1487     77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
1488     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1489     97,    98,    99,   100,   101,   102,     8,   104,    -1,    -1,
1490     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,
1491     -1,   118,   119,   120,   121,    -1,    -1,   124,   125,   126,
1492    127,   128,   129,   130,   131,   132,    -1,    -1,    -1,    -1,
1493     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1494     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1495     -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,
1496     72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
1497     82,    83,    84,    85,    -1,    87,    88,    89,    90,    91,
1498     92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
1499    102,     8,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1500     -1,    -1,    -1,    20,   116,    -1,   118,   119,   120,   121,
1501     -1,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
1502    132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1503     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1504     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1505     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
1506     77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
1507     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1508     97,    98,    99,   100,   101,   102,     8,   104,    -1,    -1,
1509     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,
1510     -1,   118,   119,   120,   121,    -1,   123,   124,   125,   126,
1511    127,   128,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,
1512     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1513     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1514     -1,    -1,    -1,    -1,    -1,    67,    68,    69,    70,    71,
1515     72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
1516     82,    83,    84,    85,    -1,    87,    88,    89,    90,    91,
1517     92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
1518    102,    -1,   104,    -1,    -1,    -1,    -1,    -1,     8,    -1,
1519     -1,    -1,    -1,    -1,   116,    -1,   118,   119,   120,   121,
1520     20,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
1521    132,    -1,    -1,    -1,    -1,    35,    -1,    -1,    -1,    -1,
1522     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1523     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1524     -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    69,
1525     70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
1526     80,    81,    82,    83,    84,    85,    -1,    87,    88,    89,
1527     90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
1528    100,   101,   102,    -1,   104,    -1,    -1,    -1,    -1,    -1,
1529      8,    -1,    -1,    -1,    -1,    -1,   116,    -1,   118,   119,
1530    120,   121,    20,    -1,   124,   125,   126,   127,   128,    -1,
1531    130,   131,   132,    -1,    -1,    -1,    -1,    35,    -1,    -1,
1532     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1533     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1534     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
1535     68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1536     78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
1537     88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1538     98,    99,   100,   101,   102,     8,   104,    -1,    -1,    -1,
1539     -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,   116,    -1,
1540    118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
1541    128,    -1,   130,   131,   132,    -1,    -1,    -1,    -1,    -1,
1542     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1543     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1544     -1,    -1,    -1,    66,    67,    68,    69,    70,    71,    72,
1545     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
1546     83,    84,    85,    -1,    87,    88,    89,    90,    91,    92,
1547     93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
1548      8,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1549     -1,    -1,    20,   116,    -1,   118,   119,   120,   121,    -1,
1550     -1,   124,   125,   126,   127,   128,    -1,   130,   131,   132,
1551     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1552     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1553     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
1554     68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1555     78,    79,    80,    81,    82,    83,    84,    85,    -1,    87,
1556     88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
1557     98,    99,   100,   101,   102,    -1,   104,    -1,    -1,    -1,
1558     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   116,    -1,
1559    118,   119,   120,   121,    -1,    -1,   124,   125,   126,   127,
1560    128,    -1,   130,   131,   132,     3,    -1,    -1,     6,    -1,
1561     -1,    -1,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
1562     -1,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
1563     -1,     3,    -1,    -1,     6,    -1,    34,    35,    10,    11,
1564     -1,    -1,    40,    41,    42,    43,    -1,    -1,    20,    21,
1565     22,    -1,    -1,    25,    -1,    -1,    54,    55,    -1,    -1,
1566     -1,    59,    34,    -1,    36,    -1,    -1,    -1,    40,    41,
1567     42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1568     -1,     3,    54,    55,     6,    -1,    -1,    59,    10,    11,
1569     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
1570     22,    -1,    -1,    25,    -1,    -1,    -1,    -1,    -1,   107,
1571    108,    -1,    34,    -1,    36,    -1,   114,    -1,    40,    41,
1572     42,    43,     3,    -1,    -1,     6,    -1,    -1,    -1,    10,
1573     11,    -1,    54,    55,    -1,   107,   108,    59,    -1,    20,
1574     21,    22,   114,    -1,    25,    -1,    -1,    -1,    -1,    -1,
1575     -1,    -1,    -1,    34,    -1,    36,    -1,    -1,    -1,    40,
1576     41,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1577     -1,    -1,     3,    54,    55,     6,    -1,    -1,    59,    10,
1578     11,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,    20,
1579     21,    22,   114,    -1,    25,    -1,    -1,    -1,     3,    -1,
1580     -1,     6,    -1,    34,    -1,    10,    11,    -1,    -1,    40,
1581     41,    42,    43,    -1,    -1,    20,    -1,    22,    -1,    -1,
1582     25,    -1,    -1,    54,    55,    -1,   107,   108,    59,    34,
1583     -1,    -1,    -1,   114,    -1,    40,    41,    42,    43,    -1,
1584     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
1585     -1,    -1,    -1,    -1,    59,    -1,    -1,    -1,    -1,    -1,
1586     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1587     -1,    -1,    -1,    -1,    -1,    -1,   107,   108,    -1,    -1,
1588     -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
1589     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1590     -1,    -1,   107,   108,    -1,    -1,    -1,    -1,    -1,   114
1591 };
1592 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
1593
1594 /* This file comes from bison-1.28.  */
1595
1596 /* Skeleton output parser for bison,
1597    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1598
1599    This program is free software; you can redistribute it and/or modify
1600    it under the terms of the GNU General Public License as published by
1601    the Free Software Foundation; either version 2, or (at your option)
1602    any later version.
1603
1604    This program is distributed in the hope that it will be useful,
1605    but WITHOUT ANY WARRANTY; without even the implied warranty of
1606    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1607    GNU General Public License for more details.
1608
1609    You should have received a copy of the GNU General Public License
1610    along with this program; if not, write to the Free Software
1611    Foundation, Inc., 59 Temple Place - Suite 330,
1612    Boston, MA 02111-1307, USA.  */
1613
1614 /* As a special exception, when this file is copied by Bison into a
1615    Bison output file, you may use that output file without restriction.
1616    This special exception was added by the Free Software Foundation
1617    in version 1.24 of Bison.  */
1618
1619 /* This is the parser code that is written into each bison parser
1620   when the %semantic_parser declaration is not specified in the grammar.
1621   It was written by Richard Stallman by simplifying the hairy parser
1622   used when %semantic_parser is specified.  */
1623
1624 #ifndef YYSTACK_USE_ALLOCA
1625 #ifdef alloca
1626 #define YYSTACK_USE_ALLOCA
1627 #else /* alloca not defined */
1628 #ifdef __GNUC__
1629 #define YYSTACK_USE_ALLOCA
1630 #define alloca __builtin_alloca
1631 #else /* not GNU C.  */
1632 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
1633 #define YYSTACK_USE_ALLOCA
1634 #include <alloca.h>
1635 #else /* not sparc */
1636 /* We think this test detects Watcom and Microsoft C.  */
1637 /* This used to test MSDOS, but that is a bad idea
1638    since that symbol is in the user namespace.  */
1639 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
1640 #if 0 /* No need for malloc.h, which pollutes the namespace;
1641          instead, just don't use alloca.  */
1642 #include <malloc.h>
1643 #endif
1644 #else /* not MSDOS, or __TURBOC__ */
1645 #if defined(_AIX)
1646 /* I don't know what this was needed for, but it pollutes the namespace.
1647    So I turned it off.   rms, 2 May 1997.  */
1648 /* #include <malloc.h>  */
1649  #pragma alloca
1650 #define YYSTACK_USE_ALLOCA
1651 #else /* not MSDOS, or __TURBOC__, or _AIX */
1652 #if 0
1653 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
1654                  and on HPUX 10.  Eventually we can turn this on.  */
1655 #define YYSTACK_USE_ALLOCA
1656 #define alloca __builtin_alloca
1657 #endif /* __hpux */
1658 #endif
1659 #endif /* not _AIX */
1660 #endif /* not MSDOS, or __TURBOC__ */
1661 #endif /* not sparc */
1662 #endif /* not GNU C */
1663 #endif /* alloca not defined */
1664 #endif /* YYSTACK_USE_ALLOCA not defined */
1665
1666 #ifdef YYSTACK_USE_ALLOCA
1667 #define YYSTACK_ALLOC alloca
1668 #else
1669 #define YYSTACK_ALLOC malloc
1670 #endif
1671
1672 /* Note: there must be only one dollar sign in this file.
1673    It is replaced by the list of actions, each action
1674    as one case of the switch.  */
1675
1676 #define yyerrok         (yyerrstatus = 0)
1677 #define yyclearin       (yychar = YYEMPTY)
1678 #define YYEMPTY         -2
1679 #define YYEOF           0
1680 #define YYACCEPT        goto yyacceptlab
1681 #define YYABORT         goto yyabortlab
1682 #define YYERROR         goto yyerrlab1
1683 /* Like YYERROR except do call yyerror.
1684    This remains here temporarily to ease the
1685    transition to the new meaning of YYERROR, for GCC.
1686    Once GCC version 2 has supplanted version 1, this can go.  */
1687 #define YYFAIL          goto yyerrlab
1688 #define YYRECOVERING()  (!!yyerrstatus)
1689 #define YYBACKUP(token, value) \
1690 do                                                              \
1691   if (yychar == YYEMPTY && yylen == 1)                          \
1692     { yychar = (token), yylval = (value);                       \
1693       yychar1 = YYTRANSLATE (yychar);                           \
1694       YYPOPSTACK;                                               \
1695       goto yybackup;                                            \
1696     }                                                           \
1697   else                                                          \
1698     { yyerror ("syntax error: cannot back up"); YYERROR; }      \
1699 while (0)
1700
1701 #define YYTERROR        1
1702 #define YYERRCODE       256
1703
1704 #ifndef YYPURE
1705 #define YYLEX           yylex()
1706 #endif
1707
1708 #ifdef YYPURE
1709 #ifdef YYLSP_NEEDED
1710 #ifdef YYLEX_PARAM
1711 #define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
1712 #else
1713 #define YYLEX           yylex(&yylval, &yylloc)
1714 #endif
1715 #else /* not YYLSP_NEEDED */
1716 #ifdef YYLEX_PARAM
1717 #define YYLEX           yylex(&yylval, YYLEX_PARAM)
1718 #else
1719 #define YYLEX           yylex(&yylval)
1720 #endif
1721 #endif /* not YYLSP_NEEDED */
1722 #endif
1723
1724 /* If nonreentrant, generate the variables here */
1725
1726 #ifndef YYPURE
1727
1728 int     yychar;                 /*  the lookahead symbol                */
1729 YYSTYPE yylval;                 /*  the semantic value of the           */
1730                                 /*  lookahead symbol                    */
1731
1732 #ifdef YYLSP_NEEDED
1733 YYLTYPE yylloc;                 /*  location data for the lookahead     */
1734                                 /*  symbol                              */
1735 #endif
1736
1737 int yynerrs;                    /*  number of parse errors so far       */
1738 #endif  /* not YYPURE */
1739
1740 #if YYDEBUG != 0
1741 int yydebug;                    /*  nonzero means print parse trace     */
1742 /* Since this is uninitialized, it does not stop multiple parsers
1743    from coexisting.  */
1744 #endif
1745
1746 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
1747
1748 #ifndef YYINITDEPTH
1749 #define YYINITDEPTH 200
1750 #endif
1751
1752 /*  YYMAXDEPTH is the maximum size the stacks can grow to
1753     (effective only if the built-in stack extension method is used).  */
1754
1755 #if YYMAXDEPTH == 0
1756 #undef YYMAXDEPTH
1757 #endif
1758
1759 #ifndef YYMAXDEPTH
1760 #define YYMAXDEPTH 10000
1761 #endif
1762 \f
1763 /* Define __yy_memcpy.  Note that the size argument
1764    should be passed with type unsigned int, because that is what the non-GCC
1765    definitions require.  With GCC, __builtin_memcpy takes an arg
1766    of type size_t, but it can handle unsigned int.  */
1767
1768 #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
1769 #define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
1770 #else                           /* not GNU C or C++ */
1771 #ifndef __cplusplus
1772
1773 /* This is the most reliable way to avoid incompatibilities
1774    in available built-in functions on various systems.  */
1775 static void
1776 __yy_memcpy (to, from, count)
1777      char *to;
1778      char *from;
1779      unsigned int count;
1780 {
1781   register char *f = from;
1782   register char *t = to;
1783   register int i = count;
1784
1785   while (i-- > 0)
1786     *t++ = *f++;
1787 }
1788
1789 #else /* __cplusplus */
1790
1791 /* This is the most reliable way to avoid incompatibilities
1792    in available built-in functions on various systems.  */
1793 static void
1794 __yy_memcpy (char *to, char *from, unsigned int count)
1795 {
1796   register char *t = to;
1797   register char *f = from;
1798   register int i = count;
1799
1800   while (i-- > 0)
1801     *t++ = *f++;
1802 }
1803
1804 #endif
1805 #endif
1806 \f
1807
1808
1809 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1810    into yyparse.  The argument should have type void *.
1811    It should actually point to an object.
1812    Grammar actions can access the variable by casting it
1813    to the proper pointer type.  */
1814
1815 #ifdef YYPARSE_PARAM
1816 #ifdef __cplusplus
1817 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1818 #define YYPARSE_PARAM_DECL
1819 #else /* not __cplusplus */
1820 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
1821 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1822 #endif /* not __cplusplus */
1823 #else /* not YYPARSE_PARAM */
1824 #define YYPARSE_PARAM_ARG
1825 #define YYPARSE_PARAM_DECL
1826 #endif /* not YYPARSE_PARAM */
1827
1828 /* Prevent warning if -Wstrict-prototypes.  */
1829 #ifdef __GNUC__
1830 #ifdef YYPARSE_PARAM
1831 int yyparse (void *);
1832 #else
1833 int yyparse (void);
1834 #endif
1835 #endif
1836
1837 int
1838 yyparse(YYPARSE_PARAM_ARG)
1839      YYPARSE_PARAM_DECL
1840 {
1841   register int yystate;
1842   register int yyn;
1843   register short *yyssp;
1844   register YYSTYPE *yyvsp;
1845   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
1846   int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
1847
1848   short yyssa[YYINITDEPTH];     /*  the state stack                     */
1849   YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
1850
1851   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
1852   YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
1853
1854 #ifdef YYLSP_NEEDED
1855   YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
1856   YYLTYPE *yyls = yylsa;
1857   YYLTYPE *yylsp;
1858
1859 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1860 #else
1861 #define YYPOPSTACK   (yyvsp--, yyssp--)
1862 #endif
1863
1864   int yystacksize = YYINITDEPTH;
1865   int yyfree_stacks = 0;
1866
1867 #ifdef YYPURE
1868   int yychar;
1869   YYSTYPE yylval;
1870   int yynerrs;
1871 #ifdef YYLSP_NEEDED
1872   YYLTYPE yylloc;
1873 #endif
1874 #endif
1875
1876   YYSTYPE yyval;                /*  the variable used to return         */
1877                                 /*  semantic values from the action     */
1878                                 /*  routines                            */
1879
1880   int yylen;
1881
1882 #if YYDEBUG != 0
1883   if (yydebug)
1884     fprintf(stderr, "Starting parse\n");
1885 #endif
1886
1887   yystate = 0;
1888   yyerrstatus = 0;
1889   yynerrs = 0;
1890   yychar = YYEMPTY;             /* Cause a token to be read.  */
1891
1892   /* Initialize stack pointers.
1893      Waste one element of value and location stack
1894      so that they stay on the same level as the state stack.
1895      The wasted elements are never initialized.  */
1896
1897   yyssp = yyss - 1;
1898   yyvsp = yyvs;
1899 #ifdef YYLSP_NEEDED
1900   yylsp = yyls;
1901 #endif
1902
1903 /* Push a new state, which is found in  yystate  .  */
1904 /* In all cases, when you get here, the value and location stacks
1905    have just been pushed. so pushing a state here evens the stacks.  */
1906 yynewstate:
1907
1908   *++yyssp = yystate;
1909
1910   if (yyssp >= yyss + yystacksize - 1)
1911     {
1912       /* Give user a chance to reallocate the stack */
1913       /* Use copies of these so that the &'s don't force the real ones into memory. */
1914       YYSTYPE *yyvs1 = yyvs;
1915       short *yyss1 = yyss;
1916 #ifdef YYLSP_NEEDED
1917       YYLTYPE *yyls1 = yyls;
1918 #endif
1919
1920       /* Get the current used size of the three stacks, in elements.  */
1921       int size = yyssp - yyss + 1;
1922
1923 #ifdef yyoverflow
1924       /* Each stack pointer address is followed by the size of
1925          the data in use in that stack, in bytes.  */
1926 #ifdef YYLSP_NEEDED
1927       /* This used to be a conditional around just the two extra args,
1928          but that might be undefined if yyoverflow is a macro.  */
1929       yyoverflow("parser stack overflow",
1930                  &yyss1, size * sizeof (*yyssp),
1931                  &yyvs1, size * sizeof (*yyvsp),
1932                  &yyls1, size * sizeof (*yylsp),
1933                  &yystacksize);
1934 #else
1935       yyoverflow("parser stack overflow",
1936                  &yyss1, size * sizeof (*yyssp),
1937                  &yyvs1, size * sizeof (*yyvsp),
1938                  &yystacksize);
1939 #endif
1940
1941       yyss = yyss1; yyvs = yyvs1;
1942 #ifdef YYLSP_NEEDED
1943       yyls = yyls1;
1944 #endif
1945 #else /* no yyoverflow */
1946       /* Extend the stack our own way.  */
1947       if (yystacksize >= YYMAXDEPTH)
1948         {
1949           yyerror("parser stack overflow");
1950           if (yyfree_stacks)
1951             {
1952               free (yyss);
1953               free (yyvs);
1954 #ifdef YYLSP_NEEDED
1955               free (yyls);
1956 #endif
1957             }
1958           return 2;
1959         }
1960       yystacksize *= 2;
1961       if (yystacksize > YYMAXDEPTH)
1962         yystacksize = YYMAXDEPTH;
1963 #ifndef YYSTACK_USE_ALLOCA
1964       yyfree_stacks = 1;
1965 #endif
1966       yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
1967       __yy_memcpy ((char *)yyss, (char *)yyss1,
1968                    size * (unsigned int) sizeof (*yyssp));
1969       yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
1970       __yy_memcpy ((char *)yyvs, (char *)yyvs1,
1971                    size * (unsigned int) sizeof (*yyvsp));
1972 #ifdef YYLSP_NEEDED
1973       yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
1974       __yy_memcpy ((char *)yyls, (char *)yyls1,
1975                    size * (unsigned int) sizeof (*yylsp));
1976 #endif
1977 #endif /* no yyoverflow */
1978
1979       yyssp = yyss + size - 1;
1980       yyvsp = yyvs + size - 1;
1981 #ifdef YYLSP_NEEDED
1982       yylsp = yyls + size - 1;
1983 #endif
1984
1985 #if YYDEBUG != 0
1986       if (yydebug)
1987         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1988 #endif
1989
1990       if (yyssp >= yyss + yystacksize - 1)
1991         YYABORT;
1992     }
1993
1994 #if YYDEBUG != 0
1995   if (yydebug)
1996     fprintf(stderr, "Entering state %d\n", yystate);
1997 #endif
1998
1999   goto yybackup;
2000  yybackup:
2001
2002 /* Do appropriate processing given the current state.  */
2003 /* Read a lookahead token if we need one and don't already have one.  */
2004 /* yyresume: */
2005
2006   /* First try to decide what to do without reference to lookahead token.  */
2007
2008   yyn = yypact[yystate];
2009   if (yyn == YYFLAG)
2010     goto yydefault;
2011
2012   /* Not known => get a lookahead token if don't already have one.  */
2013
2014   /* yychar is either YYEMPTY or YYEOF
2015      or a valid token in external form.  */
2016
2017   if (yychar == YYEMPTY)
2018     {
2019 #if YYDEBUG != 0
2020       if (yydebug)
2021         fprintf(stderr, "Reading a token: ");
2022 #endif
2023       yychar = YYLEX;
2024     }
2025
2026   /* Convert token to internal form (in yychar1) for indexing tables with */
2027
2028   if (yychar <= 0)              /* This means end of input. */
2029     {
2030       yychar1 = 0;
2031       yychar = YYEOF;           /* Don't call YYLEX any more */
2032
2033 #if YYDEBUG != 0
2034       if (yydebug)
2035         fprintf(stderr, "Now at end of input.\n");
2036 #endif
2037     }
2038   else
2039     {
2040       yychar1 = YYTRANSLATE(yychar);
2041
2042 #if YYDEBUG != 0
2043       if (yydebug)
2044         {
2045           fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
2046           /* Give the individual parser a way to print the precise meaning
2047              of a token, for further debugging info.  */
2048 #ifdef YYPRINT
2049           YYPRINT (stderr, yychar, yylval);
2050 #endif
2051           fprintf (stderr, ")\n");
2052         }
2053 #endif
2054     }
2055
2056   yyn += yychar1;
2057   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
2058     goto yydefault;
2059
2060   yyn = yytable[yyn];
2061
2062   /* yyn is what to do for this token type in this state.
2063      Negative => reduce, -yyn is rule number.
2064      Positive => shift, yyn is new state.
2065        New state is final state => don't bother to shift,
2066        just return success.
2067      0, or most negative number => error.  */
2068
2069   if (yyn < 0)
2070     {
2071       if (yyn == YYFLAG)
2072         goto yyerrlab;
2073       yyn = -yyn;
2074       goto yyreduce;
2075     }
2076   else if (yyn == 0)
2077     goto yyerrlab;
2078
2079   if (yyn == YYFINAL)
2080     YYACCEPT;
2081
2082   /* Shift the lookahead token.  */
2083
2084 #if YYDEBUG != 0
2085   if (yydebug)
2086     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
2087 #endif
2088
2089   /* Discard the token being shifted unless it is eof.  */
2090   if (yychar != YYEOF)
2091     yychar = YYEMPTY;
2092
2093   *++yyvsp = yylval;
2094 #ifdef YYLSP_NEEDED
2095   *++yylsp = yylloc;
2096 #endif
2097
2098   /* count tokens shifted since error; after three, turn off error status.  */
2099   if (yyerrstatus) yyerrstatus--;
2100
2101   yystate = yyn;
2102   goto yynewstate;
2103
2104 /* Do the default action for the current state.  */
2105 yydefault:
2106
2107   yyn = yydefact[yystate];
2108   if (yyn == 0)
2109     goto yyerrlab;
2110
2111 /* Do a reduction.  yyn is the number of a rule to reduce with.  */
2112 yyreduce:
2113   yylen = yyr2[yyn];
2114   if (yylen > 0)
2115     yyval = yyvsp[1-yylen]; /* implement default value of the action */
2116
2117 #if YYDEBUG != 0
2118   if (yydebug)
2119     {
2120       int i;
2121
2122       fprintf (stderr, "Reducing via rule %d (line %d), ",
2123                yyn, yyrline[yyn]);
2124
2125       /* Print the symbols being reduced, and their result.  */
2126       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
2127         fprintf (stderr, "%s ", yytname[yyrhs[i]]);
2128       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
2129     }
2130 #endif
2131
2132
2133   switch (yyn) {
2134
2135 case 1:
2136 { lhExternals (yyvsp[0].interfacelist); ;
2137     break;}
2138 case 2:
2139 { interfaceNodeList_free (yyvsp[-2].interfacelist); interfaceNodeList_free (yyvsp[0].interfacelist); ;
2140     break;}
2141 case 3:
2142 { yyval.interfacelist = interfaceNodeList_new (); ;
2143     break;}
2144 case 4:
2145 { yyval.interfacelist = interfaceNodeList_addh (yyvsp[-1].interfacelist, yyvsp[0].iface);;
2146     break;}
2147 case 7:
2148 { yyval.interfacelist = interfaceNodeList_new (); ;
2149     break;}
2150 case 8:
2151 { yyval.interfacelist = consInterfaceNode (yyvsp[-1].iface, yyvsp[0].interfacelist);;
2152     break;}
2153 case 9:
2154 { yyval.interfacelist = consInterfaceNode (yyvsp[-1].iface, yyvsp[0].interfacelist);;
2155     break;}
2156 case 10:
2157 { yyval.interfacelist = interfaceNodeList_new (); ;
2158     break;}
2159 case 11:
2160 { yyval.interfacelist = interfaceNodeList_addh (yyvsp[-1].interfacelist, yyvsp[0].iface);;
2161     break;}
2162 case 15:
2163 { yyval.iface = makeInterfaceNodeImports (yyvsp[-1].importlist);
2164      /* assume subspecs are already processed, symbol table info in external file */
2165    ;
2166     break;}
2167 case 16:
2168 { yyval.iface = makeInterfaceNodeUses (yyvsp[-1].traitreflist); readlsignatures (yyval.iface);;
2169     break;}
2170 case 17:
2171 { declareConstant (yyvsp[0].constdeclaration); yyval.iface = interfaceNode_makeConst (yyvsp[0].constdeclaration); ;
2172     break;}
2173 case 18:
2174 { declareVar (yyvsp[0].vardeclaration); yyval.iface = interfaceNode_makeVar (yyvsp[0].vardeclaration); ;
2175     break;}
2176 case 19:
2177 { declareType (yyvsp[0].type); yyval.iface = interfaceNode_makeType (yyvsp[0].type); ;
2178     break;}
2179 case 20:
2180 { declareFcn (yyvsp[0].fcn, typeId_invalid); yyval.iface = interfaceNode_makeFcn (yyvsp[0].fcn); ;
2181     break;}
2182 case 21:
2183 { yyval.iface = interfaceNode_makeClaim (yyvsp[0].claim); ;
2184     break;}
2185 case 22:
2186 { declareIter (yyvsp[0].iter); yyval.iface = interfaceNode_makeIter (yyvsp[0].iter); ;
2187     break;}
2188 case 23:
2189 { yyval.iter = makeIterNode (yyvsp[-4].ltok, yyvsp[-2].paramlist); ;
2190     break;}
2191 case 24:
2192 { yyval.paramlist = paramNodeList_new (); ;
2193     break;}
2194 case 25:
2195 { yyval.paramlist = yyvsp[0].paramlist; ;
2196     break;}
2197 case 26:
2198 { yyval.paramlist = paramNodeList_add (paramNodeList_new (),  yyvsp[0].param); ;
2199     break;}
2200 case 27:
2201 { yyval.paramlist = paramNodeList_add (yyvsp[-2].paramlist,yyvsp[0].param); ;
2202     break;}
2203 case 28:
2204 { yyval.param = markYieldParamNode (yyvsp[0].param); ;
2205     break;}
2206 case 29:
2207 { yyval.param = yyvsp[0].param; ;
2208     break;}
2209 case 30:
2210 { symtable_export (g_symtab, FALSE); ;
2211     break;}
2212 case 31:
2213 { yyval.iface = yyvsp[0].iface; symtable_export (g_symtab, TRUE); ;
2214     break;}
2215 case 32:
2216 { declarePrivConstant (yyvsp[0].constdeclaration); yyval.iface =  interfaceNode_makePrivConst (yyvsp[0].constdeclaration); ;
2217     break;}
2218 case 33:
2219 { declarePrivVar (yyvsp[0].vardeclaration); yyval.iface = interfaceNode_makePrivVar (yyvsp[0].vardeclaration); ;
2220     break;}
2221 case 34:
2222 { declarePrivType (yyvsp[0].type); yyval.iface = interfaceNode_makePrivType (yyvsp[0].type); ;
2223     break;}
2224 case 35:
2225 { declarePrivFcn (yyvsp[0].fcn, typeId_invalid); yyval.iface = interfaceNode_makePrivFcn (yyvsp[0].fcn); ;
2226     break;}
2227 case 36:
2228 { yyval.constdeclaration = makeConstDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls); ;
2229     break;}
2230 case 37:
2231 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, FALSE); yyval.vardeclaration->qualifier = QLF_NONE; ;
2232     break;}
2233 case 38:
2234 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, FALSE); yyval.vardeclaration->qualifier = QLF_CONST; ;
2235     break;}
2236 case 39:
2237 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, FALSE); yyval.vardeclaration->qualifier = QLF_VOLATILE; ;
2238     break;}
2239 case 40:
2240 { yyval.type = makeAbstractTypeNode (yyvsp[0].abstract); ;
2241     break;}
2242 case 41:
2243 { yyval.type = makeExposedTypeNode (yyvsp[0].exposed); ;
2244     break;}
2245 case 42:
2246 { yyval.typequal = qual_createPrintfLike (); ;
2247     break;}
2248 case 43:
2249 { yyval.typequal = qual_createScanfLike (); ;
2250     break;}
2251 case 44:
2252 { yyval.typequal = qual_createMessageLike (); ;
2253     break;}
2254 case 45:
2255 { enteringFcnScope (yyvsp[-2].lcltypespec, yyvsp[-1].declare, yyvsp[0].globals); ;
2256     break;}
2257 case 46:
2258 { yyval.fcn = makeFcnNode (qual_createUnknown (),  yyvsp[-12].lcltypespec, yyvsp[-11].declare, yyvsp[-10].globals, yyvsp[-7].vardeclarationlist, yyvsp[-6].letdecls, 
2259                        yyvsp[-5].lclpredicate, yyvsp[-4].lclpredicate, yyvsp[-3].modify, yyvsp[-2].lclpredicate, yyvsp[-1].lclpredicate); 
2260      /* type, declarator, glovbls, privateinits,
2261         lets, checks, requires, modifies, ensures, claims */
2262      symtable_exitScope (g_symtab);
2263    ;
2264     break;}
2265 case 47:
2266 { enteringFcnScope (yyvsp[-2].lcltypespec, yyvsp[-1].declare, yyvsp[0].globals); ;
2267     break;}
2268 case 48:
2269 { yyval.fcn = makeFcnNode (yyvsp[-13].typequal, yyvsp[-12].lcltypespec, yyvsp[-11].declare, yyvsp[-10].globals, yyvsp[-7].vardeclarationlist, 
2270                        yyvsp[-6].letdecls, yyvsp[-5].lclpredicate, yyvsp[-4].lclpredicate, yyvsp[-3].modify, yyvsp[-2].lclpredicate, yyvsp[-1].lclpredicate); 
2271      /* type, declarator, glovbls, privateinits,
2272         lets, checks, requires, modifies, ensures, claims */
2273      symtable_exitScope (g_symtab);
2274    ;
2275     break;}
2276 case 49:
2277 { enteringClaimScope (yyvsp[-2].paramlist, yyvsp[0].globals); ;
2278     break;}
2279 case 50:
2280 {      yyval.claim = makeClaimNode (yyvsp[-11].ltok, yyvsp[-9].paramlist, yyvsp[-7].globals, yyvsp[-4].letdecls, yyvsp[-3].lclpredicate, yyvsp[-2].program, yyvsp[-1].lclpredicate); 
2281      symtable_exitScope (g_symtab); ;
2282     break;}
2283 case 51:
2284 { yyval.claim = (claimNode) 0; ;
2285     break;}
2286 case 52:
2287 {g_inTypeDef = TRUE; ;
2288     break;}
2289 case 53:
2290 {g_inTypeDef = FALSE; ;
2291     break;}
2292 case 54:
2293 { yyval.abstract = makeAbstractNode (yyvsp[-5].ltok, yyvsp[-2].ltok, TRUE, FALSE, yyvsp[0].abstbody); ;
2294     break;}
2295 case 55:
2296 {g_inTypeDef = TRUE; ;
2297     break;}
2298 case 56:
2299 {g_inTypeDef = FALSE; ;
2300     break;}
2301 case 57:
2302 { yyval.abstract = makeAbstractNode (yyvsp[-6].ltok, yyvsp[-2].ltok, TRUE, TRUE, yyvsp[0].abstbody); ;
2303     break;}
2304 case 58:
2305 {g_inTypeDef = TRUE; ;
2306     break;}
2307 case 59:
2308 {g_inTypeDef = FALSE; ;
2309     break;}
2310 case 60:
2311 { yyval.abstract = makeAbstractNode (yyvsp[-5].ltok, yyvsp[-2].ltok, TRUE, TRUE, yyvsp[0].abstbody); ;
2312     break;}
2313 case 61:
2314 {g_inTypeDef = TRUE; ;
2315     break;}
2316 case 62:
2317 {g_inTypeDef = FALSE; ;
2318     break;}
2319 case 63:
2320 { yyval.abstract = makeAbstractNode (yyvsp[-5].ltok, yyvsp[-2].ltok, FALSE, FALSE, yyvsp[0].abstbody); ;
2321     break;}
2322 case 64:
2323 { g_inTypeDef = TRUE; setExposedType (yyvsp[0].lcltypespec); ;
2324     break;}
2325 case 65:
2326 { g_inTypeDef = FALSE; ;
2327     break;}
2328 case 66:
2329 { yyval.exposed = makeExposedNode (yyvsp[-5].ltok, yyvsp[-4].lcltypespec, yyvsp[-2].declaratorinvs); /* to support mutually recursive types */ ;
2330     break;}
2331 case 67:
2332 { yyval.exposed = makeExposedNode (yyvsp[0].ltok, makeLclTypeSpecNodeSU (yyvsp[-1].structorunion), declaratorInvNodeList_new ()); ;
2333     break;}
2334 case 68:
2335 { yyval.exposed = makeExposedNode (yyvsp[0].ltok, makeLclTypeSpecNodeEnum (yyvsp[-1].enumspec), declaratorInvNodeList_new ()); ;
2336     break;}
2337 case 69:
2338 { yyval.importlist = importNodeList_add (importNodeList_new (),  yyvsp[0].import); ;
2339     break;}
2340 case 70:
2341 { yyval.importlist = importNodeList_add (yyvsp[-2].importlist, yyvsp[0].import); ;
2342     break;}
2343 case 71:
2344 { yyval.import = importNode_makePlain (yyvsp[0].ltok); ;
2345     break;}
2346 case 72:
2347 { checkBrackets (yyvsp[-2].ltok, yyvsp[0].ltok); yyval.import = importNode_makeBracketed (yyvsp[-1].ltok); ;
2348     break;}
2349 case 73:
2350 { yyval.import = importNode_makeQuoted (yyvsp[0].ltok); ;
2351     break;}
2352 case 74:
2353 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
2354     break;}
2355 case 75:
2356 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
2357     break;}
2358 case 77:
2359 { yyval.traitreflist = traitRefNodeList_add (traitRefNodeList_new (),  yyvsp[0].traitref); ;
2360     break;}
2361 case 78:
2362 { yyval.traitreflist = traitRefNodeList_add (yyvsp[-2].traitreflist, yyvsp[0].traitref); ;
2363     break;}
2364 case 79:
2365 { yyval.traitref = makeTraitRefNode (ltokenList_singleton (yyvsp[0].ltok), (renamingNode)0); ;
2366     break;}
2367 case 80:
2368 { yyval.traitref = makeTraitRefNode (ltokenList_singleton (yyvsp[-3].ltok), yyvsp[-1].renaming); ;
2369     break;}
2370 case 81:
2371 { yyval.traitref = makeTraitRefNode (yyvsp[-1].ltokenList, (renamingNode)0); ;
2372     break;}
2373 case 82:
2374 { yyval.traitref = makeTraitRefNode (yyvsp[-4].ltokenList, yyvsp[-1].renaming); ;
2375     break;}
2376 case 83:
2377 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
2378     break;}
2379 case 84:
2380 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
2381     break;}
2382 case 85:
2383 { yyval.renaming = makeRenamingNode (typeNameNodeList_new (),  yyvsp[0].replacelist); ;
2384     break;}
2385 case 86:
2386 { yyval.renaming = makeRenamingNode (yyvsp[0].namelist, replaceNodeList_new ()); ;
2387     break;}
2388 case 87:
2389 { yyval.renaming = makeRenamingNode (yyvsp[-2].namelist, yyvsp[0].replacelist); ;
2390     break;}
2391 case 88:
2392 { yyval.namelist = typeNameNodeList_add (typeNameNodeList_new (),  yyvsp[0].typname); ;
2393     break;}
2394 case 89:
2395 { yyval.namelist = typeNameNodeList_add (yyvsp[-2].namelist, yyvsp[0].typname); ;
2396     break;}
2397 case 90:
2398 { yyval.replacelist = replaceNodeList_add (replaceNodeList_new (),  yyvsp[0].replace); ;
2399     break;}
2400 case 91:
2401 { yyval.replacelist = replaceNodeList_add (yyvsp[-2].replacelist, yyvsp[0].replace); ;
2402     break;}
2403 case 92:
2404 { yyval.replace = makeReplaceNode (yyvsp[-1].ltok, yyvsp[-2].typname, TRUE, yyvsp[0].ltok, NULL, NULL); ;
2405     break;}
2406 case 93:
2407 { yyval.replace = makeReplaceNameNode (yyvsp[-1].ltok, yyvsp[-2].typname, yyvsp[0].name); ;
2408     break;}
2409 case 94:
2410 { yyval.replace = makeReplaceNode (yyvsp[-2].ltok, yyvsp[-3].typname, FALSE, ltoken_undefined,
2411                                                          yyvsp[-1].name, yyvsp[0].signature); ;
2412     break;}
2413 case 95:
2414 { yyval.name = makeNameNodeId (yyvsp[0].ltok); ;
2415     break;}
2416 case 96:
2417 { yyval.name = makeNameNodeForm (yyvsp[0].opform); ;
2418     break;}
2419 case 99:
2420 { yyval.initdecls = initDeclNodeList_add (initDeclNodeList_new (),  yyvsp[0].initdecl); ;
2421     break;}
2422 case 100:
2423 { yyval.initdecls = initDeclNodeList_add (yyvsp[-2].initdecls, yyvsp[0].initdecl); ;
2424     break;}
2425 case 101:
2426 { yyval.initdecl = makeInitDeclNode (yyvsp[0].declare, (termNode)0); ;
2427     break;}
2428 case 102:
2429 { yyval.initdecl = makeInitDeclNode (yyvsp[-2].declare, yyvsp[0].term); ;
2430     break;}
2431 case 103:
2432 { yyval.globals = varDeclarationNodeList_new (); ;
2433     break;}
2434 case 104:
2435 { varDeclarationNodeList_addh (yyvsp[-1].globals, yyvsp[0].vardeclaration); yyval.globals = yyvsp[-1].globals; ;
2436     break;}
2437 case 105:
2438 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, TRUE, FALSE); ;
2439     break;}
2440 case 106:
2441 { yyval.vardeclaration = makeInternalStateNode (); ;
2442     break;}
2443 case 107:
2444 { yyval.vardeclaration = makeFileSystemNode (); ;
2445     break;}
2446 case 108:
2447 { yyval.vardeclarationlist = varDeclarationNodeList_new (); ;
2448     break;}
2449 case 109:
2450 { varDeclarationNodeList_addh (yyvsp[-1].vardeclarationlist, yyvsp[0].vardeclaration); yyval.vardeclarationlist = yyvsp[-1].vardeclarationlist; ;
2451     break;}
2452 case 110:
2453 { yyval.vardeclaration = makeVarDeclarationNode (yyvsp[-2].lcltypespec, yyvsp[-1].initdecls, FALSE, TRUE); ;
2454     break;}
2455 case 111:
2456 { yyval.letdecls = letDeclNodeList_new (); ;
2457     break;}
2458 case 112:
2459 { yyval.letdecls = yyvsp[-1].letdecls; ;
2460     break;}
2461 case 113:
2462 { yyval.letdecls = letDeclNodeList_add (letDeclNodeList_new (),  yyvsp[0].letdecl); ;
2463     break;}
2464 case 114:
2465 { yyval.letdecls = letDeclNodeList_add (yyvsp[-2].letdecls, yyvsp[0].letdecl); ;
2466     break;}
2467 case 115:
2468 { yyval.letdecl = makeLetDeclNode (yyvsp[-4].ltok, yyvsp[-2].lcltypespec, yyvsp[0].term); ;
2469     break;}
2470 case 116:
2471 { yyval.letdecl = makeLetDeclNode (yyvsp[-2].ltok, (lclTypeSpecNode)0, yyvsp[0].term); ;
2472     break;}
2473 case 118:
2474 { yyval.lclpredicate = (lclPredicateNode)0; ;
2475     break;}
2476 case 119:
2477 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeChecksNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); ;
2478     break;}
2479 case 120:
2480 { yyval.lclpredicate = (lclPredicateNode)0; ;
2481     break;}
2482 case 121:
2483 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeRequiresNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate);;
2484     break;}
2485 case 122:
2486 { yyval.modify = (modifyNode)0; ;
2487     break;}
2488 case 123:
2489 { yyval.modify = makeModifyNodeSpecial (yyvsp[-2].ltok, TRUE); ;
2490     break;}
2491 case 124:
2492 { yyval.modify = makeModifyNodeSpecial (yyvsp[-2].ltok, FALSE); ;
2493     break;}
2494 case 125:
2495 { yyval.modify = makeModifyNodeRef (yyvsp[-2].ltok, yyvsp[-1].storereflist); ;
2496     break;}
2497 case 126:
2498 { yyval.storereflist = storeRefNodeList_add (storeRefNodeList_new (),  yyvsp[0].storeref); ;
2499     break;}
2500 case 127:
2501 { yyval.storereflist = storeRefNodeList_add (yyvsp[-2].storereflist, yyvsp[0].storeref); ;
2502     break;}
2503 case 128:
2504 { yyval.storeref = makeStoreRefNodeTerm (yyvsp[0].term); ;
2505     break;}
2506 case 129:
2507 { yyval.storeref = makeStoreRefNodeType (yyvsp[0].lcltypespec, FALSE); ;
2508     break;}
2509 case 130:
2510 { yyval.storeref = makeStoreRefNodeType (yyvsp[0].lcltypespec, TRUE); ;
2511     break;}
2512 case 131:
2513 { yyval.storeref = makeStoreRefNodeInternal (); ;
2514     break;}
2515 case 132:
2516 { yyval.storeref = makeStoreRefNodeSystem (); ;
2517     break;}
2518 case 133:
2519 { yyval.lclpredicate = (lclPredicateNode)0; ;
2520     break;}
2521 case 134:
2522 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeEnsuresNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate);;
2523     break;}
2524 case 135:
2525 { yyval.lclpredicate = (lclPredicateNode)0; ;
2526     break;}
2527 case 136:
2528 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.lclpredicate = makeIntraClaimNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate);;
2529     break;}
2530 case 137:
2531 { yyval.paramlist = paramNodeList_new (); ;
2532     break;}
2533 case 138:
2534 { yyval.paramlist = yyvsp[0].paramlist; ;
2535     break;}
2536 case 140:
2537 { yyval.paramlist = paramNodeList_add (paramNodeList_new (),  paramNode_elipsis ()); ;
2538     break;}
2539 case 141:
2540 { yyval.paramlist = paramNodeList_add (yyvsp[-2].paramlist, paramNode_elipsis ()); ;
2541     break;}
2542 case 142:
2543 { yyval.paramlist = paramNodeList_single (yyvsp[0].param); ;
2544     break;}
2545 case 143:
2546 { yyval.paramlist = paramNodeList_add (yyvsp[-2].paramlist, yyvsp[0].param); ;
2547     break;}
2548 case 144:
2549 { yyval.program = (programNode)0; ;
2550     break;}
2551 case 145:
2552 { yyval.program = yyvsp[-1].program; ;
2553     break;}
2554 case 146:
2555 { yyval.program = yyvsp[-2].program; ;
2556     break;}
2557 case 147:
2558 { yyval.program = makeProgramNode (yyvsp[0].stmt); ;
2559     break;}
2560 case 148:
2561 { yyval.program = yyvsp[-1].program; yyval.program->wrapped = yyval.program->wrapped + 1; ;
2562     break;}
2563 case 149:
2564 { programNodeList x = programNodeList_new ();
2565      programNodeList_addh (x, yyvsp[-1].program);
2566      yyval.program = makeProgramNodeAction (x, ACT_ITER); 
2567    ;
2568     break;}
2569 case 150:
2570 { programNodeList x = programNodeList_new ();
2571      programNodeList_addh (x, yyvsp[-2].program);
2572      programNodeList_addh (x, yyvsp[0].program);
2573      yyval.program = makeProgramNodeAction (x, ACT_ALTERNATE); 
2574    ;
2575     break;}
2576 case 151:
2577 { programNodeList x = programNodeList_new ();
2578      programNodeList_addh (x, yyvsp[-2].program);
2579      programNodeList_addh (x, yyvsp[0].program);
2580      yyval.program = makeProgramNodeAction (x, ACT_SEQUENCE); 
2581    ;
2582     break;}
2583 case 152:
2584 { yyval.stmt = makeStmtNode (ltoken_undefined, yyvsp[-3].ltok, yyvsp[-1].termlist); ;
2585     break;}
2586 case 153:
2587 { yyval.stmt = makeStmtNode (ltoken_undefined, yyvsp[-2].ltok, termNodeList_new ()); ;
2588     break;}
2589 case 154:
2590 { yyval.stmt = makeStmtNode (yyvsp[-4].ltok, yyvsp[-2].ltok, termNodeList_new ()); ;
2591     break;}
2592 case 155:
2593 { yyval.stmt = makeStmtNode (yyvsp[-5].ltok, yyvsp[-3].ltok, yyvsp[-1].termlist); ;
2594     break;}
2595 case 156:
2596 { yyval.termlist = termNodeList_push (termNodeList_new (),  yyvsp[0].term); ;
2597     break;}
2598 case 157:
2599 { yyval.termlist = termNodeList_push (yyvsp[-2].termlist, yyvsp[0].term); ;
2600     break;}
2601 case 159:
2602 { yyval.term = makeSimpleTermNode (yyvsp[0].ltok); ;
2603     break;}
2604 case 160:
2605 { yyval.term = makePrefixTermNode (yyvsp[-1].ltok, yyvsp[0].term); ;
2606     break;}
2607 case 161:
2608 { yyval.term = makePostfixTermNode2 (yyvsp[-1].term, yyvsp[0].ltok); ;
2609     break;}
2610 case 162:
2611 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term); ;
2612     break;}
2613 case 163:
2614 { yyval.term = yyvsp[-1].term; yyval.term->wrapped = yyval.term->wrapped + 1; ;
2615     break;}
2616 case 164:
2617 { yyval.term = makeOpCallTermNode (yyvsp[-2].ltok, yyvsp[-1].ltok, termNodeList_new (),  yyvsp[0].ltok); ;
2618     break;}
2619 case 165:
2620 { yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
2621     break;}
2622 case 166:
2623 { yyval.abstbody = (abstBodyNode)0; ;
2624     break;}
2625 case 167:
2626 { yyval.abstbody = makeAbstBodyNode (yyvsp[-2].ltok, yyvsp[-1].fcns); ;
2627     break;}
2628 case 168:
2629 { yyval.abstbody = makeAbstBodyNode2 (yyvsp[-3].ltok, yyvsp[-2].ltokenList); ;
2630     break;}
2631 case 169:
2632 { yyval.abstbody = (abstBodyNode)0; ;
2633     break;}
2634 case 170:
2635 { yyval.fcns = fcnNodeList_new (); ;
2636     break;}
2637 case 171:
2638 { yyval.fcns = fcnNodeList_add (yyvsp[-1].fcns, yyvsp[0].fcn); ;
2639     break;}
2640 case 172:
2641 { yyval.lclpredicate = (lclPredicateNode)0; ;
2642     break;}
2643 case 174:
2644 { g_inTypeDef = FALSE; ;
2645     break;}
2646 case 175:
2647 { yyvsp[-1].lclpredicate->tok = yyvsp[-5].ltok; yyvsp[-1].lclpredicate->kind = LPD_CONSTRAINT;
2648      checkLclPredicate (yyvsp[-5].ltok, yyvsp[-1].lclpredicate);
2649      yyval.lclpredicate = yyvsp[-1].lclpredicate;
2650      symtable_exitScope (g_symtab); 
2651      g_inTypeDef = TRUE;
2652    ;
2653     break;}
2654 case 176:
2655 { yyval.declaratorinvs = declaratorInvNodeList_add (declaratorInvNodeList_new (),  yyvsp[0].declaratorinv); ;
2656     break;}
2657 case 177:
2658 { yyval.declaratorinvs = declaratorInvNodeList_add (yyvsp[-2].declaratorinvs, yyvsp[0].declaratorinv); ;
2659     break;}
2660 case 178:
2661 { declareForwardType (yyvsp[0].declare); ;
2662     break;}
2663 case 179:
2664 { yyval.declaratorinv = makeDeclaratorInvNode (yyvsp[-2].declare, yyvsp[0].abstbody); ;
2665     break;}
2666 case 180:
2667 { yyval.abstbody = (abstBodyNode)0; ;
2668     break;}
2669 case 181:
2670 { yyval.abstbody = makeExposedBodyNode (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); ;
2671     break;}
2672 case 182:
2673 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_VOID, 0)); ;
2674     break;}
2675 case 183:
2676 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_CHAR, 0)); ;
2677     break;}
2678 case 184:
2679 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_DOUBLE, 0)); ;
2680     break;}
2681 case 185:
2682 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_FLOAT, 0)); ;
2683     break;}
2684 case 186:
2685 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_INT, 0)); ;
2686     break;}
2687 case 187:
2688 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_LONG, 0)); ;
2689     break;}
2690 case 188:
2691 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_SHORT, 0)); ;
2692     break;}
2693 case 189:
2694 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_SIGNED, 0)); ;
2695     break;}
2696 case 190:
2697 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_UNSIGNED, 0)); ;
2698     break;}
2699 case 191:
2700 { yyval.ltok = yyvsp[0].ltok; ltoken_setIntField (yyval.ltok, fixBits (TS_UNKNOWN, 0)); ;
2701     break;}
2702 case 192:
2703 { yyval.ctypes = makeCTypesNode ((CTypesNode)0, yyvsp[0].ltok); ;
2704     break;}
2705 case 193:
2706 { yyval.ctypes = makeCTypesNode (yyvsp[-1].ctypes, yyvsp[0].ltok); ;
2707     break;}
2708 case 194:
2709 { yyval.ctypes = makeTypeSpecifier (yyvsp[0].ltok); ;
2710     break;}
2711 case 195:
2712 { yyval.ctypes = yyvsp[0].ctypes; yyval.ctypes->sort = sort_lookupName (lclctype_toSort (yyvsp[0].ctypes->intfield)); ;
2713     break;}
2714 case 196:
2715 { yyval.typequal = qual_createOut (); ;
2716     break;}
2717 case 197:
2718 { yyval.typequal = qual_createUnused (); ;
2719     break;}
2720 case 198:
2721 { yyval.typequal = qual_createSef (); ;
2722     break;}
2723 case 199:
2724 { yyval.typequal = qual_createOnly (); ;
2725     break;}
2726 case 200:
2727 { yyval.typequal = qual_createOwned (); ;
2728     break;}
2729 case 201:
2730 { yyval.typequal = qual_createDependent (); ;
2731     break;}
2732 case 202:
2733 { yyval.typequal = qual_createKeep (); ;
2734     break;}
2735 case 203:
2736 { yyval.typequal = qual_createKept (); ;
2737     break;}
2738 case 204:
2739 { yyval.typequal = qual_createObserver (); ;
2740     break;}
2741 case 205:
2742 { yyval.typequal = qual_createExits (); ;
2743     break;}
2744 case 206:
2745 { yyval.typequal = qual_createMayExit (); ;
2746     break;}
2747 case 207:
2748 { yyval.typequal = qual_createTrueExit (); ;
2749     break;}
2750 case 208:
2751 { yyval.typequal = qual_createFalseExit (); ;
2752     break;}
2753 case 209:
2754 { yyval.typequal = qual_createNeverExit (); ;
2755     break;}
2756 case 210:
2757 { yyval.typequal = qual_createOnly (); ;
2758     break;}
2759 case 211:
2760 { yyval.typequal = qual_createShared (); ;
2761     break;}
2762 case 212:
2763 { yyval.typequal = qual_createUnique (); ;
2764     break;}
2765 case 213:
2766 { yyval.typequal = qual_createChecked (); ;
2767     break;}
2768 case 214:
2769 { yyval.typequal = qual_createUnchecked (); ;
2770     break;}
2771 case 215:
2772 { yyval.typequal = qual_createCheckedStrict (); ;
2773     break;}
2774 case 216:
2775 { yyval.typequal = qual_createTrueNull (); ;
2776     break;}
2777 case 217:
2778 { yyval.typequal = qual_createFalseNull (); ;
2779     break;}
2780 case 218:
2781 { yyval.typequal = qual_createRelNull (); ;
2782     break;}
2783 case 219:
2784 { yyval.typequal = qual_createRelDef (); ;
2785     break;}
2786 case 220:
2787 { yyval.typequal = qual_createRefCounted (); ;
2788     break;}
2789 case 221:
2790 { yyval.typequal = qual_createRefs (); ;
2791     break;}
2792 case 222:
2793 { yyval.typequal = qual_createNewRef (); ;
2794     break;}
2795 case 223:
2796 { yyval.typequal = qual_createKillRef (); ;
2797     break;}
2798 case 224:
2799 { yyval.typequal = qual_createNull (); ;
2800     break;}
2801 case 225:
2802 { yyval.typequal = qual_createNotNull (); ;
2803     break;}
2804 case 226:
2805 { yyval.typequal = qual_createReturned (); ;
2806     break;}
2807 case 227:
2808 { yyval.typequal = qual_createExposed (); ;
2809     break;}
2810 case 228:
2811 { yyval.typequal = qual_createPartial (); ;
2812     break;}
2813 case 229:
2814 { yyval.typequal = qual_createNullTerminated () ; ;
2815     break;}
2816 case 230:
2817 { yyval.typequal = qual_createUndef (); ;
2818     break;}
2819 case 231:
2820 { yyval.typequal = qual_createKilled (); ;
2821     break;}
2822 case 232:
2823 { yyval.lcltypespec = makeLclTypeSpecNodeType (yyvsp[0].ctypes); ;
2824     break;}
2825 case 233:
2826 { yyval.lcltypespec = makeLclTypeSpecNodeSU (yyvsp[0].structorunion); ;
2827     break;}
2828 case 234:
2829 { yyval.lcltypespec = makeLclTypeSpecNodeEnum (yyvsp[0].enumspec); ;
2830     break;}
2831 case 235:
2832 { yyval.lcltypespec = lclTypeSpecNode_addQual (yyvsp[0].lcltypespec, yyvsp[-1].typequal); ;
2833     break;}
2834 case 236:
2835 { yyval.lcltypespec = makeLclTypeSpecNodeConj (yyvsp[-3].lcltypespec, yyvsp[-1].lcltypespec); ;
2836     break;}
2837 case 238:
2838 { llassert (lclTypeSpecNode_isDefined (yyvsp[-1].lcltypespec));
2839      yyvsp[-1].lcltypespec->pointers = yyvsp[0].pointers; yyval.lcltypespec = yyvsp[-1].lcltypespec; ;
2840     break;}
2841 case 239:
2842 { yyval.pointers = pointers_createLt (yyvsp[0].ltok); ;
2843     break;}
2844 case 240:
2845 { yyval.pointers = pointers_extend (yyvsp[-1].pointers, pointers_createLt (yyvsp[0].ltok)); ;
2846     break;}
2847 case 241:
2848 { (void) checkAndEnterTag (TAG_FWDSTRUCT, ltoken_copy (yyvsp[0].ltok)); ;
2849     break;}
2850 case 242:
2851 { yyval.structorunion = makestrOrUnionNode (yyvsp[-5].ltok, SU_STRUCT, yyvsp[-4].ltok, yyvsp[-1].structdecls); ;
2852     break;}
2853 case 243:
2854 { (void) checkAndEnterTag (TAG_FWDUNION, ltoken_copy (yyvsp[0].ltok)); ;
2855     break;}
2856 case 244:
2857 { yyval.structorunion = makestrOrUnionNode (yyvsp[-5].ltok, SU_UNION, yyvsp[-4].ltok, yyvsp[-1].structdecls); ;
2858     break;}
2859 case 245:
2860 { yyval.structorunion = makeForwardstrOrUnionNode (yyvsp[-1].ltok, SU_STRUCT, yyvsp[0].ltok); ;
2861     break;}
2862 case 246:
2863 { yyval.structorunion = makeForwardstrOrUnionNode (yyvsp[-1].ltok, SU_UNION, yyvsp[0].ltok); ;
2864     break;}
2865 case 247:
2866 { yyval.ltok = ltoken_undefined; ;
2867     break;}
2868 case 249:
2869 { yyval.structdecls = stDeclNodeList_add (stDeclNodeList_new (),  yyvsp[0].structdecl); ;
2870     break;}
2871 case 250:
2872 { yyval.structdecls = stDeclNodeList_add (yyvsp[-1].structdecls, yyvsp[0].structdecl); ;
2873     break;}
2874 case 251:
2875 { yyval.structdecl = makestDeclNode (yyvsp[-2].lcltypespec, yyvsp[-1].declarelist); ;
2876     break;}
2877 case 252:
2878 { yyval.declarelist = declaratorNodeList_add (declaratorNodeList_new (),  yyvsp[0].declare); ;
2879     break;}
2880 case 253:
2881 { yyval.declarelist = declaratorNodeList_add (yyvsp[-2].declarelist, yyvsp[0].declare); ;
2882     break;}
2883 case 254:
2884 { ; ;
2885     break;}
2886 case 255:
2887 { ; ;
2888     break;}
2889 case 256:
2890 { yyval.enumspec = makeEnumSpecNode (yyvsp[-5].ltok, yyvsp[-4].ltok, yyvsp[-2].ltokenList); ;
2891     break;}
2892 case 257:
2893 { yyval.enumspec = makeEnumSpecNode2 (yyvsp[-1].ltok, yyvsp[0].ltok); ;
2894     break;}
2895 case 258:
2896 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
2897     break;}
2898 case 259:
2899 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
2900     break;}
2901 case 260:
2902 { yyval.declare = makeDeclaratorNode (yyvsp[0].typeexpr); ;
2903     break;}
2904 case 261:
2905 { yyval.declare = makeDeclaratorNode (yyvsp[0].typeexpr); ;
2906     break;}
2907 case 262:
2908 { yyval.typeexpr = makeTypeExpr (yyvsp[0].ltok); ;
2909     break;}
2910 case 263:
2911 { yyval.typeexpr = yyvsp[-1].typeexpr; yyval.typeexpr->wrapped = yyval.typeexpr->wrapped + 1; ;
2912     break;}
2913 case 264:
2914 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2915     break;}
2916 case 265:
2917 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2918     break;}
2919 case 266:
2920 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2921     break;}
2922 case 267:
2923 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
2924     break;}
2925 case 268:
2926 { yyval.typeexpr = makeTypeExpr (yyvsp[0].ltok); ;
2927     break;}
2928 case 269:
2929 { yyval.typeexpr = yyvsp[-1].typeexpr; yyval.typeexpr->wrapped = yyval.typeexpr->wrapped + 1; ;
2930     break;}
2931 case 270:
2932 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2933     break;}
2934 case 271:
2935 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2936     break;}
2937 case 272:
2938 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2939     break;}
2940 case 273:
2941 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
2942     break;}
2943 case 274:
2944 { yyval.typeexpr = makeTypeExpr (yyvsp[0].ltok); ;
2945     break;}
2946 case 275:
2947 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2948     break;}
2949 case 276:
2950 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2951     break;}
2952 case 277:
2953 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2954     break;}
2955 case 278:
2956 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
2957     break;}
2958 case 279:
2959 { yyval.param = makeParamNode (yyvsp[-1].lcltypespec, yyvsp[0].typeexpr); ;
2960     break;}
2961 case 280:
2962 { yyval.param = makeParamNode (yyvsp[-1].lcltypespec, yyvsp[0].typeexpr); ;
2963     break;}
2964 case 281:
2965 { yyval.param = makeParamNode (yyvsp[-1].lcltypespec, yyvsp[0].abstDecl); ;
2966     break;}
2967 case 282:
2968 { yyval.typname = makeTypeNameNode (FALSE, yyvsp[-1].lcltypespec, yyvsp[0].abstDecl); ;
2969     break;}
2970 case 283:
2971 { yyval.typname = makeTypeNameNode (TRUE, yyvsp[-1].lcltypespec, yyvsp[0].abstDecl); ;
2972     break;}
2973 case 284:
2974 { yyval.typname = makeTypeNameNodeOp (yyvsp[0].opform); ;
2975     break;}
2976 case 285:
2977 { yyval.abstDecl = (abstDeclaratorNode)0; ;
2978     break;}
2979 case 286:
2980 { yyval.abstDecl = (abstDeclaratorNode)yyvsp[0].typeexpr; ;
2981     break;}
2982 case 287:
2983 { yyval.typeexpr = yyvsp[-1].typeexpr; yyval.typeexpr->wrapped = yyval.typeexpr->wrapped + 1; ;
2984     break;}
2985 case 288:
2986 { yyval.typeexpr = makePointerNode (yyvsp[-1].ltok, yyvsp[0].typeexpr); ;
2987     break;}
2988 case 289:
2989 { yyval.typeexpr = makePointerNode (yyvsp[0].ltok, (typeExpr)0); ;
2990     break;}
2991 case 290:
2992 { yyval.typeexpr = makeArrayNode ((typeExpr)0, yyvsp[0].array); ;
2993     break;}
2994 case 291:
2995 { yyval.typeexpr = makeArrayNode (yyvsp[-1].typeexpr, yyvsp[0].array); ;
2996     break;}
2997 case 292:
2998 { yyval.typeexpr = makeFunctionNode (yyvsp[-2].typeexpr, paramNodeList_new ()); ;
2999     break;}
3000 case 293:
3001 { yyval.typeexpr = makeFunctionNode ((typeExpr)0, yyvsp[-1].paramlist); ;
3002     break;}
3003 case 294:
3004 { yyval.typeexpr = makeFunctionNode (yyvsp[-3].typeexpr, yyvsp[-1].paramlist); ;
3005     break;}
3006 case 295:
3007 { yyval.array = makeArrayQualNode (yyvsp[-1].ltok, (termNode)0); ;
3008     break;}
3009 case 296:
3010 { yyval.array = makeArrayQualNode (yyvsp[-2].ltok, yyvsp[-1].term); ;
3011     break;}
3012 case 297:
3013 { yyval.opform = makeOpFormNode (yyvsp[-5].ltok, OPF_IF, opFormUnion_createMiddle (0), ltoken_undefined); ;
3014     break;}
3015 case 298:
3016 { yyval.opform = makeOpFormNode (yyvsp[0].ltok, OPF_ANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3017     break;}
3018 case 299:
3019 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3020     break;}
3021 case 300:
3022 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_ANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
3023     break;}
3024 case 301:
3025 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MANYOPM, 
3026                           opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
3027     break;}
3028 case 302:
3029 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3030     break;}
3031 case 303:
3032 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3033     break;}
3034 case 304:
3035 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3036     break;}
3037 case 305:
3038 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3039     break;}
3040 case 306:
3041 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3042     break;}
3043 case 307:
3044 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3045     break;}
3046 case 308:
3047 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
3048     break;}
3049 case 309:
3050 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMMIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
3051     break;}
3052 case 310:
3053 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_SELECT, 
3054                           opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3055     break;}
3056 case 311:
3057 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MAP, 
3058                           opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3059     break;}
3060 case 312:
3061 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MSELECT, 
3062                           opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3063     break;}
3064 case 313:
3065 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMAP, 
3066                           opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
3067     break;}
3068 case 321:
3069 { yyval.count = 0; ;
3070     break;}
3071 case 323:
3072 { yyval.count = 1; ;
3073     break;}
3074 case 324:
3075 { yyval.count = yyvsp[-2].count + 1; ;
3076     break;}
3077 case 327:
3078 { yyval.signature = makesigNode (yyvsp[-3].ltok, yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
3079     break;}
3080 case 328:
3081 { yyval.ltokenList = ltokenList_new (); ;
3082     break;}
3083 case 330:
3084 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
3085     break;}
3086 case 331:
3087 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
3088     break;}
3089 case 332:
3090 { yyval.lclpredicate = makeLclPredicateNode (ltoken_undefined, yyvsp[0].term, LPD_PLAIN);;
3091     break;}
3092 case 333:
3093 { yyval.term = checkSort (yyvsp[0].term); ;
3094     break;}
3095 case 334:
3096 { yyval.term = makeIfTermNode (yyvsp[-5].ltok,yyvsp[-4].term,yyvsp[-3].ltok,yyvsp[-2].term,yyvsp[-1].ltok,yyvsp[0].term); ;
3097     break;}
3098 case 336:
3099 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term); ;
3100     break;}
3101 case 338:
3102 { checkLclPredicate (yyvsp[-2].ltok, yyvsp[-1].lclpredicate); yyval.term = makeQuantifiedTermNode (yyvsp[-3].quantifiers, yyvsp[-2].ltok, yyvsp[-1].lclpredicate->predicate, yyvsp[0].ltok);
3103      symtable_exitScope (g_symtab); 
3104    ;
3105     break;}
3106 case 339:
3107 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term);;
3108     break;}
3109 case 340:
3110 { yyval.term = makeInfixTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].term);;
3111     break;}
3112 case 342:
3113 { yyval.term = makePostfixTermNode (yyvsp[-1].term, yyvsp[0].ltokenList); ;
3114     break;}
3115 case 343:
3116 { yyval.term = CollapseInfixTermNode (yyvsp[-1].term, yyvsp[0].termlist); ;
3117     break;}
3118 case 347:
3119 { yyval.term = makePrefixTermNode (yyvsp[-1].ltok, yyvsp[0].term); ;
3120     break;}
3121 case 348:
3122 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
3123     break;}
3124 case 349:
3125 { yyval.ltokenList = ltokenList_push (yyvsp[-1].ltokenList, yyvsp[0].ltok); ;
3126     break;}
3127 case 350:
3128 { yyval.termlist = pushInfixOpPartNode (termNodeList_new (),  yyvsp[-1].ltok, yyvsp[0].term); ;
3129     break;}
3130 case 351:
3131 { yyval.termlist = pushInfixOpPartNode (yyvsp[-2].termlist, yyvsp[-1].ltok, yyvsp[0].term); ;
3132     break;}
3133 case 353:
3134 { yyval.term = computePossibleSorts (yyvsp[0].term); ;
3135     break;}
3136 case 354:
3137 { yyval.term = updateMatchedNode ((termNode)0, yyvsp[-1].term, yyvsp[0].term); ;
3138     break;}
3139 case 355:
3140 { yyval.term = updateMatchedNode (yyvsp[-1].term, yyvsp[0].term, (termNode)0); ;
3141     break;}
3142 case 356:
3143 { yyval.term = updateMatchedNode (yyvsp[-2].term, yyvsp[-1].term, yyvsp[0].term); ;
3144     break;}
3145 case 357:
3146 { yyval.term = computePossibleSorts (yyvsp[0].term); ;
3147     break;}
3148 case 358:
3149 { yyval.term = updateSqBracketedNode ((termNode)0, yyvsp[-1].term, yyvsp[0].term); ;
3150     break;}
3151 case 359:
3152 { yyval.term = yyvsp[-2].term; yyval.term->sort = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); ;
3153     break;}
3154 case 361:
3155 { yyval.term = makeSqBracketedNode (yyvsp[-4].ltok, yyvsp[-3].termlist, yyvsp[-2].ltok); 
3156      yyval.term->given = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); ;
3157     break;}
3158 case 362:
3159 { yyval.term = makeSqBracketedNode (yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3160     break;}
3161 case 363:
3162 { yyval.term = makeSqBracketedNode (yyvsp[-3].ltok, termNodeList_new (),  yyvsp[-2].ltok); 
3163      yyval.term->given = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); 
3164    ;
3165     break;}
3166 case 364:
3167 { yyval.term = makeSqBracketedNode (yyvsp[-1].ltok, termNodeList_new (),  yyvsp[0].ltok); ;
3168     break;}
3169 case 365:
3170 { yyval.term = makeMatchedNode (yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3171     break;}
3172 case 366:
3173 { yyval.term = makeMatchedNode (yyvsp[-1].ltok, termNodeList_new (),  yyvsp[0].ltok); ;
3174     break;}
3175 case 367:
3176 { yyval.termlist = termNodeList_push (termNodeList_new (),  yyvsp[0].term); ;
3177     break;}
3178 case 368:
3179 { yyval.termlist = termNodeList_push (yyvsp[-2].termlist, yyvsp[0].term); ;
3180     break;}
3181 case 369:
3182 { yyval.term = yyvsp[-1].term; yyval.term->wrapped = yyval.term->wrapped + 1; ;
3183     break;}
3184 case 370:
3185 { yyval.term = makeSimpleTermNode (yyvsp[0].ltok); ;
3186     break;}
3187 case 371:
3188 { yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3189     break;}
3190 case 373:
3191 { yyval.term = makePostfixTermNode2 (yyvsp[-1].term, yyvsp[0].ltok); ;
3192     break;}
3193 case 374:
3194 { ltoken_markOwned (yyvsp[0].ltok); yyval.term = makeSelectTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].ltok); ;
3195     break;}
3196 case 375:
3197 { ltoken_markOwned (yyvsp[0].ltok); yyval.term = makeMapTermNode (yyvsp[-2].term, yyvsp[-1].ltok, yyvsp[0].ltok); ;
3198     break;}
3199 case 376:
3200 { yyval.term = updateSqBracketedNode (yyvsp[-2].term, makeSqBracketedNode (yyvsp[-1].ltok, termNodeList_new (),  yyvsp[0].ltok), 
3201                                 (termNode)0); ;
3202     break;}
3203 case 377:
3204 { yyval.term = updateSqBracketedNode (yyvsp[-3].term, makeSqBracketedNode (yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok), (termNode)0); ;
3205     break;}
3206 case 378:
3207 { yyval.term = yyvsp[-2].term; yyval.term->given = sort_lookupName (ltoken_getText (yyvsp[0].ltok)); ;
3208     break;}
3209 case 379:
3210 { yyval.termlist = termNodeList_push (termNodeList_new (),  yyvsp[0].term); ;
3211     break;}
3212 case 380:
3213 { yyval.termlist = termNodeList_push (yyvsp[-2].termlist, yyvsp[0].term); ;
3214     break;}
3215 case 386:
3216 { yyval.term = makeSimpleTermNode (yyvsp[0].ltok); ;
3217     break;}
3218 case 387:
3219 { yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, yyvsp[-1].termlist, yyvsp[0].ltok); ;
3220     break;}
3221 case 388:
3222 { yyval.term = makeUnchangedTermNode1 (yyvsp[-3].ltok, yyvsp[-1].ltok); ;
3223     break;}
3224 case 389:
3225 { yyval.term = makeUnchangedTermNode2 (yyvsp[-3].ltok, yyvsp[-1].storereflist); ;
3226     break;}
3227 case 390:
3228 { termNodeList x = termNodeList_new (); 
3229      termNodeList_addh (x, yyvsp[-1].term);
3230      yyval.term = makeOpCallTermNode (yyvsp[-3].ltok, yyvsp[-2].ltok, x, yyvsp[0].ltok); 
3231    ;
3232     break;}
3233 case 391:
3234 { termNodeList x = termNodeList_new ();
3235      termNodeList_addh (x, yyvsp[-3].term);
3236      termNodeList_addh (x, yyvsp[-1].term);
3237      yyval.term = makeOpCallTermNode (yyvsp[-5].ltok, yyvsp[-4].ltok, x, yyvsp[0].ltok); 
3238    ;
3239     break;}
3240 case 392:
3241 { yyval.term = makeSizeofTermNode (yyvsp[-3].ltok, yyvsp[-1].lcltypespec); ;
3242     break;}
3243 case 393:
3244 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_int); ;
3245     break;}
3246 case 394:
3247 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_cstring); ;
3248     break;}
3249 case 395:
3250 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_char); ;
3251     break;}
3252 case 396:
3253 { yyval.term = makeLiteralTermNode (yyvsp[0].ltok, sort_double); ;
3254     break;}
3255 case 397:
3256 { yyval.quantifiers = quantifierNodeList_add (quantifierNodeList_new (),  yyvsp[0].quantifier); ;
3257     break;}
3258 case 398:
3259 { yyval.quantifiers = quantifierNodeList_add (yyvsp[-1].quantifiers, yyvsp[0].quantifier); ;
3260     break;}
3261 case 399:
3262 { scopeInfo si = (scopeInfo) dmalloc (sizeof (*si));
3263                    si->kind = SPE_QUANT;
3264                    symtable_enterScope (g_symtab, si); ;
3265     break;}
3266 case 400:
3267 { yyval.quantifier = makeQuantifierNode (yyvsp[0].vars, yyvsp[-2].ltok); ;
3268     break;}
3269 case 401:
3270 { yyval.vars = varNodeList_add (varNodeList_new (),  yyvsp[0].var); ;
3271     break;}
3272 case 402:
3273 { yyval.vars = varNodeList_add (yyvsp[-2].vars, yyvsp[0].var); ;
3274     break;}
3275 case 403:
3276 { yyval.var = makeVarNode (yyvsp[-2].ltok, FALSE, yyvsp[0].lcltypespec); ;
3277     break;}
3278 case 404:
3279 { yyval.var = makeVarNode (yyvsp[-3].ltok, TRUE, yyvsp[0].lcltypespec); ;
3280     break;}
3281 }
3282    /* the action file gets copied in in place of this dollarsign */
3283
3284 \f
3285   yyvsp -= yylen;
3286   yyssp -= yylen;
3287 #ifdef YYLSP_NEEDED
3288   yylsp -= yylen;
3289 #endif
3290
3291 #if YYDEBUG != 0
3292   if (yydebug)
3293     {
3294       short *ssp1 = yyss - 1;
3295       fprintf (stderr, "state stack now");
3296       while (ssp1 != yyssp)
3297         fprintf (stderr, " %d", *++ssp1);
3298       fprintf (stderr, "\n");
3299     }
3300 #endif
3301
3302   *++yyvsp = yyval;
3303
3304 #ifdef YYLSP_NEEDED
3305   yylsp++;
3306   if (yylen == 0)
3307     {
3308       yylsp->first_line = yylloc.first_line;
3309       yylsp->first_column = yylloc.first_column;
3310       yylsp->last_line = (yylsp-1)->last_line;
3311       yylsp->last_column = (yylsp-1)->last_column;
3312       yylsp->text = 0;
3313     }
3314   else
3315     {
3316       yylsp->last_line = (yylsp+yylen-1)->last_line;
3317       yylsp->last_column = (yylsp+yylen-1)->last_column;
3318     }
3319 #endif
3320
3321   /* Now "shift" the result of the reduction.
3322      Determine what state that goes to,
3323      based on the state we popped back to
3324      and the rule number reduced by.  */
3325
3326   yyn = yyr1[yyn];
3327
3328   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3329   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3330     yystate = yytable[yystate];
3331   else
3332     yystate = yydefgoto[yyn - YYNTBASE];
3333
3334   goto yynewstate;
3335
3336 yyerrlab:   /* here on detecting error */
3337
3338   if (! yyerrstatus)
3339     /* If not already recovering from an error, report this error.  */
3340     {
3341       ++yynerrs;
3342
3343 #ifdef YYERROR_VERBOSE
3344       yyn = yypact[yystate];
3345
3346       if (yyn > YYFLAG && yyn < YYLAST)
3347         {
3348           int size = 0;
3349           char *msg;
3350           int x, count;
3351
3352           count = 0;
3353           /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
3354           for (x = (yyn < 0 ? -yyn : 0);
3355                x < (sizeof(yytname) / sizeof(char *)); x++)
3356             if (yycheck[x + yyn] == x)
3357               size += strlen(yytname[x]) + 15, count++;
3358           msg = (char *) malloc(size + 15);
3359           if (msg != 0)
3360             {
3361               strcpy(msg, "parse error");
3362
3363               if (count < 5)
3364                 {
3365                   count = 0;
3366                   for (x = (yyn < 0 ? -yyn : 0);
3367                        x < (sizeof(yytname) / sizeof(char *)); x++)
3368                     if (yycheck[x + yyn] == x)
3369                       {
3370                         strcat(msg, count == 0 ? ", expecting `" : " or `");
3371                         strcat(msg, yytname[x]);
3372                         strcat(msg, "'");
3373                         count++;
3374                       }
3375                 }
3376               yyerror(msg);
3377               free(msg);
3378             }
3379           else
3380             yyerror ("parse error; also virtual memory exceeded");
3381         }
3382       else
3383 #endif /* YYERROR_VERBOSE */
3384         yyerror("parse error");
3385     }
3386
3387   goto yyerrlab1;
3388 yyerrlab1:   /* here on error raised explicitly by an action */
3389
3390   if (yyerrstatus == 3)
3391     {
3392       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
3393
3394       /* return failure if at end of input */
3395       if (yychar == YYEOF)
3396         YYABORT;
3397
3398 #if YYDEBUG != 0
3399       if (yydebug)
3400         fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3401 #endif
3402
3403       yychar = YYEMPTY;
3404     }
3405
3406   /* Else will try to reuse lookahead token
3407      after shifting the error token.  */
3408
3409   yyerrstatus = 3;              /* Each real token shifted decrements this */
3410
3411   goto yyerrhandle;
3412
3413 yyerrdefault:  /* current state does not do anything special for the error token. */
3414
3415 #if 0
3416   /* This is wrong; only states that explicitly want error tokens
3417      should shift them.  */
3418   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
3419   if (yyn) goto yydefault;
3420 #endif
3421
3422 yyerrpop:   /* pop the current state because it cannot handle the error token */
3423
3424   if (yyssp == yyss) YYABORT;
3425   yyvsp--;
3426   yystate = *--yyssp;
3427 #ifdef YYLSP_NEEDED
3428   yylsp--;
3429 #endif
3430
3431 #if YYDEBUG != 0
3432   if (yydebug)
3433     {
3434       short *ssp1 = yyss - 1;
3435       fprintf (stderr, "Error: state stack now");
3436       while (ssp1 != yyssp)
3437         fprintf (stderr, " %d", *++ssp1);
3438       fprintf (stderr, "\n");
3439     }
3440 #endif
3441
3442 yyerrhandle:
3443
3444   yyn = yypact[yystate];
3445   if (yyn == YYFLAG)
3446     goto yyerrdefault;
3447
3448   yyn += YYTERROR;
3449   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3450     goto yyerrdefault;
3451
3452   yyn = yytable[yyn];
3453   if (yyn < 0)
3454     {
3455       if (yyn == YYFLAG)
3456         goto yyerrpop;
3457       yyn = -yyn;
3458       goto yyreduce;
3459     }
3460   else if (yyn == 0)
3461     goto yyerrpop;
3462
3463   if (yyn == YYFINAL)
3464     YYACCEPT;
3465
3466 #if YYDEBUG != 0
3467   if (yydebug)
3468     fprintf(stderr, "Shifting error token, ");
3469 #endif
3470
3471   *++yyvsp = yylval;
3472 #ifdef YYLSP_NEEDED
3473   *++yylsp = yylloc;
3474 #endif
3475
3476   yystate = yyn;
3477   goto yynewstate;
3478
3479  yyacceptlab:
3480   /* YYACCEPT comes here.  */
3481   if (yyfree_stacks)
3482     {
3483       free (yyss);
3484       free (yyvs);
3485 #ifdef YYLSP_NEEDED
3486       free (yyls);
3487 #endif
3488     }
3489   return 0;
3490
3491  yyabortlab:
3492   /* YYABORT comes here.  */
3493   if (yyfree_stacks)
3494     {
3495       free (yyss);
3496       free (yyvs);
3497 #ifdef YYLSP_NEEDED
3498       free (yyls);
3499 #endif
3500     }
3501   return 1;
3502 }
3503
3504
3505 # include "bison.reset"
3506
3507 /*
3508 ** yytext is set in lex scanner 
3509 ** extern YYSTYPE yylval;  
3510 ** yylval is defined by code generated by bison 
3511 */
3512
3513 void ylerror (char *s) 
3514 {
3515   /* 
3516   ** This resetting of the left context is very important when multiple
3517   ** files are to be parsed.  We do not want failures to propagate.
3518   ** Lex/Yacc does not reset the flags when the parsing goes bad.  
3519   ** BEGIN 0;        
3520   **/
3521
3522   /*@-mustfree@*/
3523   lclfatalerror (yllval.ltok,
3524                  message ("%s: Token code: %s, Token String: %s", 
3525                           cstring_fromChars (s), 
3526                           ltoken_unparseCodeName (yllval.ltok), 
3527                           ltoken_getRawString (yllval.ltok)));
3528   /*@=mustfree@*/
3529 }
3530
3531 static void yyprint (FILE *f, int t, YYSTYPE value) 
3532 {
3533   fprintf (f, " type: %d (%s)", t, 
3534            cstring_toCharsSafe (ltoken_getRawString (value.ltok)));
3535 }
3536
3537
3538
3539
3540
3541
3542
3543 /*
3544 ** Resets all flags in bison.head
3545 */
3546
3547
3548 /*@=allmacros@*/
3549 /*@=boolint@*/
3550 /*@=charint@*/
3551 /*@=macroparams@*/
3552 /*@=macroundef@*/
3553 /*@=unreachable@*/
3554 /*@=macrospec@*/
3555 /*@=varuse@*/
3556 /*@=ignorequals@*/
3557 /*@=macrostmt@*/
3558 /*@=noeffect@*/
3559 /*@=shadow@*/
3560 /*@=exitarg@*/
3561 /*@=macroredef@*/
3562 /*@=uniondef@*/
3563 /*@=compdef@*/
3564 /*@=matchfields@*/
3565 /*@=exportlocal@*/
3566 /*@=evalorderuncon@*/
3567 /*@=exportheader@*/
3568 /*@=typeuse@*/
3569 /*@=redecl@*/
3570 /*@=redef@*/
3571 /*@=noparams@*/
3572 /*@=ansireserved@*/
3573 /*@=fielduse@*/
3574 /*@=ifblock@*/
3575 /*@=elseifcomplete@*/
3576 /*@=whileblock@*/
3577 /*@=forblock@*/
3578 /*@=branchstate@*/
3579 /*@=readonlytrans@*/
3580 /*@=namechecks@*/
3581 /*@=usedef@*/
3582 /*@=systemunrecog@*/
3583 /*@=dependenttrans@*/
3584 /*@=unqualifiedtrans@*/
3585 /*@=declundef@*/
3586
3587
3588 /*drl added 11/27/2001*/
3589 /*@=bounds@*/
This page took 0.3331 seconds and 5 git commands to generate.