]> andersk Git - splint.git/blame - src/mtgrammar.c
Cleaned up flags to generate manual help.
[splint.git] / src / mtgrammar.c
CommitLineData
28bf4b0b 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@*/
bb7c2085 44/*@-nullpass@*/
45/*@-nullptrarith*/
46/*@-usereleased@*/
60eced23 47/*@-declundef@*/
28bf4b0b 48
bbed3d50 49/*drl added 11/27/2001*/
bb7c2085 50/*@-bounds@*/
28bf4b0b 51/* < end of bison.head > */
52
53
54/* A Bison parser, made from mtgrammar.y
55 by GNU Bison version 1.28 */
56
57#define YYBISON 1 /* Identify Bison output. */
58
59#define yyparse mtparse
60#define yylex mtlex
61#define yyerror mterror
62#define yylval mtlval
63#define yychar mtchar
64#define yydebug mtdebug
65#define yynerrs mtnerrs
66#define MT_BADTOK 257
67#define MT_END 258
68#define MT_STATE 259
69#define MT_GLOBAL 260
70#define MT_CONTEXT 261
71#define MT_ONEOF 262
72#define MT_DEFAULTS 263
73#define MT_DEFAULT 264
74#define MT_REFERENCE 265
75#define MT_PARAMETER 266
b072092f 76#define MT_RESULT 267
77#define MT_CLAUSE 268
12f2ffe9 78#define MT_LITERAL 269
79#define MT_NULL 270
80#define MT_ANNOTATIONS 271
81#define MT_ARROW 272
82#define MT_MERGE 273
83#define MT_TRANSFERS 274
84#define MT_PRECONDITIONS 275
85#define MT_POSTCONDITIONS 276
86#define MT_LOSEREFERENCE 277
87#define MT_AS 278
88#define MT_ERROR 279
89#define MT_PLUS 280
90#define MT_STAR 281
91#define MT_BAR 282
92#define MT_LPAREN 283
93#define MT_RPAREN 284
94#define MT_LBRACKET 285
95#define MT_RBRACKET 286
96#define MT_LBRACE 287
97#define MT_RBRACE 288
98#define MT_COMMA 289
99#define MT_CHAR 290
100#define MT_INT 291
101#define MT_FLOAT 292
102#define MT_DOUBLE 293
103#define MT_VOID 294
104#define MT_ANYTYPE 295
105#define MT_INTEGRALTYPE 296
106#define MT_UNSIGNEDINTEGRALTYPE 297
107#define MT_SIGNEDINTEGRALTYPE 298
108#define MT_CONST 299
109#define MT_VOLATILE 300
110#define MT_STRINGLIT 301
111#define MT_IDENT 302
28bf4b0b 112
28bf4b0b 113
114
115# include "bison.reset"
116# include "lclintMacros.nf"
117# include "llbasic.h"
28bf4b0b 118
3e3ec469 119# ifndef S_SPLINT_S
b7b694d6 120extern ctype mtscanner_lookupType (mttok p_tok) /*@modifies p_tok@*/ ;
121# endif
122
68de3f33 123 /*@i523@*/ /* can't include these here
b7b694d6 124 # include "mtgrammar.h"
125 # include "mtscanner.h"
126 */
127
bb7c2085 128static /*@exits@*/ void mterror (char *);
28bf4b0b 129
130/*@-noparams@*/ /* Can't list params since YYSTYPE isn't defined yet. */
131static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */);
132/*@=noparams@*/
133
134# define YYPRINT(file, type, value) yyprint (file, type, value)
135
136# define YYDEBUG 1
137
138# include "bison.head"
139
140
28bf4b0b 141typedef union {
142 mttok tok;
143 mtDeclarationNode mtdecl;
144 mtDeclarationPiece mtpiece;
145 mtDeclarationPieces mtpieces;
146 mtContextNode mtcontext;
147 mtValuesNode mtvalues;
148 mtDefaultsNode mtdefaults;
149 mtDefaultsDeclList mtdeflist;
150 mtAnnotationsNode mtannotations;
151 mtAnnotationList mtannotlist;
152 mtAnnotationDecl mtannotdecl;
153 mtMergeNode mtmerge;
154 mtMergeItem mtmergeitem;
155 mtMergeClauseList mtmergeclauselist;
156 mtMergeClause mtmergeclause;
157 mtTransferClauseList mttransferclauselist;
158 mtTransferClause mttransferclause;
159 mtTransferAction mttransferaction;
160 mtLoseReferenceList mtlosereferencelist;
161 mtLoseReference mtlosereference;
162
163 /*@only@*/ cstringList cstringlist;
164 ctype ctyp;
165 /*@only@*/ qtype qtyp;
166 int count;
167} YYSTYPE;
168#ifndef YYDEBUG
169#define YYDEBUG 1
170#endif
171
172#include <stdio.h>
173
174#ifndef __cplusplus
175#ifndef __STDC__
176#define const
177#endif
178#endif
179
180
181
12f2ffe9 182#define YYFINAL 135
28bf4b0b 183#define YYFLAG -32768
12f2ffe9 184#define YYNTBASE 49
28bf4b0b 185
12f2ffe9 186#define YYTRANSLATE(x) ((unsigned)(x) <= 302 ? yytranslate[x] : 92)
28bf4b0b 187
188static const char yytranslate[] = { 0,
189 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
195 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
197 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
199 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
201 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
204 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
208 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
209 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
211 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
214 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
215 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
216 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
217 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
12f2ffe9 218 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
219 47, 48
28bf4b0b 220};
221
222#if YYDEBUG != 0
223static const short yyprhs[] = { 0,
224 0, 1, 3, 7, 12, 15, 16, 19, 21, 23,
225 25, 27, 29, 31, 33, 35, 37, 39, 42, 43,
12f2ffe9 226 45, 48, 51, 54, 57, 60, 63, 64, 66, 68,
227 71, 73, 77, 80, 81, 83, 85, 87, 90, 92,
228 95, 98, 102, 104, 106, 108, 111, 115, 118, 122,
229 124, 126, 128, 130, 132, 134, 136, 138, 140, 142,
230 144, 147, 149, 153, 156, 159, 163, 168, 171, 173,
231 176, 181, 184, 186, 189, 195, 197, 199, 202, 205,
232 208, 211, 213, 216, 220, 222, 225, 231, 233, 235,
233 237, 240
28bf4b0b 234};
235
236static const short yyrhs[] = { -1,
12f2ffe9 237 50, 0, 5, 51, 4, 0, 6, 5, 51, 4,
238 0, 48, 52, 0, 0, 53, 52, 0, 54, 0,
239 69, 0, 72, 0, 71, 0, 74, 0, 77, 0,
240 83, 0, 81, 0, 82, 0, 84, 0, 7, 56,
241 0, 0, 56, 0, 12, 57, 0, 11, 57, 0,
242 13, 57, 0, 14, 57, 0, 15, 57, 0, 16,
243 57, 0, 0, 58, 0, 59, 0, 59, 62, 0,
244 60, 0, 59, 28, 58, 0, 67, 61, 0, 0,
245 59, 0, 63, 0, 66, 0, 63, 66, 0, 27,
246 0, 27, 65, 0, 27, 63, 0, 27, 65, 63,
247 0, 45, 0, 46, 0, 64, 0, 65, 64, 0,
248 29, 62, 30, 0, 31, 32, 0, 66, 31, 32,
249 0, 36, 0, 37, 0, 38, 0, 39, 0, 40,
250 0, 41, 0, 42, 0, 43, 0, 44, 0, 68,
251 0, 48, 0, 8, 70, 0, 48, 0, 48, 35,
252 70, 0, 10, 91, 0, 9, 73, 0, 56, 18,
253 91, 0, 56, 18, 91, 73, 0, 17, 75, 0,
254 76, 0, 76, 75, 0, 48, 55, 18, 91, 0,
255 19, 78, 0, 79, 0, 79, 78, 0, 80, 26,
256 80, 18, 89, 0, 91, 0, 27, 0, 21, 87,
257 0, 22, 87, 0, 20, 87, 0, 23, 85, 0,
258 86, 0, 86, 85, 0, 91, 18, 90, 0, 88,
259 0, 88, 87, 0, 91, 24, 91, 18, 89, 0,
260 91, 0, 90, 0, 25, 0, 25, 47, 0, 48,
261 0
28bf4b0b 262};
263
264#endif
265
266#if YYDEBUG != 0
267static const short yyrline[] = { 0,
b7b694d6 268 152, 153, 156, 158, 162, 166, 167, 171, 172, 173,
269 174, 175, 176, 177, 178, 179, 180, 183, 187, 188,
270 191, 192, 193, 194, 195, 196, 203, 204, 207, 208,
271 211, 212, 216, 219, 220, 224, 225, 226, 229, 230,
272 231, 232, 235, 236, 239, 240, 243, 244, 245, 252,
273 253, 254, 255, 256, 257, 258, 259, 260, 261, 267,
274 270, 273, 274, 278, 281, 284, 286, 290, 293, 294,
275 298, 302, 305, 306, 309, 313, 314, 317, 320, 323,
276 326, 329, 330, 333, 336, 337, 340, 344, 345, 348,
277 349, 352
28bf4b0b 278};
279#endif
280
281
282#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
283
284static const char * const yytname[] = { "$","error","$undefined.","MT_BADTOK",
285"MT_END","MT_STATE","MT_GLOBAL","MT_CONTEXT","MT_ONEOF","MT_DEFAULTS","MT_DEFAULT",
12f2ffe9 286"MT_REFERENCE","MT_PARAMETER","MT_RESULT","MT_CLAUSE","MT_LITERAL","MT_NULL",
287"MT_ANNOTATIONS","MT_ARROW","MT_MERGE","MT_TRANSFERS","MT_PRECONDITIONS","MT_POSTCONDITIONS",
288"MT_LOSEREFERENCE","MT_AS","MT_ERROR","MT_PLUS","MT_STAR","MT_BAR","MT_LPAREN",
289"MT_RPAREN","MT_LBRACKET","MT_RBRACKET","MT_LBRACE","MT_RBRACE","MT_COMMA","MT_CHAR",
290"MT_INT","MT_FLOAT","MT_DOUBLE","MT_VOID","MT_ANYTYPE","MT_INTEGRALTYPE","MT_UNSIGNEDINTEGRALTYPE",
28bf4b0b 291"MT_SIGNEDINTEGRALTYPE","MT_CONST","MT_VOLATILE","MT_STRINGLIT","MT_IDENT","file",
292"mtsDeclaration","declarationNode","declarationPieces","declarationPiece","contextDeclaration",
293"optContextSelection","contextSelection","optType","typeExpression","completeType",
294"completeTypeAux","optCompleteType","abstractDecl","pointers","innerMods","innerModsList",
295"abstractDeclBase","typeSpecifier","typeName","valuesDeclaration","valuesList",
296"defaultNode","defaultsDeclaration","defaultDeclarationList","annotationsDeclaration",
297"annotationsDeclarationList","annotationDeclaration","mergeDeclaration","mergeClauses",
298"mergeClause","mergeItem","preconditionsDeclaration","postconditionsDeclaration",
299"transfersDeclaration","loseReferenceDeclaration","lostClauses","lostClause",
300"transferClauses","transferClause","transferAction","errorAction","valueChoice", NULL
301};
302#endif
303
304static const short yyr1[] = { 0,
12f2ffe9 305 49, 49, 50, 50, 51, 52, 52, 53, 53, 53,
306 53, 53, 53, 53, 53, 53, 53, 54, 55, 55,
307 56, 56, 56, 56, 56, 56, 57, 57, 58, 58,
308 59, 59, 60, 61, 61, 62, 62, 62, 63, 63,
309 63, 63, 64, 64, 65, 65, 66, 66, 66, 67,
310 67, 67, 67, 67, 67, 67, 67, 67, 67, 68,
311 69, 70, 70, 71, 72, 73, 73, 74, 75, 75,
312 76, 77, 78, 78, 79, 80, 80, 81, 82, 83,
313 84, 85, 85, 86, 87, 87, 88, 89, 89, 90,
314 90, 91
28bf4b0b 315};
316
317static const short yyr2[] = { 0,
318 0, 1, 3, 4, 2, 0, 2, 1, 1, 1,
319 1, 1, 1, 1, 1, 1, 1, 2, 0, 1,
12f2ffe9 320 2, 2, 2, 2, 2, 2, 0, 1, 1, 2,
321 1, 3, 2, 0, 1, 1, 1, 2, 1, 2,
322 2, 3, 1, 1, 1, 2, 3, 2, 3, 1,
323 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
324 2, 1, 3, 2, 2, 3, 4, 2, 1, 2,
325 4, 2, 1, 2, 5, 1, 1, 2, 2, 2,
326 2, 1, 2, 3, 1, 2, 5, 1, 1, 1,
327 2, 1
28bf4b0b 328};
329
330static const short yydefact[] = { 1,
331 0, 0, 2, 6, 0, 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0, 0, 5, 6, 8, 9,
333 11, 10, 12, 13, 15, 16, 14, 17, 3, 0,
12f2ffe9 334 27, 27, 27, 27, 27, 27, 18, 62, 61, 0,
335 65, 92, 64, 19, 68, 69, 77, 72, 73, 0,
336 76, 80, 85, 0, 78, 79, 81, 82, 0, 7,
337 4, 50, 51, 52, 53, 54, 55, 56, 57, 58,
338 60, 22, 28, 29, 31, 34, 59, 21, 23, 24,
339 25, 26, 0, 0, 0, 20, 70, 74, 0, 86,
340 0, 83, 0, 39, 0, 0, 0, 30, 36, 37,
341 35, 33, 63, 66, 0, 0, 0, 90, 84, 43,
342 44, 41, 45, 40, 32, 0, 48, 38, 0, 67,
343 71, 0, 0, 91, 42, 46, 47, 49, 75, 89,
344 88, 87, 0, 0, 0
28bf4b0b 345};
346
12f2ffe9 347static const short yydefgoto[] = { 133,
348 3, 5, 17, 18, 19, 85, 40, 72, 73, 74,
349 75, 102, 98, 99, 113, 114, 100, 76, 77, 20,
350 39, 21, 22, 41, 23, 45, 46, 24, 48, 49,
351 50, 25, 26, 27, 28, 57, 58, 52, 53, 129,
352 130, 54
28bf4b0b 353};
354
12f2ffe9 355static const short yypact[] = { 4,
356 -37, 35,-32768, 36, 37, -37, 21, 2, 21, 17,
357 18, -19, 17, 17, 17, 17,-32768, 36,-32768,-32768,
358-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 63,
359 -23, -23, -23, -23, -23, -23,-32768, 33,-32768, 51,
360-32768,-32768,-32768, 21,-32768, 18,-32768,-32768, -19, 44,
361-32768,-32768, 17, 47,-32768,-32768,-32768, 17, 54,-32768,
28bf4b0b 362-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
12f2ffe9 363-32768,-32768,-32768, -5,-32768, -23,-32768,-32768,-32768,-32768,
364-32768,-32768, 2, 17, 55,-32768,-32768,-32768, -19,-32768,
365 17,-32768, 50, -15, -23, 20, 45,-32768, 23, 49,
366 48,-32768,-32768, 21, 17, 60, 64, 38,-32768,-32768,
367-32768,-32768,-32768, -15,-32768, 53,-32768, 49, 52,-32768,
368-32768, -20, -20,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
369-32768,-32768, 86, 87,-32768
28bf4b0b 370};
371
372static const short yypgoto[] = {-32768,
12f2ffe9 373-32768, 82, 71,-32768,-32768,-32768, -6, 28, -4, 14,
374-32768,-32768, -3, -87, -22,-32768, -2,-32768,-32768,-32768,
375 11,-32768,-32768, -8,-32768, 56,-32768,-32768, 57,-32768,
376 9,-32768,-32768,-32768,-32768, 41,-32768, -11,-32768, -18,
377 7, -10
28bf4b0b 378};
379
380
12f2ffe9 381#define YYLAST 113
28bf4b0b 382
383
12f2ffe9 384static const short yytable[] = { 43,
385 37, 51, 55, 56, 108, 59, 112, 47, 1, 2,
386 4, 94, 62, 63, 64, 65, 66, 67, 68, 69,
387 70, 94, 95, 96, 71, 97, 125, 42, 42, 110,
388 111, 31, 32, 33, 34, 35, 36, 86, 51, 6,
389 29, 90, 7, 8, 9, 10, 94, 59, 96, 38,
390 97, 96, 11, 97, 12, 13, 14, 15, 16, 78,
391 79, 80, 81, 82, 42, 44, 61, 83, 84, 89,
392 91, 93, 105, 104, 108, 95, 117, 122, 51, 119,
393 107, 123, 127, 128, 124, 134, 135, 30, 60, 101,
394 115, 126, 116, 103, 121, 120, 118, 106, 92, 109,
395 0, 87, 0, 0, 132, 88, 0, 0, 0, 0,
396 0, 131, 131
28bf4b0b 397};
398
399static const short yycheck[] = { 10,
12f2ffe9 400 7, 12, 14, 15, 25, 16, 94, 27, 5, 6,
401 48, 27, 36, 37, 38, 39, 40, 41, 42, 43,
402 44, 27, 28, 29, 48, 31, 114, 48, 48, 45,
403 46, 11, 12, 13, 14, 15, 16, 44, 49, 5,
404 4, 53, 7, 8, 9, 10, 27, 58, 29, 48,
405 31, 29, 17, 31, 19, 20, 21, 22, 23, 32,
406 33, 34, 35, 36, 48, 48, 4, 35, 18, 26,
407 24, 18, 18, 84, 25, 28, 32, 18, 89, 31,
408 91, 18, 30, 32, 47, 0, 0, 6, 18, 76,
409 95, 114, 96, 83, 105, 104, 99, 89, 58, 93,
410 -1, 46, -1, -1, 123, 49, -1, -1, -1, -1,
411 -1, 122, 123
28bf4b0b 412};
413#define YYPURE 1
414
415/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
3e3ec469 416
28bf4b0b 417/* This file comes from bison-1.28. */
418
419/* Skeleton output parser for bison,
420 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
421
422 This program is free software; you can redistribute it and/or modify
423 it under the terms of the GNU General Public License as published by
424 the Free Software Foundation; either version 2, or (at your option)
425 any later version.
426
427 This program is distributed in the hope that it will be useful,
428 but WITHOUT ANY WARRANTY; without even the implied warranty of
429 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
430 GNU General Public License for more details.
431
432 You should have received a copy of the GNU General Public License
433 along with this program; if not, write to the Free Software
434 Foundation, Inc., 59 Temple Place - Suite 330,
435 Boston, MA 02111-1307, USA. */
436
437/* As a special exception, when this file is copied by Bison into a
438 Bison output file, you may use that output file without restriction.
439 This special exception was added by the Free Software Foundation
440 in version 1.24 of Bison. */
441
442/* This is the parser code that is written into each bison parser
443 when the %semantic_parser declaration is not specified in the grammar.
444 It was written by Richard Stallman by simplifying the hairy parser
445 used when %semantic_parser is specified. */
446
447#ifndef YYSTACK_USE_ALLOCA
448#ifdef alloca
449#define YYSTACK_USE_ALLOCA
450#else /* alloca not defined */
451#ifdef __GNUC__
452#define YYSTACK_USE_ALLOCA
453#define alloca __builtin_alloca
454#else /* not GNU C. */
455#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
456#define YYSTACK_USE_ALLOCA
457#include <alloca.h>
458#else /* not sparc */
459/* We think this test detects Watcom and Microsoft C. */
460/* This used to test MSDOS, but that is a bad idea
461 since that symbol is in the user namespace. */
462#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
463#if 0 /* No need for malloc.h, which pollutes the namespace;
464 instead, just don't use alloca. */
465#include <malloc.h>
466#endif
467#else /* not MSDOS, or __TURBOC__ */
468#if defined(_AIX)
469/* I don't know what this was needed for, but it pollutes the namespace.
470 So I turned it off. rms, 2 May 1997. */
471/* #include <malloc.h> */
472 #pragma alloca
473#define YYSTACK_USE_ALLOCA
474#else /* not MSDOS, or __TURBOC__, or _AIX */
475#if 0
476#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
477 and on HPUX 10. Eventually we can turn this on. */
478#define YYSTACK_USE_ALLOCA
479#define alloca __builtin_alloca
480#endif /* __hpux */
481#endif
482#endif /* not _AIX */
483#endif /* not MSDOS, or __TURBOC__ */
484#endif /* not sparc */
485#endif /* not GNU C */
486#endif /* alloca not defined */
487#endif /* YYSTACK_USE_ALLOCA not defined */
488
489#ifdef YYSTACK_USE_ALLOCA
490#define YYSTACK_ALLOC alloca
491#else
492#define YYSTACK_ALLOC malloc
493#endif
494
495/* Note: there must be only one dollar sign in this file.
496 It is replaced by the list of actions, each action
497 as one case of the switch. */
498
499#define yyerrok (yyerrstatus = 0)
500#define yyclearin (yychar = YYEMPTY)
501#define YYEMPTY -2
502#define YYEOF 0
503#define YYACCEPT goto yyacceptlab
504#define YYABORT goto yyabortlab
505#define YYERROR goto yyerrlab1
506/* Like YYERROR except do call yyerror.
507 This remains here temporarily to ease the
508 transition to the new meaning of YYERROR, for GCC.
509 Once GCC version 2 has supplanted version 1, this can go. */
510#define YYFAIL goto yyerrlab
511#define YYRECOVERING() (!!yyerrstatus)
512#define YYBACKUP(token, value) \
513do \
514 if (yychar == YYEMPTY && yylen == 1) \
515 { yychar = (token), yylval = (value); \
516 yychar1 = YYTRANSLATE (yychar); \
517 YYPOPSTACK; \
518 goto yybackup; \
519 } \
520 else \
521 { yyerror ("syntax error: cannot back up"); YYERROR; } \
522while (0)
523
524#define YYTERROR 1
525#define YYERRCODE 256
526
527#ifndef YYPURE
528#define YYLEX yylex()
529#endif
530
531#ifdef YYPURE
532#ifdef YYLSP_NEEDED
533#ifdef YYLEX_PARAM
534#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
535#else
536#define YYLEX yylex(&yylval, &yylloc)
537#endif
538#else /* not YYLSP_NEEDED */
539#ifdef YYLEX_PARAM
540#define YYLEX yylex(&yylval, YYLEX_PARAM)
541#else
542#define YYLEX yylex(&yylval)
543#endif
544#endif /* not YYLSP_NEEDED */
545#endif
546
547/* If nonreentrant, generate the variables here */
548
549#ifndef YYPURE
550
551int yychar; /* the lookahead symbol */
552YYSTYPE yylval; /* the semantic value of the */
553 /* lookahead symbol */
554
555#ifdef YYLSP_NEEDED
556YYLTYPE yylloc; /* location data for the lookahead */
557 /* symbol */
558#endif
559
560int yynerrs; /* number of parse errors so far */
561#endif /* not YYPURE */
562
563#if YYDEBUG != 0
564int yydebug; /* nonzero means print parse trace */
565/* Since this is uninitialized, it does not stop multiple parsers
566 from coexisting. */
567#endif
568
569/* YYINITDEPTH indicates the initial size of the parser's stacks */
570
571#ifndef YYINITDEPTH
572#define YYINITDEPTH 200
573#endif
574
575/* YYMAXDEPTH is the maximum size the stacks can grow to
576 (effective only if the built-in stack extension method is used). */
577
578#if YYMAXDEPTH == 0
579#undef YYMAXDEPTH
580#endif
581
582#ifndef YYMAXDEPTH
583#define YYMAXDEPTH 10000
584#endif
585\f
586/* Define __yy_memcpy. Note that the size argument
587 should be passed with type unsigned int, because that is what the non-GCC
588 definitions require. With GCC, __builtin_memcpy takes an arg
589 of type size_t, but it can handle unsigned int. */
590
591#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
592#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
593#else /* not GNU C or C++ */
594#ifndef __cplusplus
595
596/* This is the most reliable way to avoid incompatibilities
597 in available built-in functions on various systems. */
598static void
599__yy_memcpy (to, from, count)
600 char *to;
601 char *from;
602 unsigned int count;
603{
604 register char *f = from;
605 register char *t = to;
606 register int i = count;
607
608 while (i-- > 0)
609 *t++ = *f++;
610}
611
612#else /* __cplusplus */
613
614/* This is the most reliable way to avoid incompatibilities
615 in available built-in functions on various systems. */
616static void
617__yy_memcpy (char *to, char *from, unsigned int count)
618{
619 register char *t = to;
620 register char *f = from;
621 register int i = count;
622
623 while (i-- > 0)
624 *t++ = *f++;
625}
626
627#endif
628#endif
629\f
3e3ec469 630
28bf4b0b 631
632/* The user can define YYPARSE_PARAM as the name of an argument to be passed
633 into yyparse. The argument should have type void *.
634 It should actually point to an object.
635 Grammar actions can access the variable by casting it
636 to the proper pointer type. */
637
638#ifdef YYPARSE_PARAM
639#ifdef __cplusplus
640#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
641#define YYPARSE_PARAM_DECL
642#else /* not __cplusplus */
643#define YYPARSE_PARAM_ARG YYPARSE_PARAM
644#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
645#endif /* not __cplusplus */
646#else /* not YYPARSE_PARAM */
647#define YYPARSE_PARAM_ARG
648#define YYPARSE_PARAM_DECL
649#endif /* not YYPARSE_PARAM */
650
651/* Prevent warning if -Wstrict-prototypes. */
652#ifdef __GNUC__
653#ifdef YYPARSE_PARAM
654int yyparse (void *);
655#else
656int yyparse (void);
657#endif
658#endif
659
660int
661yyparse(YYPARSE_PARAM_ARG)
662 YYPARSE_PARAM_DECL
663{
664 register int yystate;
665 register int yyn;
666 register short *yyssp;
667 register YYSTYPE *yyvsp;
668 int yyerrstatus; /* number of tokens to shift before error messages enabled */
669 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
670
671 short yyssa[YYINITDEPTH]; /* the state stack */
672 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
673
674 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
675 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
676
677#ifdef YYLSP_NEEDED
678 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
679 YYLTYPE *yyls = yylsa;
680 YYLTYPE *yylsp;
681
682#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
683#else
684#define YYPOPSTACK (yyvsp--, yyssp--)
685#endif
686
687 int yystacksize = YYINITDEPTH;
688 int yyfree_stacks = 0;
689
690#ifdef YYPURE
691 int yychar;
692 YYSTYPE yylval;
693 int yynerrs;
694#ifdef YYLSP_NEEDED
695 YYLTYPE yylloc;
696#endif
697#endif
698
699 YYSTYPE yyval; /* the variable used to return */
700 /* semantic values from the action */
701 /* routines */
702
703 int yylen;
704
705#if YYDEBUG != 0
706 if (yydebug)
707 fprintf(stderr, "Starting parse\n");
708#endif
709
710 yystate = 0;
711 yyerrstatus = 0;
712 yynerrs = 0;
713 yychar = YYEMPTY; /* Cause a token to be read. */
714
715 /* Initialize stack pointers.
716 Waste one element of value and location stack
717 so that they stay on the same level as the state stack.
718 The wasted elements are never initialized. */
719
720 yyssp = yyss - 1;
721 yyvsp = yyvs;
722#ifdef YYLSP_NEEDED
723 yylsp = yyls;
724#endif
725
726/* Push a new state, which is found in yystate . */
727/* In all cases, when you get here, the value and location stacks
728 have just been pushed. so pushing a state here evens the stacks. */
729yynewstate:
730
731 *++yyssp = yystate;
732
733 if (yyssp >= yyss + yystacksize - 1)
734 {
735 /* Give user a chance to reallocate the stack */
736 /* Use copies of these so that the &'s don't force the real ones into memory. */
737 YYSTYPE *yyvs1 = yyvs;
738 short *yyss1 = yyss;
739#ifdef YYLSP_NEEDED
740 YYLTYPE *yyls1 = yyls;
741#endif
742
743 /* Get the current used size of the three stacks, in elements. */
744 int size = yyssp - yyss + 1;
745
746#ifdef yyoverflow
747 /* Each stack pointer address is followed by the size of
748 the data in use in that stack, in bytes. */
749#ifdef YYLSP_NEEDED
750 /* This used to be a conditional around just the two extra args,
751 but that might be undefined if yyoverflow is a macro. */
752 yyoverflow("parser stack overflow",
753 &yyss1, size * sizeof (*yyssp),
754 &yyvs1, size * sizeof (*yyvsp),
755 &yyls1, size * sizeof (*yylsp),
756 &yystacksize);
757#else
758 yyoverflow("parser stack overflow",
759 &yyss1, size * sizeof (*yyssp),
760 &yyvs1, size * sizeof (*yyvsp),
761 &yystacksize);
762#endif
763
764 yyss = yyss1; yyvs = yyvs1;
765#ifdef YYLSP_NEEDED
766 yyls = yyls1;
767#endif
768#else /* no yyoverflow */
769 /* Extend the stack our own way. */
770 if (yystacksize >= YYMAXDEPTH)
771 {
772 yyerror("parser stack overflow");
773 if (yyfree_stacks)
774 {
775 free (yyss);
776 free (yyvs);
777#ifdef YYLSP_NEEDED
778 free (yyls);
779#endif
780 }
781 return 2;
782 }
783 yystacksize *= 2;
784 if (yystacksize > YYMAXDEPTH)
785 yystacksize = YYMAXDEPTH;
786#ifndef YYSTACK_USE_ALLOCA
787 yyfree_stacks = 1;
788#endif
789 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
790 __yy_memcpy ((char *)yyss, (char *)yyss1,
791 size * (unsigned int) sizeof (*yyssp));
792 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
793 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
794 size * (unsigned int) sizeof (*yyvsp));
795#ifdef YYLSP_NEEDED
796 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
797 __yy_memcpy ((char *)yyls, (char *)yyls1,
798 size * (unsigned int) sizeof (*yylsp));
799#endif
800#endif /* no yyoverflow */
801
802 yyssp = yyss + size - 1;
803 yyvsp = yyvs + size - 1;
804#ifdef YYLSP_NEEDED
805 yylsp = yyls + size - 1;
806#endif
807
808#if YYDEBUG != 0
809 if (yydebug)
810 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
811#endif
812
813 if (yyssp >= yyss + yystacksize - 1)
814 YYABORT;
815 }
816
817#if YYDEBUG != 0
818 if (yydebug)
819 fprintf(stderr, "Entering state %d\n", yystate);
820#endif
821
822 goto yybackup;
823 yybackup:
824
825/* Do appropriate processing given the current state. */
826/* Read a lookahead token if we need one and don't already have one. */
827/* yyresume: */
828
829 /* First try to decide what to do without reference to lookahead token. */
830
831 yyn = yypact[yystate];
832 if (yyn == YYFLAG)
833 goto yydefault;
834
835 /* Not known => get a lookahead token if don't already have one. */
836
837 /* yychar is either YYEMPTY or YYEOF
838 or a valid token in external form. */
839
840 if (yychar == YYEMPTY)
841 {
842#if YYDEBUG != 0
843 if (yydebug)
844 fprintf(stderr, "Reading a token: ");
845#endif
846 yychar = YYLEX;
847 }
848
849 /* Convert token to internal form (in yychar1) for indexing tables with */
850
851 if (yychar <= 0) /* This means end of input. */
852 {
853 yychar1 = 0;
854 yychar = YYEOF; /* Don't call YYLEX any more */
855
856#if YYDEBUG != 0
857 if (yydebug)
858 fprintf(stderr, "Now at end of input.\n");
859#endif
860 }
861 else
862 {
863 yychar1 = YYTRANSLATE(yychar);
864
865#if YYDEBUG != 0
866 if (yydebug)
867 {
868 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
869 /* Give the individual parser a way to print the precise meaning
870 of a token, for further debugging info. */
871#ifdef YYPRINT
872 YYPRINT (stderr, yychar, yylval);
873#endif
874 fprintf (stderr, ")\n");
875 }
876#endif
877 }
878
879 yyn += yychar1;
880 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
881 goto yydefault;
882
883 yyn = yytable[yyn];
884
885 /* yyn is what to do for this token type in this state.
886 Negative => reduce, -yyn is rule number.
887 Positive => shift, yyn is new state.
888 New state is final state => don't bother to shift,
889 just return success.
890 0, or most negative number => error. */
891
892 if (yyn < 0)
893 {
894 if (yyn == YYFLAG)
895 goto yyerrlab;
896 yyn = -yyn;
897 goto yyreduce;
898 }
899 else if (yyn == 0)
900 goto yyerrlab;
901
902 if (yyn == YYFINAL)
903 YYACCEPT;
904
905 /* Shift the lookahead token. */
906
907#if YYDEBUG != 0
908 if (yydebug)
909 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
910#endif
911
912 /* Discard the token being shifted unless it is eof. */
913 if (yychar != YYEOF)
914 yychar = YYEMPTY;
915
916 *++yyvsp = yylval;
917#ifdef YYLSP_NEEDED
918 *++yylsp = yylloc;
919#endif
920
921 /* count tokens shifted since error; after three, turn off error status. */
922 if (yyerrstatus) yyerrstatus--;
923
924 yystate = yyn;
925 goto yynewstate;
926
927/* Do the default action for the current state. */
928yydefault:
929
930 yyn = yydefact[yystate];
931 if (yyn == 0)
932 goto yyerrlab;
933
934/* Do a reduction. yyn is the number of a rule to reduce with. */
935yyreduce:
936 yylen = yyr2[yyn];
937 if (yylen > 0)
938 yyval = yyvsp[1-yylen]; /* implement default value of the action */
939
940#if YYDEBUG != 0
941 if (yydebug)
942 {
943 int i;
944
945 fprintf (stderr, "Reducing via rule %d (line %d), ",
946 yyn, yyrline[yyn]);
947
948 /* Print the symbols being reduced, and their result. */
949 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
950 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
951 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
952 }
953#endif
954
955
956 switch (yyn) {
957
958case 1:
28bf4b0b 959{;
960 break;}
961case 2:
28bf4b0b 962{;
963 break;}
964case 3:
28bf4b0b 965{ mtreader_processDeclaration (yyvsp[-1].mtdecl); ;
966 break;}
967case 4:
28bf4b0b 968{ mtreader_processGlobalDeclaration (yyvsp[-1].mtdecl); ;
969 break;}
970case 5:
28bf4b0b 971{ yyval.mtdecl = mtDeclarationNode_create (yyvsp[-1].tok, yyvsp[0].mtpieces); ;
972 break;}
973case 6:
28bf4b0b 974{ yyval.mtpieces = mtDeclarationPieces_create (); ;
975 break;}
976case 7:
28bf4b0b 977{ yyval.mtpieces = mtDeclarationPieces_append (yyvsp[0].mtpieces, yyvsp[-1].mtpiece); ;
978 break;}
979case 8:
28bf4b0b 980{ yyval.mtpiece = mtDeclarationPiece_createContext (yyvsp[0].mtcontext); ;
981 break;}
982case 9:
28bf4b0b 983{ yyval.mtpiece = mtDeclarationPiece_createValues (yyvsp[0].mtvalues); ;
984 break;}
985case 10:
28bf4b0b 986{ yyval.mtpiece = mtDeclarationPiece_createDefaults (yyvsp[0].mtdefaults); ;
987 break;}
988case 11:
28bf4b0b 989{ yyval.mtpiece = mtDeclarationPiece_createValueDefault (yyvsp[0].tok); ;
990 break;}
991case 12:
28bf4b0b 992{ yyval.mtpiece = mtDeclarationPiece_createAnnotations (yyvsp[0].mtannotations); ;
993 break;}
994case 13:
28bf4b0b 995{ yyval.mtpiece = mtDeclarationPiece_createMerge (yyvsp[0].mtmerge); ;
996 break;}
997case 14:
28bf4b0b 998{ yyval.mtpiece = mtDeclarationPiece_createTransfers (yyvsp[0].mttransferclauselist); ;
999 break;}
1000case 15:
28bf4b0b 1001{ yyval.mtpiece = mtDeclarationPiece_createPreconditions (yyvsp[0].mttransferclauselist); ;
1002 break;}
1003case 16:
28bf4b0b 1004{ yyval.mtpiece = mtDeclarationPiece_createPostconditions (yyvsp[0].mttransferclauselist); ;
1005 break;}
1006case 17:
28bf4b0b 1007{ yyval.mtpiece = mtDeclarationPiece_createLosers (yyvsp[0].mtlosereferencelist); ;
1008 break;}
1009case 18:
28bf4b0b 1010{ yyval.mtcontext = yyvsp[0].mtcontext; ;
1011 break;}
1012case 19:
28bf4b0b 1013{ yyval.mtcontext = mtContextNode_createAny (); ;
1014 break;}
1015case 21:
28bf4b0b 1016{ yyval.mtcontext = mtContextNode_createParameter (yyvsp[0].ctyp); ;
1017 break;}
1018case 22:
28bf4b0b 1019{ yyval.mtcontext = mtContextNode_createReference (yyvsp[0].ctyp); ;
1020 break;}
1021case 23:
b072092f 1022{ yyval.mtcontext = mtContextNode_createResult (yyvsp[0].ctyp); ;
28bf4b0b 1023 break;}
1024case 24:
b072092f 1025{ yyval.mtcontext = mtContextNode_createClause (yyvsp[0].ctyp); ;
28bf4b0b 1026 break;}
1027case 25:
12f2ffe9 1028{ yyval.mtcontext = mtContextNode_createLiteral (yyvsp[0].ctyp); ;
28bf4b0b 1029 break;}
b072092f 1030case 26:
12f2ffe9 1031{ yyval.mtcontext = mtContextNode_createNull (yyvsp[0].ctyp); ;
1032 break;}
1033case 27:
12f2ffe9 1034{ yyval.ctyp = ctype_unknown; ;
28bf4b0b 1035 break;}
1036case 28:
12f2ffe9 1037{ DPRINTF (("Type: %s", qtype_unparse (yyvsp[0].qtyp))); yyval.ctyp = qtype_getType (yyvsp[0].qtyp); ;
1038 break;}
1039case 30:
b072092f 1040{ yyval.qtyp = qtype_newBase (yyvsp[-1].qtyp, yyvsp[0].ctyp); ;
28bf4b0b 1041 break;}
12f2ffe9 1042case 31:
b072092f 1043{ yyval.qtyp = yyvsp[0].qtyp; ;
28bf4b0b 1044 break;}
12f2ffe9 1045case 32:
b072092f 1046{ yyval.qtyp = qtype_mergeAlt (yyvsp[-2].qtyp, yyvsp[0].qtyp); ;
28bf4b0b 1047 break;}
12f2ffe9 1048case 33:
b072092f 1049{ yyval.qtyp = qtype_combine (yyvsp[0].qtyp, yyvsp[-1].ctyp); ;
28bf4b0b 1050 break;}
12f2ffe9 1051case 34:
b072092f 1052{ yyval.qtyp = qtype_unknown (); ;
28bf4b0b 1053 break;}
12f2ffe9 1054case 35:
b072092f 1055{ yyval.qtyp = yyvsp[0].qtyp; ;
28bf4b0b 1056 break;}
12f2ffe9 1057case 36:
b072092f 1058{ yyval.ctyp = ctype_adjustPointers (yyvsp[0].count, ctype_unknown); ;
28bf4b0b 1059 break;}
12f2ffe9 1060case 38:
b072092f 1061{ yyval.ctyp = ctype_adjustPointers (yyvsp[-1].count, yyvsp[0].ctyp); ;
28bf4b0b 1062 break;}
12f2ffe9 1063case 39:
b072092f 1064{ yyval.count = 1; ;
28bf4b0b 1065 break;}
12f2ffe9 1066case 40:
12f2ffe9 1067{ yyval.count = 1; ;
28bf4b0b 1068 break;}
12f2ffe9 1069case 41:
b072092f 1070{ yyval.count = 1 + yyvsp[0].count; ;
28bf4b0b 1071 break;}
28bf4b0b 1072case 42:
12f2ffe9 1073{ yyval.count = 1 + yyvsp[0].count; ;
28bf4b0b 1074 break;}
1075case 43:
12f2ffe9 1076{ /* ignored for now */; ;
28bf4b0b 1077 break;}
1078case 44:
b072092f 1079{ ; ;
28bf4b0b 1080 break;}
1081case 45:
12f2ffe9 1082{ ; ;
28bf4b0b 1083 break;}
1084case 46:
12f2ffe9 1085{ ; ;
28bf4b0b 1086 break;}
1087case 47:
12f2ffe9 1088{ yyval.ctyp = ctype_expectFunction (yyvsp[-1].ctyp); ;
28bf4b0b 1089 break;}
1090case 48:
12f2ffe9 1091{ yyval.ctyp = ctype_makeArray (ctype_unknown); ;
28bf4b0b 1092 break;}
1093case 49:
12f2ffe9 1094{ yyval.ctyp = ctype_makeArray (yyvsp[-2].ctyp); ;
28bf4b0b 1095 break;}
1096case 50:
12f2ffe9 1097{ yyval.ctyp = ctype_char; ;
28bf4b0b 1098 break;}
1099case 51:
12f2ffe9 1100{ yyval.ctyp = ctype_int; ;
28bf4b0b 1101 break;}
1102case 52:
12f2ffe9 1103{ yyval.ctyp = ctype_float; ;
28bf4b0b 1104 break;}
1105case 53:
12f2ffe9 1106{ yyval.ctyp = ctype_double; ;
28bf4b0b 1107 break;}
1108case 54:
12f2ffe9 1109{ yyval.ctyp = ctype_void; ;
28bf4b0b 1110 break;}
1111case 55:
12f2ffe9 1112{ yyval.ctyp = ctype_unknown; ;
28bf4b0b 1113 break;}
b072092f 1114case 56:
12f2ffe9 1115{ yyval.ctyp = ctype_anyintegral; ;
1116 break;}
1117case 57:
12f2ffe9 1118{ yyval.ctyp = ctype_unsignedintegral; ;
28bf4b0b 1119 break;}
1120case 58:
12f2ffe9 1121{ yyval.ctyp = ctype_signedintegral; ;
28bf4b0b 1122 break;}
1123case 60:
12f2ffe9 1124{ yyval.ctyp = mtscanner_lookupType (yyvsp[0].tok); ;
28bf4b0b 1125 break;}
1126case 61:
12f2ffe9 1127{ yyval.mtvalues = mtValuesNode_create (yyvsp[0].cstringlist); ;
28bf4b0b 1128 break;}
1129case 62:
12f2ffe9 1130{ yyval.cstringlist = cstringList_single (mttok_getText (yyvsp[0].tok)); ;
28bf4b0b 1131 break;}
1132case 63:
12f2ffe9 1133{ yyval.cstringlist = cstringList_prepend (yyvsp[0].cstringlist, mttok_getText (yyvsp[-2].tok)); ;
28bf4b0b 1134 break;}
1135case 64:
12f2ffe9 1136{ yyval.tok = yyvsp[0].tok; ;
28bf4b0b 1137 break;}
1138case 65:
12f2ffe9 1139{ yyval.mtdefaults = mtDefaultsNode_create (yyvsp[-1].tok, yyvsp[0].mtdeflist); ;
28bf4b0b 1140 break;}
1141case 66:
12f2ffe9 1142{ yyval.mtdeflist = mtDefaultsDeclList_single (mtDefaultsDecl_create (yyvsp[-2].mtcontext, yyvsp[0].tok)); ;
28bf4b0b 1143 break;}
1144case 67:
12f2ffe9 1145{ yyval.mtdeflist = mtDefaultsDeclList_prepend (yyvsp[0].mtdeflist, mtDefaultsDecl_create (yyvsp[-3].mtcontext, yyvsp[-1].tok)); ;
28bf4b0b 1146 break;}
1147case 68:
12f2ffe9 1148{ yyval.mtannotations = mtAnnotationsNode_create (yyvsp[0].mtannotlist); ;
28bf4b0b 1149 break;}
1150case 69:
12f2ffe9 1151{ yyval.mtannotlist = mtAnnotationList_single (yyvsp[0].mtannotdecl); ;
28bf4b0b 1152 break;}
1153case 70:
12f2ffe9 1154{ yyval.mtannotlist = mtAnnotationList_prepend (yyvsp[0].mtannotlist, yyvsp[-1].mtannotdecl); ;
28bf4b0b 1155 break;}
1156case 71:
12f2ffe9 1157{ yyval.mtannotdecl = mtAnnotationDecl_create (yyvsp[-3].tok, yyvsp[-2].mtcontext, yyvsp[0].tok); ;
28bf4b0b 1158 break;}
1159case 72:
12f2ffe9 1160{ yyval.mtmerge = mtMergeNode_create (yyvsp[0].mtmergeclauselist); ;
28bf4b0b 1161 break;}
1162case 73:
12f2ffe9 1163{ yyval.mtmergeclauselist = mtMergeClauseList_single (yyvsp[0].mtmergeclause); ;
28bf4b0b 1164 break;}
1165case 74:
12f2ffe9 1166{ yyval.mtmergeclauselist = mtMergeClauseList_prepend (yyvsp[0].mtmergeclauselist, yyvsp[-1].mtmergeclause); ;
28bf4b0b 1167 break;}
1168case 75:
12f2ffe9 1169{ yyval.mtmergeclause = mtMergeClause_create (yyvsp[-4].mtmergeitem, yyvsp[-2].mtmergeitem, yyvsp[0].mttransferaction); ;
28bf4b0b 1170 break;}
1171case 76:
12f2ffe9 1172{ yyval.mtmergeitem = mtMergeItem_createValue (yyvsp[0].tok); ;
28bf4b0b 1173 break;}
1174case 77:
12f2ffe9 1175{ yyval.mtmergeitem = mtMergeItem_createStar (yyvsp[0].tok); ;
28bf4b0b 1176 break;}
1177case 78:
b072092f 1178{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ;
28bf4b0b 1179 break;}
1180case 79:
12f2ffe9 1181{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ;
28bf4b0b 1182 break;}
1183case 80:
12f2ffe9 1184{ yyval.mttransferclauselist = yyvsp[0].mttransferclauselist; ;
28bf4b0b 1185 break;}
1186case 81:
12f2ffe9 1187{ yyval.mtlosereferencelist = yyvsp[0].mtlosereferencelist; ;
28bf4b0b 1188 break;}
1189case 82:
12f2ffe9 1190{ yyval.mtlosereferencelist = mtLoseReferenceList_single (yyvsp[0].mtlosereference); ;
28bf4b0b 1191 break;}
1192case 83:
12f2ffe9 1193{ yyval.mtlosereferencelist = mtLoseReferenceList_prepend (yyvsp[0].mtlosereferencelist, yyvsp[-1].mtlosereference); ;
28bf4b0b 1194 break;}
1195case 84:
12f2ffe9 1196{ yyval.mtlosereference = mtLoseReference_create (yyvsp[-2].tok, yyvsp[0].mttransferaction); ;
28bf4b0b 1197 break;}
1198case 85:
12f2ffe9 1199{ yyval.mttransferclauselist = mtTransferClauseList_single (yyvsp[0].mttransferclause); ;
28bf4b0b 1200 break;}
1201case 86:
12f2ffe9 1202{ yyval.mttransferclauselist = mtTransferClauseList_prepend (yyvsp[0].mttransferclauselist, yyvsp[-1].mttransferclause); ;
28bf4b0b 1203 break;}
1204case 87:
12f2ffe9 1205{ yyval.mttransferclause = mtTransferClause_create (yyvsp[-4].tok, yyvsp[-2].tok, yyvsp[0].mttransferaction); ;
28bf4b0b 1206 break;}
1207case 88:
12f2ffe9 1208{ yyval.mttransferaction = mtTransferAction_createValue (yyvsp[0].tok); ;
28bf4b0b 1209 break;}
1210case 89:
12f2ffe9 1211{ yyval.mttransferaction = yyvsp[0].mttransferaction; ;
1212 break;}
1213case 90:
12f2ffe9 1214{ yyval.mttransferaction = mtTransferAction_createError (yyvsp[0].tok); ;
1215 break;}
1216case 91:
b072092f 1217{ yyval.mttransferaction = mtTransferAction_createErrorMessage (yyvsp[0].tok); ;
28bf4b0b 1218 break;}
1219}
1220 /* the action file gets copied in in place of this dollarsign */
3e3ec469 1221
28bf4b0b 1222\f
1223 yyvsp -= yylen;
1224 yyssp -= yylen;
1225#ifdef YYLSP_NEEDED
1226 yylsp -= yylen;
1227#endif
1228
1229#if YYDEBUG != 0
1230 if (yydebug)
1231 {
1232 short *ssp1 = yyss - 1;
1233 fprintf (stderr, "state stack now");
1234 while (ssp1 != yyssp)
1235 fprintf (stderr, " %d", *++ssp1);
1236 fprintf (stderr, "\n");
1237 }
1238#endif
1239
1240 *++yyvsp = yyval;
1241
1242#ifdef YYLSP_NEEDED
1243 yylsp++;
1244 if (yylen == 0)
1245 {
1246 yylsp->first_line = yylloc.first_line;
1247 yylsp->first_column = yylloc.first_column;
1248 yylsp->last_line = (yylsp-1)->last_line;
1249 yylsp->last_column = (yylsp-1)->last_column;
1250 yylsp->text = 0;
1251 }
1252 else
1253 {
1254 yylsp->last_line = (yylsp+yylen-1)->last_line;
1255 yylsp->last_column = (yylsp+yylen-1)->last_column;
1256 }
1257#endif
1258
1259 /* Now "shift" the result of the reduction.
1260 Determine what state that goes to,
1261 based on the state we popped back to
1262 and the rule number reduced by. */
1263
1264 yyn = yyr1[yyn];
1265
1266 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1267 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1268 yystate = yytable[yystate];
1269 else
1270 yystate = yydefgoto[yyn - YYNTBASE];
1271
1272 goto yynewstate;
1273
1274yyerrlab: /* here on detecting error */
1275
1276 if (! yyerrstatus)
1277 /* If not already recovering from an error, report this error. */
1278 {
1279 ++yynerrs;
1280
1281#ifdef YYERROR_VERBOSE
1282 yyn = yypact[yystate];
1283
1284 if (yyn > YYFLAG && yyn < YYLAST)
1285 {
1286 int size = 0;
1287 char *msg;
1288 int x, count;
1289
1290 count = 0;
1291 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1292 for (x = (yyn < 0 ? -yyn : 0);
1293 x < (sizeof(yytname) / sizeof(char *)); x++)
1294 if (yycheck[x + yyn] == x)
1295 size += strlen(yytname[x]) + 15, count++;
1296 msg = (char *) malloc(size + 15);
1297 if (msg != 0)
1298 {
1299 strcpy(msg, "parse error");
1300
1301 if (count < 5)
1302 {
1303 count = 0;
1304 for (x = (yyn < 0 ? -yyn : 0);
1305 x < (sizeof(yytname) / sizeof(char *)); x++)
1306 if (yycheck[x + yyn] == x)
1307 {
1308 strcat(msg, count == 0 ? ", expecting `" : " or `");
1309 strcat(msg, yytname[x]);
1310 strcat(msg, "'");
1311 count++;
1312 }
1313 }
1314 yyerror(msg);
1315 free(msg);
1316 }
1317 else
1318 yyerror ("parse error; also virtual memory exceeded");
1319 }
1320 else
1321#endif /* YYERROR_VERBOSE */
1322 yyerror("parse error");
1323 }
1324
1325 goto yyerrlab1;
1326yyerrlab1: /* here on error raised explicitly by an action */
1327
1328 if (yyerrstatus == 3)
1329 {
1330 /* if just tried and failed to reuse lookahead token after an error, discard it. */
1331
1332 /* return failure if at end of input */
1333 if (yychar == YYEOF)
1334 YYABORT;
1335
1336#if YYDEBUG != 0
1337 if (yydebug)
1338 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1339#endif
1340
1341 yychar = YYEMPTY;
1342 }
1343
1344 /* Else will try to reuse lookahead token
1345 after shifting the error token. */
1346
1347 yyerrstatus = 3; /* Each real token shifted decrements this */
1348
1349 goto yyerrhandle;
1350
1351yyerrdefault: /* current state does not do anything special for the error token. */
1352
1353#if 0
1354 /* This is wrong; only states that explicitly want error tokens
1355 should shift them. */
1356 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1357 if (yyn) goto yydefault;
1358#endif
1359
1360yyerrpop: /* pop the current state because it cannot handle the error token */
1361
1362 if (yyssp == yyss) YYABORT;
1363 yyvsp--;
1364 yystate = *--yyssp;
1365#ifdef YYLSP_NEEDED
1366 yylsp--;
1367#endif
1368
1369#if YYDEBUG != 0
1370 if (yydebug)
1371 {
1372 short *ssp1 = yyss - 1;
1373 fprintf (stderr, "Error: state stack now");
1374 while (ssp1 != yyssp)
1375 fprintf (stderr, " %d", *++ssp1);
1376 fprintf (stderr, "\n");
1377 }
1378#endif
1379
1380yyerrhandle:
1381
1382 yyn = yypact[yystate];
1383 if (yyn == YYFLAG)
1384 goto yyerrdefault;
1385
1386 yyn += YYTERROR;
1387 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1388 goto yyerrdefault;
1389
1390 yyn = yytable[yyn];
1391 if (yyn < 0)
1392 {
1393 if (yyn == YYFLAG)
1394 goto yyerrpop;
1395 yyn = -yyn;
1396 goto yyreduce;
1397 }
1398 else if (yyn == 0)
1399 goto yyerrpop;
1400
1401 if (yyn == YYFINAL)
1402 YYACCEPT;
1403
1404#if YYDEBUG != 0
1405 if (yydebug)
1406 fprintf(stderr, "Shifting error token, ");
1407#endif
1408
1409 *++yyvsp = yylval;
1410#ifdef YYLSP_NEEDED
1411 *++yylsp = yylloc;
1412#endif
1413
1414 yystate = yyn;
1415 goto yynewstate;
1416
1417 yyacceptlab:
1418 /* YYACCEPT comes here. */
1419 if (yyfree_stacks)
1420 {
1421 free (yyss);
1422 free (yyvs);
1423#ifdef YYLSP_NEEDED
1424 free (yyls);
1425#endif
1426 }
1427 return 0;
1428
1429 yyabortlab:
1430 /* YYABORT comes here. */
1431 if (yyfree_stacks)
1432 {
1433 free (yyss);
1434 free (yyvs);
1435#ifdef YYLSP_NEEDED
1436 free (yyls);
1437#endif
1438 }
1439 return 1;
1440}
28bf4b0b 1441
1442
1443# include "bison.reset"
1444
1445extern char *yytext;
1446
1447static void mterror (char *s)
1448{
b072092f 1449
1450 if (s != NULL)
1451 {
1452 llparseerror
1453 (message ("Parse error in meta-state file: %s", cstring_fromChars (s)));
1454 }
1455 else
1456 {
1457 llparseerror
1458 (message ("Parse error in meta-state file"));
1459 }
1460
28bf4b0b 1461}
1462
1463static void yyprint (FILE *file, int type, YYSTYPE value)
1464{
1465 cstring tname = mttok_unparse (value.tok);
1466 fprintf (file, " (%s)", cstring_toCharsSafe (tname));
1467 cstring_free (tname);
1468}
1469
1470
1471
1472
1473/*
1474** Resets all flags in bison.head
1475*/
1476
1477
1478/*@=allmacros@*/
1479/*@=boolint@*/
1480/*@=charint@*/
1481/*@=macroparams@*/
1482/*@=macroundef@*/
1483/*@=unreachable@*/
1484/*@=macrospec@*/
1485/*@=varuse@*/
1486/*@=ignorequals@*/
1487/*@=macrostmt@*/
1488/*@=noeffect@*/
1489/*@=shadow@*/
1490/*@=exitarg@*/
1491/*@=macroredef@*/
1492/*@=uniondef@*/
1493/*@=compdef@*/
1494/*@=matchfields@*/
1495/*@=exportlocal@*/
1496/*@=evalorderuncon@*/
1497/*@=exportheader@*/
1498/*@=typeuse@*/
1499/*@=redecl@*/
1500/*@=redef@*/
1501/*@=noparams@*/
1502/*@=ansireserved@*/
1503/*@=fielduse@*/
1504/*@=ifblock@*/
1505/*@=elseifcomplete@*/
1506/*@=whileblock@*/
1507/*@=forblock@*/
1508/*@=branchstate@*/
1509/*@=readonlytrans@*/
1510/*@=namechecks@*/
1511/*@=usedef@*/
1512/*@=systemunrecog@*/
1513/*@=dependenttrans@*/
1514/*@=unqualifiedtrans@*/
60eced23 1515/*@=declundef@*/
bbed3d50 1516
1517
1518/*drl added 11/27/2001*/
bb7c2085 1519/*@=bounds@*/
This page took 0.35447 seconds and 5 git commands to generate.