]> andersk Git - splint.git/blame - src/signature.c.der
Fixed bug in makefile causing unnecessary remaking of cgrammar.c.
[splint.git] / src / signature.c.der
CommitLineData
885824d3 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@*/
bbed3d50 47/*@-declundef@*/
885824d3 48
bbed3d50 49/*drl added 11/27/2001*/
bb7c2085 50/*@-bounds@*/
885824d3 51/* < end of bison.head > */
52
53
a889b5ee 54/* A Bison parser, made from signature.y
55 by GNU Bison version 1.28 */
885824d3 56
57#define YYBISON 1 /* Identify Bison output. */
58
59#define yyparse lslparse
60#define yylex lsllex
61#define yyerror lslerror
62#define yylval lsllval
63#define yychar lslchar
64#define yydebug lsldebug
65#define yynerrs lslnerrs
a889b5ee 66#define LST_SIMPLEID 257
67#define LST_LOGICALOP 258
68#define LST_EQOP 259
69#define LST_SIMPLEOP 260
70#define LST_MAPSYM 261
71#define LST_FIELDMAPSYM 262
72#define LST_MARKERSYM 263
73#define LST_ifTOKEN 264
74#define LST_thenTOKEN 265
75#define LST_elseTOKEN 266
76#define LST_LBRACKET 267
77#define LST_RBRACKET 268
78#define LST_SELECTSYM 269
79#define LST_SEPSYM 270
80#define LST_OPENSYM 271
81#define LST_CLOSESYM 272
82#define LST_COLON 273
83#define LST_COMMA 274
84#define LST_EOL 275
85#define LST_COMMENTSYM 276
86#define LST_WHITESPACE 277
87#define LST_QUANTIFIERSYM 278
88#define LST_EQUATIONSYM 279
89#define LST_EQSEPSYM 280
90#define LST_COMPOSESYM 281
91#define LST_LPAR 282
92#define LST_RPAR 283
93#define LST_assertsTOKEN 284
94#define LST_assumesTOKEN 285
95#define LST_byTOKEN 286
96#define LST_convertsTOKEN 287
97#define LST_enumerationTOKEN 288
98#define LST_equationsTOKEN 289
99#define LST_exemptingTOKEN 290
100#define LST_forTOKEN 291
101#define LST_generatedTOKEN 292
102#define LST_impliesTOKEN 293
103#define LST_includesTOKEN 294
104#define LST_introducesTOKEN 295
105#define LST_ofTOKEN 296
106#define LST_partitionedTOKEN 297
107#define LST_traitTOKEN 298
108#define LST_tupleTOKEN 299
109#define LST_unionTOKEN 300
110#define LST_BADTOKEN 301
885824d3 111
885824d3 112
113
885824d3 114# include <stdio.h>
1b8ae690 115# include "splintMacros.nf"
885824d3 116# include "llbasic.h"
117# include "lslparse.h"
118# include "signature.h"
119
4dd72714 120static void lslerror (char *);
121extern int lsllex ();
122
885824d3 123/*@dependent@*/ /*@null@*/ lslOp importedlslOp;
124
125/*@-noparams@*/ /* Can't list params since YYSTYPE isn't defined yet. */
126static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */);
127/*@=noparams@*/
128
129# define YYPRINT(file, type, value) yyprint (file, type, value)
130
131# define YYDEBUG 1
132
bbed3d50 133/*@-redef@*/
134/*@-readonlytrans@*/
135/*@-nullassign@*/
885824d3 136
137
885824d3 138typedef union {
139 ltoken ltok; /* a leaf is also an ltoken */
140 unsigned int count;
141 /*@only@*/ ltokenList ltokenList;
142 /*@only@*/ opFormNode opform;
143 /*@owned@*/ sigNode signature;
144 /*@only@*/ nameNode name;
145 /*@owned@*/ lslOp operator;
146 /*@only@*/ lslOpList operators;
bbed3d50 147 /*@-redef@*/ /*@-matchfields@*/
885824d3 148} YYSTYPE;
149#ifndef YYDEBUG
a889b5ee 150#define YYDEBUG 1
885824d3 151#endif
152
153#include <stdio.h>
154
a889b5ee 155#ifndef __cplusplus
156#ifndef __STDC__
157#define const
158#endif
159#endif
160
885824d3 161
162
163#define YYFINAL 62
164#define YYFLAG -32768
165#define YYNTBASE 48
166
bbed3d50 167#define YYTRANSLATE(x) ((unsigned)(x) <= 301 ? yytranslate[x] : 62)
885824d3 168
a889b5ee 169static const char yytranslate[] = { 0,
170 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
171 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
172 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
173 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
174 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
175 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
176 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
178 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
179 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
180 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
181 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
182 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
183 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
184 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
185 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
186 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
187 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
188 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
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, 1, 3, 4, 5, 6,
196 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
197 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
198 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
199 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
200 47
885824d3 201};
202
203#if YYDEBUG != 0
a889b5ee 204static const short yyprhs[] = { 0,
205 0, 2, 4, 7, 11, 13, 15, 22, 24, 27,
206 30, 34, 38, 43, 48, 54, 58, 63, 68, 74,
207 77, 81, 85, 87, 89, 91, 92, 94, 96, 100,
208 102, 104, 108, 109, 111, 113, 117, 119
885824d3 209};
a889b5ee 210
211static const short yyrhs[] = { 49,
212 0, 50, 0, 49, 50, 0, 51, 19, 57, 0,
213 61, 0, 52, 0, 10, 9, 11, 9, 12, 9,
214 0, 53, 0, 9, 53, 0, 53, 9, 0, 9,
215 53, 9, 0, 17, 54, 18, 0, 9, 17, 54,
216 18, 0, 17, 54, 18, 9, 0, 9, 17, 54,
217 18, 9, 0, 13, 54, 14, 0, 9, 13, 54,
218 14, 0, 13, 54, 14, 9, 0, 9, 13, 54,
219 14, 9, 0, 15, 3, 0, 9, 15, 3, 0,
220 9, 8, 3, 0, 6, 0, 4, 0, 5, 0,
221 0, 55, 0, 9, 0, 55, 56, 9, 0, 20,
222 0, 16, 0, 58, 7, 60, 0, 0, 59, 0,
223 60, 0, 59, 20, 60, 0, 3, 0, 3, 0
885824d3 224};
225
226#endif
227
228#if YYDEBUG != 0
a889b5ee 229static const short yyrline[] = { 0,
230 139, 141, 146, 150, 156, 158, 162, 164, 166, 168,
231 170, 172, 174, 176, 178, 181, 184, 187, 190, 193,
232 196, 201, 206, 208, 210, 213, 215, 218, 220, 223,
233 225, 228, 231, 233, 236, 238, 241, 247
885824d3 234};
235#endif
236
237
a889b5ee 238#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
239
240static const char * const yytname[] = { "$","error","$undefined.","LST_SIMPLEID",
241"LST_LOGICALOP","LST_EQOP","LST_SIMPLEOP","LST_MAPSYM","LST_FIELDMAPSYM","LST_MARKERSYM",
242"LST_ifTOKEN","LST_thenTOKEN","LST_elseTOKEN","LST_LBRACKET","LST_RBRACKET",
243"LST_SELECTSYM","LST_SEPSYM","LST_OPENSYM","LST_CLOSESYM","LST_COLON","LST_COMMA",
244"LST_EOL","LST_COMMENTSYM","LST_WHITESPACE","LST_QUANTIFIERSYM","LST_EQUATIONSYM",
245"LST_EQSEPSYM","LST_COMPOSESYM","LST_LPAR","LST_RPAR","LST_assertsTOKEN","LST_assumesTOKEN",
246"LST_byTOKEN","LST_convertsTOKEN","LST_enumerationTOKEN","LST_equationsTOKEN",
247"LST_exemptingTOKEN","LST_forTOKEN","LST_generatedTOKEN","LST_impliesTOKEN",
248"LST_includesTOKEN","LST_introducesTOKEN","LST_ofTOKEN","LST_partitionedTOKEN",
249"LST_traitTOKEN","LST_tupleTOKEN","LST_unionTOKEN","LST_BADTOKEN","top","operatorList",
250"operator","name","opForm","anyOp","middle","placeList","separator","signature",
251"domain","sortList","sortId","opId", NULL
885824d3 252};
253#endif
254
a889b5ee 255static const short yyr1[] = { 0,
256 48, 49, 49, 50, 51, 51, 52, 52, 52, 52,
257 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
258 52, 52, 53, 53, 53, 54, 54, 55, 55, 56,
259 56, 57, 58, 58, 59, 59, 60, 61
885824d3 260};
261
a889b5ee 262static const short yyr2[] = { 0,
263 1, 1, 2, 3, 1, 1, 6, 1, 2, 2,
264 3, 3, 4, 4, 5, 3, 4, 4, 5, 2,
265 3, 3, 1, 1, 1, 0, 1, 1, 3, 1,
266 1, 3, 0, 1, 1, 3, 1, 1
885824d3 267};
268
a889b5ee 269static const short yydefact[] = { 0,
270 38, 24, 25, 23, 0, 0, 26, 0, 26, 1,
271 2, 0, 6, 8, 5, 0, 26, 0, 26, 9,
272 0, 28, 0, 27, 20, 0, 3, 33, 10, 22,
273 0, 21, 0, 11, 0, 16, 31, 30, 0, 12,
274 37, 4, 0, 34, 35, 17, 13, 0, 18, 29,
275 14, 0, 0, 19, 15, 0, 32, 36, 7, 0,
276 0, 0
885824d3 277};
278
a889b5ee 279static const short yydefgoto[] = { 60,
280 10, 11, 12, 13, 14, 23, 24, 39, 42, 43,
281 44, 45, 15
885824d3 282};
283
a889b5ee 284static const short yypact[] = { -3,
285-32768,-32768,-32768,-32768, 11, -4, 0, 8, 0, -3,
286-32768, -1,-32768, 13,-32768, 17, 0, 22, 0, 18,
287 20,-32768, 19, -12,-32768, 14,-32768, 31,-32768,-32768,
288 21,-32768, 23,-32768, 27, 28,-32768,-32768, 29, 30,
289-32768,-32768, 33, 24,-32768, 34, 36, 35,-32768,-32768,
290-32768, 31, 31,-32768,-32768, 37,-32768,-32768,-32768, 42,
291 48,-32768
885824d3 292};
293
a889b5ee 294static const short yypgoto[] = {-32768,
295-32768, 39,-32768,-32768, 45, 4,-32768,-32768,-32768,-32768,
296-32768, -23,-32768
885824d3 297};
298
299
300#define YYLAST 50
301
302
a889b5ee 303static const short yytable[] = { 1,
304 2, 3, 4, 37, 21, 5, 6, 38, 22, 7,
305 25, 8, 26, 9, 2, 3, 4, 28, 16, 30,
306 31, 29, 33, 17, 32, 18, 34, 19, 57, 58,
307 35, 40, 36, 41, 46, 48, 49, 50, 51, 52,
308 47, 61, 54, 53, 55, 59, 56, 62, 27, 20
885824d3 309};
310
a889b5ee 311static const short yycheck[] = { 3,
312 4, 5, 6, 16, 9, 9, 10, 20, 9, 13,
313 3, 15, 9, 17, 4, 5, 6, 19, 8, 3,
314 17, 9, 19, 13, 3, 15, 9, 17, 52, 53,
315 11, 18, 14, 3, 14, 9, 9, 9, 9, 7,
316 18, 0, 9, 20, 9, 9, 12, 0, 10, 5
885824d3 317};
318#define YYPURE 1
319
320/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
3e3ec469 321
a889b5ee 322/* This file comes from bison-1.28. */
323
885824d3 324/* Skeleton output parser for bison,
a889b5ee 325 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
885824d3 326
327 This program is free software; you can redistribute it and/or modify
328 it under the terms of the GNU General Public License as published by
329 the Free Software Foundation; either version 2, or (at your option)
330 any later version.
331
332 This program is distributed in the hope that it will be useful,
333 but WITHOUT ANY WARRANTY; without even the implied warranty of
334 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
335 GNU General Public License for more details.
336
337 You should have received a copy of the GNU General Public License
338 along with this program; if not, write to the Free Software
bbed3d50 339 Foundation, Inc., 59 Temple Place - Suite 330,
340 Boston, MA 02111-1307, USA. */
885824d3 341
342/* As a special exception, when this file is copied by Bison into a
343 Bison output file, you may use that output file without restriction.
344 This special exception was added by the Free Software Foundation
345 in version 1.24 of Bison. */
346
a889b5ee 347/* This is the parser code that is written into each bison parser
348 when the %semantic_parser declaration is not specified in the grammar.
349 It was written by Richard Stallman by simplifying the hairy parser
350 used when %semantic_parser is specified. */
bbed3d50 351
352#ifndef YYSTACK_USE_ALLOCA
a889b5ee 353#ifdef alloca
354#define YYSTACK_USE_ALLOCA
355#else /* alloca not defined */
356#ifdef __GNUC__
357#define YYSTACK_USE_ALLOCA
358#define alloca __builtin_alloca
359#else /* not GNU C. */
360#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
361#define YYSTACK_USE_ALLOCA
362#include <alloca.h>
363#else /* not sparc */
364/* We think this test detects Watcom and Microsoft C. */
365/* This used to test MSDOS, but that is a bad idea
366 since that symbol is in the user namespace. */
367#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
368#if 0 /* No need for malloc.h, which pollutes the namespace;
369 instead, just don't use alloca. */
370#include <malloc.h>
371#endif
372#else /* not MSDOS, or __TURBOC__ */
373#if defined(_AIX)
374/* I don't know what this was needed for, but it pollutes the namespace.
375 So I turned it off. rms, 2 May 1997. */
376/* #include <malloc.h> */
885824d3 377 #pragma alloca
a889b5ee 378#define YYSTACK_USE_ALLOCA
379#else /* not MSDOS, or __TURBOC__, or _AIX */
380#if 0
381#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
382 and on HPUX 10. Eventually we can turn this on. */
383#define YYSTACK_USE_ALLOCA
384#define alloca __builtin_alloca
385#endif /* __hpux */
bbed3d50 386#endif
a889b5ee 387#endif /* not _AIX */
388#endif /* not MSDOS, or __TURBOC__ */
389#endif /* not sparc */
390#endif /* not GNU C */
391#endif /* alloca not defined */
392#endif /* YYSTACK_USE_ALLOCA not defined */
885824d3 393
a889b5ee 394#ifdef YYSTACK_USE_ALLOCA
395#define YYSTACK_ALLOC alloca
e55c0c6d 396#else
a889b5ee 397#define YYSTACK_ALLOC malloc
e55c0c6d 398#endif
885824d3 399
a889b5ee 400/* Note: there must be only one dollar sign in this file.
401 It is replaced by the list of actions, each action
402 as one case of the switch. */
403
885824d3 404#define yyerrok (yyerrstatus = 0)
405#define yyclearin (yychar = YYEMPTY)
406#define YYEMPTY -2
407#define YYEOF 0
bbed3d50 408#define YYACCEPT goto yyacceptlab
409#define YYABORT goto yyabortlab
885824d3 410#define YYERROR goto yyerrlab1
a889b5ee 411/* Like YYERROR except do call yyerror.
412 This remains here temporarily to ease the
413 transition to the new meaning of YYERROR, for GCC.
885824d3 414 Once GCC version 2 has supplanted version 1, this can go. */
415#define YYFAIL goto yyerrlab
416#define YYRECOVERING() (!!yyerrstatus)
a889b5ee 417#define YYBACKUP(token, value) \
885824d3 418do \
419 if (yychar == YYEMPTY && yylen == 1) \
a889b5ee 420 { yychar = (token), yylval = (value); \
885824d3 421 yychar1 = YYTRANSLATE (yychar); \
422 YYPOPSTACK; \
423 goto yybackup; \
424 } \
425 else \
a889b5ee 426 { yyerror ("syntax error: cannot back up"); YYERROR; } \
885824d3 427while (0)
428
429#define YYTERROR 1
430#define YYERRCODE 256
431
a889b5ee 432#ifndef YYPURE
433#define YYLEX yylex()
434#endif
435
436#ifdef YYPURE
437#ifdef YYLSP_NEEDED
438#ifdef YYLEX_PARAM
439#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
440#else
441#define YYLEX yylex(&yylval, &yylloc)
442#endif
443#else /* not YYLSP_NEEDED */
444#ifdef YYLEX_PARAM
445#define YYLEX yylex(&yylval, YYLEX_PARAM)
446#else
447#define YYLEX yylex(&yylval)
448#endif
449#endif /* not YYLSP_NEEDED */
450#endif
451
452/* If nonreentrant, generate the variables here */
885824d3 453
a889b5ee 454#ifndef YYPURE
885824d3 455
a889b5ee 456int yychar; /* the lookahead symbol */
457YYSTYPE yylval; /* the semantic value of the */
458 /* lookahead symbol */
885824d3 459
a889b5ee 460#ifdef YYLSP_NEEDED
461YYLTYPE yylloc; /* location data for the lookahead */
462 /* symbol */
885824d3 463#endif
464
a889b5ee 465int yynerrs; /* number of parse errors so far */
466#endif /* not YYPURE */
467
468#if YYDEBUG != 0
469int yydebug; /* nonzero means print parse trace */
470/* Since this is uninitialized, it does not stop multiple parsers
471 from coexisting. */
472#endif
473
474/* YYINITDEPTH indicates the initial size of the parser's stacks */
885824d3 475
476#ifndef YYINITDEPTH
a889b5ee 477#define YYINITDEPTH 200
885824d3 478#endif
479
a889b5ee 480/* YYMAXDEPTH is the maximum size the stacks can grow to
481 (effective only if the built-in stack extension method is used). */
482
885824d3 483#if YYMAXDEPTH == 0
a889b5ee 484#undef YYMAXDEPTH
885824d3 485#endif
486
487#ifndef YYMAXDEPTH
a889b5ee 488#define YYMAXDEPTH 10000
885824d3 489#endif
1ac6313d 490\f
bbed3d50 491/* Define __yy_memcpy. Note that the size argument
492 should be passed with type unsigned int, because that is what the non-GCC
493 definitions require. With GCC, __builtin_memcpy takes an arg
494 of type size_t, but it can handle unsigned int. */
495
885824d3 496#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
a889b5ee 497#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
885824d3 498#else /* not GNU C or C++ */
a889b5ee 499#ifndef __cplusplus
885824d3 500
501/* This is the most reliable way to avoid incompatibilities
502 in available built-in functions on various systems. */
503static void
504__yy_memcpy (to, from, count)
505 char *to;
a889b5ee 506 char *from;
bbed3d50 507 unsigned int count;
885824d3 508{
a889b5ee 509 register char *f = from;
885824d3 510 register char *t = to;
511 register int i = count;
512
513 while (i-- > 0)
514 *t++ = *f++;
515}
516
a889b5ee 517#else /* __cplusplus */
518
519/* This is the most reliable way to avoid incompatibilities
520 in available built-in functions on various systems. */
521static void
522__yy_memcpy (char *to, char *from, unsigned int count)
523{
524 register char *t = to;
525 register char *f = from;
526 register int i = count;
527
528 while (i-- > 0)
529 *t++ = *f++;
530}
531
532#endif
885824d3 533#endif
534\f
3e3ec469 535
885824d3 536
537/* The user can define YYPARSE_PARAM as the name of an argument to be passed
538 into yyparse. The argument should have type void *.
539 It should actually point to an object.
540 Grammar actions can access the variable by casting it
541 to the proper pointer type. */
542
543#ifdef YYPARSE_PARAM
a889b5ee 544#ifdef __cplusplus
545#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
546#define YYPARSE_PARAM_DECL
547#else /* not __cplusplus */
548#define YYPARSE_PARAM_ARG YYPARSE_PARAM
549#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
550#endif /* not __cplusplus */
551#else /* not YYPARSE_PARAM */
552#define YYPARSE_PARAM_ARG
553#define YYPARSE_PARAM_DECL
554#endif /* not YYPARSE_PARAM */
885824d3 555
bbed3d50 556/* Prevent warning if -Wstrict-prototypes. */
557#ifdef __GNUC__
a889b5ee 558#ifdef YYPARSE_PARAM
bbed3d50 559int yyparse (void *);
a889b5ee 560#else
bbed3d50 561int yyparse (void);
562#endif
563#endif
564
885824d3 565int
a889b5ee 566yyparse(YYPARSE_PARAM_ARG)
885824d3 567 YYPARSE_PARAM_DECL
568{
569 register int yystate;
570 register int yyn;
571 register short *yyssp;
e55c0c6d 572 register YYSTYPE *yyvsp;
a889b5ee 573 int yyerrstatus; /* number of tokens to shift before error messages enabled */
574 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
575
576 short yyssa[YYINITDEPTH]; /* the state stack */
577 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
578
579 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
580 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
885824d3 581
a889b5ee 582#ifdef YYLSP_NEEDED
583 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
885824d3 584 YYLTYPE *yyls = yylsa;
585 YYLTYPE *yylsp;
586
a889b5ee 587#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
885824d3 588#else
a889b5ee 589#define YYPOPSTACK (yyvsp--, yyssp--)
885824d3 590#endif
591
592 int yystacksize = YYINITDEPTH;
bbed3d50 593 int yyfree_stacks = 0;
885824d3 594
a889b5ee 595#ifdef YYPURE
596 int yychar;
597 YYSTYPE yylval;
598 int yynerrs;
599#ifdef YYLSP_NEEDED
600 YYLTYPE yylloc;
601#endif
602#endif
885824d3 603
a889b5ee 604 YYSTYPE yyval; /* the variable used to return */
605 /* semantic values from the action */
606 /* routines */
885824d3 607
608 int yylen;
609
a889b5ee 610#if YYDEBUG != 0
611 if (yydebug)
612 fprintf(stderr, "Starting parse\n");
613#endif
885824d3 614
615 yystate = 0;
616 yyerrstatus = 0;
617 yynerrs = 0;
618 yychar = YYEMPTY; /* Cause a token to be read. */
619
620 /* Initialize stack pointers.
621 Waste one element of value and location stack
622 so that they stay on the same level as the state stack.
623 The wasted elements are never initialized. */
624
a889b5ee 625 yyssp = yyss - 1;
885824d3 626 yyvsp = yyvs;
a889b5ee 627#ifdef YYLSP_NEEDED
885824d3 628 yylsp = yyls;
629#endif
630
a889b5ee 631/* Push a new state, which is found in yystate . */
632/* In all cases, when you get here, the value and location stacks
633 have just been pushed. so pushing a state here evens the stacks. */
634yynewstate:
885824d3 635
a889b5ee 636 *++yyssp = yystate;
885824d3 637
638 if (yyssp >= yyss + yystacksize - 1)
639 {
a889b5ee 640 /* Give user a chance to reallocate the stack */
641 /* Use copies of these so that the &'s don't force the real ones into memory. */
885824d3 642 YYSTYPE *yyvs1 = yyvs;
643 short *yyss1 = yyss;
a889b5ee 644#ifdef YYLSP_NEEDED
885824d3 645 YYLTYPE *yyls1 = yyls;
646#endif
647
648 /* Get the current used size of the three stacks, in elements. */
649 int size = yyssp - yyss + 1;
650
651#ifdef yyoverflow
a889b5ee 652 /* Each stack pointer address is followed by the size of
653 the data in use in that stack, in bytes. */
654#ifdef YYLSP_NEEDED
885824d3 655 /* This used to be a conditional around just the two extra args,
656 but that might be undefined if yyoverflow is a macro. */
a889b5ee 657 yyoverflow("parser stack overflow",
658 &yyss1, size * sizeof (*yyssp),
659 &yyvs1, size * sizeof (*yyvsp),
660 &yyls1, size * sizeof (*yylsp),
661 &yystacksize);
662#else
663 yyoverflow("parser stack overflow",
664 &yyss1, size * sizeof (*yyssp),
665 &yyvs1, size * sizeof (*yyvsp),
666 &yystacksize);
667#endif
885824d3 668
669 yyss = yyss1; yyvs = yyvs1;
a889b5ee 670#ifdef YYLSP_NEEDED
885824d3 671 yyls = yyls1;
a889b5ee 672#endif
885824d3 673#else /* no yyoverflow */
674 /* Extend the stack our own way. */
675 if (yystacksize >= YYMAXDEPTH)
676 {
a889b5ee 677 yyerror("parser stack overflow");
bbed3d50 678 if (yyfree_stacks)
679 {
680 free (yyss);
681 free (yyvs);
a889b5ee 682#ifdef YYLSP_NEEDED
bbed3d50 683 free (yyls);
a889b5ee 684#endif
bbed3d50 685 }
885824d3 686 return 2;
687 }
688 yystacksize *= 2;
689 if (yystacksize > YYMAXDEPTH)
690 yystacksize = YYMAXDEPTH;
a889b5ee 691#ifndef YYSTACK_USE_ALLOCA
bbed3d50 692 yyfree_stacks = 1;
a889b5ee 693#endif
bbed3d50 694 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
695 __yy_memcpy ((char *)yyss, (char *)yyss1,
696 size * (unsigned int) sizeof (*yyssp));
697 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
698 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
699 size * (unsigned int) sizeof (*yyvsp));
a889b5ee 700#ifdef YYLSP_NEEDED
bbed3d50 701 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
702 __yy_memcpy ((char *)yyls, (char *)yyls1,
703 size * (unsigned int) sizeof (*yylsp));
a889b5ee 704#endif
885824d3 705#endif /* no yyoverflow */
706
707 yyssp = yyss + size - 1;
708 yyvsp = yyvs + size - 1;
a889b5ee 709#ifdef YYLSP_NEEDED
885824d3 710 yylsp = yyls + size - 1;
711#endif
712
a889b5ee 713#if YYDEBUG != 0
714 if (yydebug)
715 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
716#endif
885824d3 717
718 if (yyssp >= yyss + yystacksize - 1)
719 YYABORT;
720 }
721
a889b5ee 722#if YYDEBUG != 0
723 if (yydebug)
724 fprintf(stderr, "Entering state %d\n", yystate);
725#endif
885824d3 726
727 goto yybackup;
a889b5ee 728 yybackup:
885824d3 729
730/* Do appropriate processing given the current state. */
731/* Read a lookahead token if we need one and don't already have one. */
732/* yyresume: */
733
734 /* First try to decide what to do without reference to lookahead token. */
735
736 yyn = yypact[yystate];
737 if (yyn == YYFLAG)
738 goto yydefault;
739
740 /* Not known => get a lookahead token if don't already have one. */
741
742 /* yychar is either YYEMPTY or YYEOF
743 or a valid token in external form. */
744
745 if (yychar == YYEMPTY)
746 {
a889b5ee 747#if YYDEBUG != 0
748 if (yydebug)
749 fprintf(stderr, "Reading a token: ");
750#endif
885824d3 751 yychar = YYLEX;
752 }
753
754 /* Convert token to internal form (in yychar1) for indexing tables with */
755
756 if (yychar <= 0) /* This means end of input. */
757 {
758 yychar1 = 0;
759 yychar = YYEOF; /* Don't call YYLEX any more */
760
a889b5ee 761#if YYDEBUG != 0
762 if (yydebug)
763 fprintf(stderr, "Now at end of input.\n");
764#endif
885824d3 765 }
766 else
767 {
a889b5ee 768 yychar1 = YYTRANSLATE(yychar);
885824d3 769
a889b5ee 770#if YYDEBUG != 0
885824d3 771 if (yydebug)
772 {
773 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
a889b5ee 774 /* Give the individual parser a way to print the precise meaning
775 of a token, for further debugging info. */
776#ifdef YYPRINT
885824d3 777 YYPRINT (stderr, yychar, yylval);
a889b5ee 778#endif
885824d3 779 fprintf (stderr, ")\n");
780 }
781#endif
782 }
783
784 yyn += yychar1;
785 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
786 goto yydefault;
787
788 yyn = yytable[yyn];
789
790 /* yyn is what to do for this token type in this state.
791 Negative => reduce, -yyn is rule number.
792 Positive => shift, yyn is new state.
793 New state is final state => don't bother to shift,
794 just return success.
795 0, or most negative number => error. */
796
797 if (yyn < 0)
798 {
799 if (yyn == YYFLAG)
800 goto yyerrlab;
801 yyn = -yyn;
802 goto yyreduce;
803 }
804 else if (yyn == 0)
805 goto yyerrlab;
806
807 if (yyn == YYFINAL)
808 YYACCEPT;
809
810 /* Shift the lookahead token. */
a889b5ee 811
812#if YYDEBUG != 0
813 if (yydebug)
814 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
815#endif
885824d3 816
817 /* Discard the token being shifted unless it is eof. */
818 if (yychar != YYEOF)
819 yychar = YYEMPTY;
820
821 *++yyvsp = yylval;
a889b5ee 822#ifdef YYLSP_NEEDED
885824d3 823 *++yylsp = yylloc;
824#endif
825
a889b5ee 826 /* count tokens shifted since error; after three, turn off error status. */
827 if (yyerrstatus) yyerrstatus--;
885824d3 828
829 yystate = yyn;
830 goto yynewstate;
831
a889b5ee 832/* Do the default action for the current state. */
e55c0c6d 833yydefault:
a889b5ee 834
885824d3 835 yyn = yydefact[yystate];
836 if (yyn == 0)
837 goto yyerrlab;
838
a889b5ee 839/* Do a reduction. yyn is the number of a rule to reduce with. */
885824d3 840yyreduce:
841 yylen = yyr2[yyn];
a889b5ee 842 if (yylen > 0)
843 yyval = yyvsp[1-yylen]; /* implement default value of the action */
885824d3 844
a889b5ee 845#if YYDEBUG != 0
885824d3 846 if (yydebug)
847 {
848 int i;
849
850 fprintf (stderr, "Reducing via rule %d (line %d), ",
851 yyn, yyrline[yyn]);
852
853 /* Print the symbols being reduced, and their result. */
854 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
855 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
856 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
857 }
858#endif
859
a889b5ee 860
885824d3 861 switch (yyn) {
862
863case 1:
885824d3 864{ lslOpList_free (yyvsp[0].operators); ;
865 break;}
866case 2:
885824d3 867{ lslOpList x = lslOpList_new ();
868 g_importedlslOp = yyvsp[0].operator;
869 lslOpList_add (x, yyvsp[0].operator);
870 yyval.operators = x; ;
871 break;}
872case 3:
885824d3 873{ lslOpList_add (yyvsp[-1].operators, yyvsp[0].operator);
874 yyval.operators = yyvsp[-1].operators; ;
875 break;}
876case 4:
885824d3 877{ yyval.operator = makelslOpNode (yyvsp[-2].name, yyvsp[0].signature); ;
878 break;}
879case 5:
885824d3 880{ yyval.name = makeNameNodeId (yyvsp[0].ltok); ;
881 break;}
882case 6:
885824d3 883{ yyval.name = makeNameNodeForm (yyvsp[0].opform); ;
884 break;}
885case 7:
885824d3 886{ yyval.opform = makeOpFormNode (yyvsp[-5].ltok, OPF_IF, opFormUnion_createMiddle (0), ltoken_undefined); ;
887 break;}
888case 8:
885824d3 889{ yyval.opform = makeOpFormNode (yyvsp[0].ltok, OPF_ANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
890 break;}
891case 9:
885824d3 892{ yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
893 break;}
894case 10:
885824d3 895{ yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_ANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
896 break;}
897case 11:
885824d3 898{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
899 break;}
900case 12:
885824d3 901{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
902 break;}
903case 13:
885824d3 904{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
905 break;}
906case 14:
885824d3 907{ yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
908 break;}
909case 15:
885824d3 910{ yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLEM,
911 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
912 break;}
913case 16:
885824d3 914{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMIDDLE,
915 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
916 break;}
917case 17:
885824d3 918{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMMIDDLE,
919 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
920 break;}
921case 18:
885824d3 922{ yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMIDDLEM,
923 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
924 break;}
925case 19:
885824d3 926{ yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMMIDDLEM,
927 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
928 break;}
929case 20:
885824d3 930{ yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_SELECT,
931 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
932 break;}
933case 21:
885824d3 934{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MSELECT,
935 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
936 break;}
937case 22:
885824d3 938{ yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMAP,
939 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
940 break;}
941case 23:
885824d3 942{ yyval.ltok = yyvsp[0].ltok; ;
943 break;}
944case 24:
885824d3 945{ yyval.ltok = yyvsp[0].ltok; ;
946 break;}
947case 25:
885824d3 948{ yyval.ltok = yyvsp[0].ltok; ;
949 break;}
950case 26:
885824d3 951{ yyval.count = 0; ;
952 break;}
953case 27:
885824d3 954{ yyval.count = yyvsp[0].count; ;
955 break;}
956case 28:
885824d3 957{ yyval.count = 1; ;
958 break;}
959case 29:
885824d3 960{ yyval.count = yyvsp[-2].count + 1; ;
961 break;}
962case 30:
885824d3 963{ yyval.ltok = yyvsp[0].ltok; ;
964 break;}
965case 31:
885824d3 966{ yyval.ltok = yyvsp[0].ltok; ;
967 break;}
968case 32:
885824d3 969{ yyval.signature = makesigNode (yyvsp[-1].ltok, yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
970 break;}
971case 33:
885824d3 972{ yyval.ltokenList = ltokenList_new (); ;
973 break;}
974case 34:
885824d3 975{ yyval.ltokenList = yyvsp[0].ltokenList; ;
976 break;}
977case 35:
885824d3 978{ yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
979 break;}
980case 36:
885824d3 981{ yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
982 break;}
983case 37:
885824d3 984{
985 yyval.ltok = yyvsp[0].ltok;
986 ltoken_setText (yyval.ltok, processTraitSortId (ltoken_getText (yyvsp[0].ltok)));
987 ;
988 break;}
989case 38:
885824d3 990{ yyval.ltok = yyvsp[0].ltok; ;
991 break;}
992}
a889b5ee 993 /* the action file gets copied in in place of this dollarsign */
3e3ec469 994
885824d3 995\f
996 yyvsp -= yylen;
997 yyssp -= yylen;
a889b5ee 998#ifdef YYLSP_NEEDED
885824d3 999 yylsp -= yylen;
1000#endif
1001
a889b5ee 1002#if YYDEBUG != 0
885824d3 1003 if (yydebug)
1004 {
1005 short *ssp1 = yyss - 1;
1006 fprintf (stderr, "state stack now");
1007 while (ssp1 != yyssp)
1008 fprintf (stderr, " %d", *++ssp1);
1009 fprintf (stderr, "\n");
1010 }
1011#endif
1012
1013 *++yyvsp = yyval;
a889b5ee 1014
1015#ifdef YYLSP_NEEDED
1016 yylsp++;
1017 if (yylen == 0)
1018 {
1019 yylsp->first_line = yylloc.first_line;
1020 yylsp->first_column = yylloc.first_column;
1021 yylsp->last_line = (yylsp-1)->last_line;
1022 yylsp->last_column = (yylsp-1)->last_column;
1023 yylsp->text = 0;
1024 }
1025 else
1026 {
1027 yylsp->last_line = (yylsp+yylen-1)->last_line;
1028 yylsp->last_column = (yylsp+yylen-1)->last_column;
1029 }
885824d3 1030#endif
1031
a889b5ee 1032 /* Now "shift" the result of the reduction.
1033 Determine what state that goes to,
1034 based on the state we popped back to
1035 and the rule number reduced by. */
885824d3 1036
1037 yyn = yyr1[yyn];
1038
1039 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1040 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1041 yystate = yytable[yystate];
1042 else
1043 yystate = yydefgoto[yyn - YYNTBASE];
1044
1045 goto yynewstate;
1046
a889b5ee 1047yyerrlab: /* here on detecting error */
885824d3 1048
a889b5ee 1049 if (! yyerrstatus)
1050 /* If not already recovering from an error, report this error. */
885824d3 1051 {
1052 ++yynerrs;
1053
1054#ifdef YYERROR_VERBOSE
1055 yyn = yypact[yystate];
1056
1057 if (yyn > YYFLAG && yyn < YYLAST)
1058 {
1059 int size = 0;
1060 char *msg;
1061 int x, count;
1062
1063 count = 0;
1064 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1065 for (x = (yyn < 0 ? -yyn : 0);
a889b5ee 1066 x < (sizeof(yytname) / sizeof(char *)); x++)
885824d3 1067 if (yycheck[x + yyn] == x)
a889b5ee 1068 size += strlen(yytname[x]) + 15, count++;
1069 msg = (char *) malloc(size + 15);
885824d3 1070 if (msg != 0)
1071 {
a889b5ee 1072 strcpy(msg, "parse error");
885824d3 1073
1074 if (count < 5)
1075 {
1076 count = 0;
1077 for (x = (yyn < 0 ? -yyn : 0);
a889b5ee 1078 x < (sizeof(yytname) / sizeof(char *)); x++)
885824d3 1079 if (yycheck[x + yyn] == x)
1080 {
a889b5ee 1081 strcat(msg, count == 0 ? ", expecting `" : " or `");
1082 strcat(msg, yytname[x]);
1083 strcat(msg, "'");
885824d3 1084 count++;
1085 }
1086 }
a889b5ee 1087 yyerror(msg);
1088 free(msg);
885824d3 1089 }
1090 else
1091 yyerror ("parse error; also virtual memory exceeded");
1092 }
1093 else
1094#endif /* YYERROR_VERBOSE */
a889b5ee 1095 yyerror("parse error");
885824d3 1096 }
885824d3 1097
a889b5ee 1098 goto yyerrlab1;
1099yyerrlab1: /* here on error raised explicitly by an action */
e55c0c6d 1100
885824d3 1101 if (yyerrstatus == 3)
1102 {
a889b5ee 1103 /* if just tried and failed to reuse lookahead token after an error, discard it. */
885824d3 1104
1105 /* return failure if at end of input */
1106 if (yychar == YYEOF)
1107 YYABORT;
a889b5ee 1108
1109#if YYDEBUG != 0
1110 if (yydebug)
1111 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1112#endif
1113
885824d3 1114 yychar = YYEMPTY;
1115 }
1116
a889b5ee 1117 /* Else will try to reuse lookahead token
1118 after shifting the error token. */
885824d3 1119
1120 yyerrstatus = 3; /* Each real token shifted decrements this */
1121
1122 goto yyerrhandle;
1123
a889b5ee 1124yyerrdefault: /* current state does not do anything special for the error token. */
885824d3 1125
1126#if 0
1127 /* This is wrong; only states that explicitly want error tokens
1128 should shift them. */
a889b5ee 1129 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1130 if (yyn) goto yydefault;
885824d3 1131#endif
1132
a889b5ee 1133yyerrpop: /* pop the current state because it cannot handle the error token */
885824d3 1134
a889b5ee 1135 if (yyssp == yyss) YYABORT;
885824d3 1136 yyvsp--;
1137 yystate = *--yyssp;
a889b5ee 1138#ifdef YYLSP_NEEDED
885824d3 1139 yylsp--;
1140#endif
1141
a889b5ee 1142#if YYDEBUG != 0
885824d3 1143 if (yydebug)
1144 {
1145 short *ssp1 = yyss - 1;
1146 fprintf (stderr, "Error: state stack now");
1147 while (ssp1 != yyssp)
1148 fprintf (stderr, " %d", *++ssp1);
1149 fprintf (stderr, "\n");
1150 }
1151#endif
1152
1153yyerrhandle:
a889b5ee 1154
885824d3 1155 yyn = yypact[yystate];
1156 if (yyn == YYFLAG)
1157 goto yyerrdefault;
1158
1159 yyn += YYTERROR;
1160 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1161 goto yyerrdefault;
1162
1163 yyn = yytable[yyn];
1164 if (yyn < 0)
1165 {
1166 if (yyn == YYFLAG)
1167 goto yyerrpop;
1168 yyn = -yyn;
1169 goto yyreduce;
1170 }
1171 else if (yyn == 0)
1172 goto yyerrpop;
1173
1174 if (yyn == YYFINAL)
1175 YYACCEPT;
1176
a889b5ee 1177#if YYDEBUG != 0
1178 if (yydebug)
1179 fprintf(stderr, "Shifting error token, ");
1180#endif
885824d3 1181
1182 *++yyvsp = yylval;
a889b5ee 1183#ifdef YYLSP_NEEDED
885824d3 1184 *++yylsp = yylloc;
1185#endif
1186
1187 yystate = yyn;
1188 goto yynewstate;
bbed3d50 1189
a889b5ee 1190 yyacceptlab:
1191 /* YYACCEPT comes here. */
bbed3d50 1192 if (yyfree_stacks)
1193 {
1194 free (yyss);
1195 free (yyvs);
a889b5ee 1196#ifdef YYLSP_NEEDED
bbed3d50 1197 free (yyls);
1198#endif
1199 }
1200 return 0;
1201
a889b5ee 1202 yyabortlab:
1203 /* YYABORT comes here. */
bbed3d50 1204 if (yyfree_stacks)
1205 {
1206 free (yyss);
1207 free (yyvs);
a889b5ee 1208#ifdef YYLSP_NEEDED
bbed3d50 1209 free (yyls);
1210#endif
1211 }
1212 return 1;
885824d3 1213}
885824d3 1214
1215
1216# include "bison.reset"
1217
1218extern char *yytext;
1219
1220void lslerror (char *s)
1221{
bbed3d50 1222 llfatalbug
1223 (cstring_makeLiteral
1224 ("There has been a problem in the parser with LSL signatures. This is believed to result "
1b8ae690 1225 "from a problem with bison v. 1.25. Please try rebuidling Splint "
bbed3d50 1226 "using the pre-compiled grammar files by commenting out the "
1227 "BISON= line in the top-level Makefile."));
885824d3 1228}
1229
1230static void yyprint (FILE *file, int type, YYSTYPE value)
1231{
1232 fprintf (file, " (%u:%u type: %d; text: %s) ",
1233 ltoken_getLine (value.ltok),
1234 ltoken_getCol (value.ltok),
1235 type,
1236 ltoken_getRawTextChars (value.ltok));
1237}
1238
1239extern void PrintToken (ltoken tok) {
1240 char *codStr;
1241
1242 switch (ltoken_getCode (tok))
1243 {
1244 case NOTTOKEN: codStr = "*** NOTTOKEN ***"; break;
1245 case LST_QUANTIFIERSYM: codStr = "QUANTIFIERSYM"; break;
1246 case LST_LOGICALOP: codStr = "LOGICALOP: "; break;
1247 case LST_SELECTSYM: codStr = "LST_SELECTSYM"; break;
1248 case LST_OPENSYM: codStr = "LST_OPENSYM"; break;
1249 case LST_SEPSYM: codStr = "SEPSYM"; break;
1250 case LST_CLOSESYM: codStr = "LST_CLOSESYM"; break;
1251 case LST_SIMPLEID: codStr = "LST_SIMPLEID"; break;
1252 case LST_MAPSYM: codStr = "MAPSYM"; break;
1253 case LST_MARKERSYM: codStr = "LST_MARKERSYM"; break;
1254 case LST_COMMENTSYM: codStr = "COMMENTSYM"; break;
1255 case LST_SIMPLEOP: codStr = "SIMPLEOP"; break;
1256 case LST_COLON: codStr = "LST_COLON"; break;
1257 case LST_COMMA: codStr = "COMMA"; break;
1258 case LST_LBRACKET: codStr = "LST_LBRACKET"; break;
1259 case LST_LPAR: codStr = "LST_LPAR"; break;
1260 case LST_RBRACKET: codStr = "LST_RBRACKET"; break;
1261 case LST_RPAR: codStr = "LST_RPAR"; break;
1262 case LST_EQOP: codStr = "LST_EQOP"; break;
1263 case LST_WHITESPACE: codStr = "WHITESPACE,"; break;
1264 case LST_EOL: codStr = "LST_EOL"; break;
1265 case LST_elseTOKEN: codStr = "elseTOKEN"; break;
1266 case LST_ifTOKEN: codStr = "ifTOKEN"; break;
1267 case LST_thenTOKEN: codStr = "thenTOKEN"; break;
1268 case LST_BADTOKEN: codStr = "*** BADTOKEN ***"; break;
1269 case LEOFTOKEN: /* can't reach LEOFTOKEN easily */
1270 codStr = "LEOFTOKEN"; break;
1271 default:
1272 codStr = "*** invalid token code ***";
1273 break;
1274 } /* end switch */
1275
1276 /* only used for debugging */
1277 printf ("%u:%u: Token Code (%u): %s",
1278 ltoken_getLine (tok), ltoken_getCol (tok),
1279 ltoken_getCode (tok), codStr);
1280 if (ltoken_getRawText (tok) != 0)
1281 {
1282 printf (", Token String (%lu): %s\n",
1283 ltoken_getRawText (tok), ltoken_getRawTextChars (tok));
1284 }
1285 else printf ("\n");
1286}
1287
1288
1289
1290
bbed3d50 1291/*
1292** Resets all flags in bison.head
1293*/
1294
1295
1296/*@=allmacros@*/
1297/*@=boolint@*/
1298/*@=charint@*/
1299/*@=macroparams@*/
1300/*@=macroundef@*/
1301/*@=unreachable@*/
1302/*@=macrospec@*/
1303/*@=varuse@*/
1304/*@=ignorequals@*/
1305/*@=macrostmt@*/
1306/*@=noeffect@*/
1307/*@=shadow@*/
1308/*@=exitarg@*/
1309/*@=macroredef@*/
1310/*@=uniondef@*/
1311/*@=compdef@*/
1312/*@=matchfields@*/
1313/*@=exportlocal@*/
1314/*@=evalorderuncon@*/
1315/*@=exportheader@*/
1316/*@=typeuse@*/
1317/*@=redecl@*/
1318/*@=redef@*/
1319/*@=noparams@*/
1320/*@=ansireserved@*/
1321/*@=fielduse@*/
1322/*@=ifblock@*/
1323/*@=elseifcomplete@*/
1324/*@=whileblock@*/
1325/*@=forblock@*/
1326/*@=branchstate@*/
1327/*@=readonlytrans@*/
1328/*@=namechecks@*/
1329/*@=usedef@*/
1330/*@=systemunrecog@*/
1331/*@=dependenttrans@*/
1332/*@=unqualifiedtrans@*/
1333/*@=declundef@*/
1334
1335
1336/*drl added 11/27/2001*/
bb7c2085 1337/*@=bounds@*/
This page took 0.333073 seconds and 5 git commands to generate.