2 ** Inserted at beginning of c files generated by bison
3 ** REMEMBER: Change bison.reset too.
42 /*@-unqualifiedtrans@*/
46 /*drl added 11/27/2001*/
48 /*@-arrayboundsread@*/
49 /* < end of bison.head > */
52 /* A Bison parser, made from signature.y
53 by GNU Bison version 1.28 */
55 #define YYBISON 1 /* Identify Bison output. */
57 #define yyparse lslparse
59 #define yyerror lslerror
60 #define yylval lsllval
61 #define yychar lslchar
62 #define yydebug lsldebug
63 #define yynerrs lslnerrs
64 #define LST_SIMPLEID 257
65 #define LST_LOGICALOP 258
67 #define LST_SIMPLEOP 260
68 #define LST_MAPSYM 261
69 #define LST_FIELDMAPSYM 262
70 #define LST_MARKERSYM 263
71 #define LST_ifTOKEN 264
72 #define LST_thenTOKEN 265
73 #define LST_elseTOKEN 266
74 #define LST_LBRACKET 267
75 #define LST_RBRACKET 268
76 #define LST_SELECTSYM 269
77 #define LST_SEPSYM 270
78 #define LST_OPENSYM 271
79 #define LST_CLOSESYM 272
83 #define LST_COMMENTSYM 276
84 #define LST_WHITESPACE 277
85 #define LST_QUANTIFIERSYM 278
86 #define LST_EQUATIONSYM 279
87 #define LST_EQSEPSYM 280
88 #define LST_COMPOSESYM 281
91 #define LST_assertsTOKEN 284
92 #define LST_assumesTOKEN 285
93 #define LST_byTOKEN 286
94 #define LST_convertsTOKEN 287
95 #define LST_enumerationTOKEN 288
96 #define LST_equationsTOKEN 289
97 #define LST_exemptingTOKEN 290
98 #define LST_forTOKEN 291
99 #define LST_generatedTOKEN 292
100 #define LST_impliesTOKEN 293
101 #define LST_includesTOKEN 294
102 #define LST_introducesTOKEN 295
103 #define LST_ofTOKEN 296
104 #define LST_partitionedTOKEN 297
105 #define LST_traitTOKEN 298
106 #define LST_tupleTOKEN 299
107 #define LST_unionTOKEN 300
108 #define LST_BADTOKEN 301
113 # include "lclintMacros.nf"
114 # include "llbasic.h"
115 # include "lslparse.h"
116 # include "signature.h"
118 void lslerror (char *);
119 /*@dependent@*/ /*@null@*/ lslOp importedlslOp;
121 /*@-noparams@*/ /* Can't list params since YYSTYPE isn't defined yet. */
122 static void yyprint (/*FILE *p_file, int p_type, YYSTYPE p_value */);
125 # define YYPRINT(file, type, value) yyprint (file, type, value)
135 ltoken ltok; /* a leaf is also an ltoken */
137 /*@only@*/ ltokenList ltokenList;
138 /*@only@*/ opFormNode opform;
139 /*@owned@*/ sigNode signature;
140 /*@only@*/ nameNode name;
141 /*@owned@*/ lslOp operator;
142 /*@only@*/ lslOpList operators;
143 /*@-redef@*/ /*@-matchfields@*/
160 #define YYFLAG -32768
163 #define YYTRANSLATE(x) ((unsigned)(x) <= 301 ? yytranslate[x] : 62)
165 static const char yytranslate[] = { 0,
166 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
168 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
169 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
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, 1, 3, 4, 5, 6,
192 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
193 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
194 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
195 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
200 static const short yyprhs[] = { 0,
201 0, 2, 4, 7, 11, 13, 15, 22, 24, 27,
202 30, 34, 38, 43, 48, 54, 58, 63, 68, 74,
203 77, 81, 85, 87, 89, 91, 92, 94, 96, 100,
204 102, 104, 108, 109, 111, 113, 117, 119
207 static const short yyrhs[] = { 49,
208 0, 50, 0, 49, 50, 0, 51, 19, 57, 0,
209 61, 0, 52, 0, 10, 9, 11, 9, 12, 9,
210 0, 53, 0, 9, 53, 0, 53, 9, 0, 9,
211 53, 9, 0, 17, 54, 18, 0, 9, 17, 54,
212 18, 0, 17, 54, 18, 9, 0, 9, 17, 54,
213 18, 9, 0, 13, 54, 14, 0, 9, 13, 54,
214 14, 0, 13, 54, 14, 9, 0, 9, 13, 54,
215 14, 9, 0, 15, 3, 0, 9, 15, 3, 0,
216 9, 8, 3, 0, 6, 0, 4, 0, 5, 0,
217 0, 55, 0, 9, 0, 55, 56, 9, 0, 20,
218 0, 16, 0, 58, 7, 60, 0, 0, 59, 0,
219 60, 0, 59, 20, 60, 0, 3, 0, 3, 0
225 static const short yyrline[] = { 0,
226 137, 139, 144, 148, 154, 156, 160, 162, 164, 166,
227 168, 170, 172, 174, 176, 179, 182, 185, 188, 191,
228 194, 199, 204, 206, 208, 211, 213, 216, 218, 221,
229 223, 226, 229, 231, 234, 236, 239, 245
234 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
236 static const char * const yytname[] = { "$","error","$undefined.","LST_SIMPLEID",
237 "LST_LOGICALOP","LST_EQOP","LST_SIMPLEOP","LST_MAPSYM","LST_FIELDMAPSYM","LST_MARKERSYM",
238 "LST_ifTOKEN","LST_thenTOKEN","LST_elseTOKEN","LST_LBRACKET","LST_RBRACKET",
239 "LST_SELECTSYM","LST_SEPSYM","LST_OPENSYM","LST_CLOSESYM","LST_COLON","LST_COMMA",
240 "LST_EOL","LST_COMMENTSYM","LST_WHITESPACE","LST_QUANTIFIERSYM","LST_EQUATIONSYM",
241 "LST_EQSEPSYM","LST_COMPOSESYM","LST_LPAR","LST_RPAR","LST_assertsTOKEN","LST_assumesTOKEN",
242 "LST_byTOKEN","LST_convertsTOKEN","LST_enumerationTOKEN","LST_equationsTOKEN",
243 "LST_exemptingTOKEN","LST_forTOKEN","LST_generatedTOKEN","LST_impliesTOKEN",
244 "LST_includesTOKEN","LST_introducesTOKEN","LST_ofTOKEN","LST_partitionedTOKEN",
245 "LST_traitTOKEN","LST_tupleTOKEN","LST_unionTOKEN","LST_BADTOKEN","top","operatorList",
246 "operator","name","opForm","anyOp","middle","placeList","separator","signature",
247 "domain","sortList","sortId","opId", NULL
251 static const short yyr1[] = { 0,
252 48, 49, 49, 50, 51, 51, 52, 52, 52, 52,
253 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
254 52, 52, 53, 53, 53, 54, 54, 55, 55, 56,
255 56, 57, 58, 58, 59, 59, 60, 61
258 static const short yyr2[] = { 0,
259 1, 1, 2, 3, 1, 1, 6, 1, 2, 2,
260 3, 3, 4, 4, 5, 3, 4, 4, 5, 2,
261 3, 3, 1, 1, 1, 0, 1, 1, 3, 1,
262 1, 3, 0, 1, 1, 3, 1, 1
265 static const short yydefact[] = { 0,
266 38, 24, 25, 23, 0, 0, 26, 0, 26, 1,
267 2, 0, 6, 8, 5, 0, 26, 0, 26, 9,
268 0, 28, 0, 27, 20, 0, 3, 33, 10, 22,
269 0, 21, 0, 11, 0, 16, 31, 30, 0, 12,
270 37, 4, 0, 34, 35, 17, 13, 0, 18, 29,
271 14, 0, 0, 19, 15, 0, 32, 36, 7, 0,
275 static const short yydefgoto[] = { 60,
276 10, 11, 12, 13, 14, 23, 24, 39, 42, 43,
280 static const short yypact[] = { -3,
281 -32768,-32768,-32768,-32768, 11, -4, 0, 8, 0, -3,
282 -32768, -1,-32768, 13,-32768, 17, 0, 22, 0, 18,
283 20,-32768, 19, -12,-32768, 14,-32768, 31,-32768,-32768,
284 21,-32768, 23,-32768, 27, 28,-32768,-32768, 29, 30,
285 -32768,-32768, 33, 24,-32768, 34, 36, 35,-32768,-32768,
286 -32768, 31, 31,-32768,-32768, 37,-32768,-32768,-32768, 42,
290 static const short yypgoto[] = {-32768,
291 -32768, 39,-32768,-32768, 45, 4,-32768,-32768,-32768,-32768,
299 static const short yytable[] = { 1,
300 2, 3, 4, 37, 21, 5, 6, 38, 22, 7,
301 25, 8, 26, 9, 2, 3, 4, 28, 16, 30,
302 31, 29, 33, 17, 32, 18, 34, 19, 57, 58,
303 35, 40, 36, 41, 46, 48, 49, 50, 51, 52,
304 47, 61, 54, 53, 55, 59, 56, 62, 27, 20
307 static const short yycheck[] = { 3,
308 4, 5, 6, 16, 9, 9, 10, 20, 9, 13,
309 3, 15, 9, 17, 4, 5, 6, 19, 8, 3,
310 17, 9, 19, 13, 3, 15, 9, 17, 52, 53,
311 11, 18, 14, 3, 14, 9, 9, 9, 9, 7,
312 18, 0, 9, 20, 9, 9, 12, 0, 10, 5
316 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
318 /* This file comes from bison-1.28. */
320 /* Skeleton output parser for bison,
321 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
323 This program is free software; you can redistribute it and/or modify
324 it under the terms of the GNU General Public License as published by
325 the Free Software Foundation; either version 2, or (at your option)
328 This program is distributed in the hope that it will be useful,
329 but WITHOUT ANY WARRANTY; without even the implied warranty of
330 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
331 GNU General Public License for more details.
333 You should have received a copy of the GNU General Public License
334 along with this program; if not, write to the Free Software
335 Foundation, Inc., 59 Temple Place - Suite 330,
336 Boston, MA 02111-1307, USA. */
338 /* As a special exception, when this file is copied by Bison into a
339 Bison output file, you may use that output file without restriction.
340 This special exception was added by the Free Software Foundation
341 in version 1.24 of Bison. */
343 /* This is the parser code that is written into each bison parser
344 when the %semantic_parser declaration is not specified in the grammar.
345 It was written by Richard Stallman by simplifying the hairy parser
346 used when %semantic_parser is specified. */
348 #ifndef YYSTACK_USE_ALLOCA
350 #define YYSTACK_USE_ALLOCA
351 #else /* alloca not defined */
353 #define YYSTACK_USE_ALLOCA
354 #define alloca __builtin_alloca
355 #else /* not GNU C. */
356 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
357 #define YYSTACK_USE_ALLOCA
359 #else /* not sparc */
360 /* We think this test detects Watcom and Microsoft C. */
361 /* This used to test MSDOS, but that is a bad idea
362 since that symbol is in the user namespace. */
363 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
364 #if 0 /* No need for malloc.h, which pollutes the namespace;
365 instead, just don't use alloca. */
368 #else /* not MSDOS, or __TURBOC__ */
370 /* I don't know what this was needed for, but it pollutes the namespace.
371 So I turned it off. rms, 2 May 1997. */
372 /* #include <malloc.h> */
374 #define YYSTACK_USE_ALLOCA
375 #else /* not MSDOS, or __TURBOC__, or _AIX */
377 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
378 and on HPUX 10. Eventually we can turn this on. */
379 #define YYSTACK_USE_ALLOCA
380 #define alloca __builtin_alloca
383 #endif /* not _AIX */
384 #endif /* not MSDOS, or __TURBOC__ */
385 #endif /* not sparc */
386 #endif /* not GNU C */
387 #endif /* alloca not defined */
388 #endif /* YYSTACK_USE_ALLOCA not defined */
390 #ifdef YYSTACK_USE_ALLOCA
391 #define YYSTACK_ALLOC alloca
393 #define YYSTACK_ALLOC malloc
396 /* Note: there must be only one dollar sign in this file.
397 It is replaced by the list of actions, each action
398 as one case of the switch. */
400 #define yyerrok (yyerrstatus = 0)
401 #define yyclearin (yychar = YYEMPTY)
404 #define YYACCEPT goto yyacceptlab
405 #define YYABORT goto yyabortlab
406 #define YYERROR goto yyerrlab1
407 /* Like YYERROR except do call yyerror.
408 This remains here temporarily to ease the
409 transition to the new meaning of YYERROR, for GCC.
410 Once GCC version 2 has supplanted version 1, this can go. */
411 #define YYFAIL goto yyerrlab
412 #define YYRECOVERING() (!!yyerrstatus)
413 #define YYBACKUP(token, value) \
415 if (yychar == YYEMPTY && yylen == 1) \
416 { yychar = (token), yylval = (value); \
417 yychar1 = YYTRANSLATE (yychar); \
422 { yyerror ("syntax error: cannot back up"); YYERROR; } \
426 #define YYERRCODE 256
429 #define YYLEX yylex()
435 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
437 #define YYLEX yylex(&yylval, &yylloc)
439 #else /* not YYLSP_NEEDED */
441 #define YYLEX yylex(&yylval, YYLEX_PARAM)
443 #define YYLEX yylex(&yylval)
445 #endif /* not YYLSP_NEEDED */
448 /* If nonreentrant, generate the variables here */
452 int yychar; /* the lookahead symbol */
453 YYSTYPE yylval; /* the semantic value of the */
454 /* lookahead symbol */
457 YYLTYPE yylloc; /* location data for the lookahead */
461 int yynerrs; /* number of parse errors so far */
462 #endif /* not YYPURE */
465 int yydebug; /* nonzero means print parse trace */
466 /* Since this is uninitialized, it does not stop multiple parsers
470 /* YYINITDEPTH indicates the initial size of the parser's stacks */
473 #define YYINITDEPTH 200
476 /* YYMAXDEPTH is the maximum size the stacks can grow to
477 (effective only if the built-in stack extension method is used). */
484 #define YYMAXDEPTH 10000
487 /* Define __yy_memcpy. Note that the size argument
488 should be passed with type unsigned int, because that is what the non-GCC
489 definitions require. With GCC, __builtin_memcpy takes an arg
490 of type size_t, but it can handle unsigned int. */
492 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
493 #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
494 #else /* not GNU C or C++ */
497 /* This is the most reliable way to avoid incompatibilities
498 in available built-in functions on various systems. */
500 __yy_memcpy (to, from, count)
505 register char *f = from;
506 register char *t = to;
507 register int i = count;
513 #else /* __cplusplus */
515 /* This is the most reliable way to avoid incompatibilities
516 in available built-in functions on various systems. */
518 __yy_memcpy (char *to, char *from, unsigned int count)
520 register char *t = to;
521 register char *f = from;
522 register int i = count;
533 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
534 into yyparse. The argument should have type void *.
535 It should actually point to an object.
536 Grammar actions can access the variable by casting it
537 to the proper pointer type. */
541 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
542 #define YYPARSE_PARAM_DECL
543 #else /* not __cplusplus */
544 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
545 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
546 #endif /* not __cplusplus */
547 #else /* not YYPARSE_PARAM */
548 #define YYPARSE_PARAM_ARG
549 #define YYPARSE_PARAM_DECL
550 #endif /* not YYPARSE_PARAM */
552 /* Prevent warning if -Wstrict-prototypes. */
555 int yyparse (void *);
562 yyparse(YYPARSE_PARAM_ARG)
565 register int yystate;
567 register short *yyssp;
568 register YYSTYPE *yyvsp;
569 int yyerrstatus; /* number of tokens to shift before error messages enabled */
570 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
572 short yyssa[YYINITDEPTH]; /* the state stack */
573 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
575 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
576 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
579 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
580 YYLTYPE *yyls = yylsa;
583 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
585 #define YYPOPSTACK (yyvsp--, yyssp--)
588 int yystacksize = YYINITDEPTH;
589 int yyfree_stacks = 0;
600 YYSTYPE yyval; /* the variable used to return */
601 /* semantic values from the action */
608 fprintf(stderr, "Starting parse\n");
614 yychar = YYEMPTY; /* Cause a token to be read. */
616 /* Initialize stack pointers.
617 Waste one element of value and location stack
618 so that they stay on the same level as the state stack.
619 The wasted elements are never initialized. */
627 /* Push a new state, which is found in yystate . */
628 /* In all cases, when you get here, the value and location stacks
629 have just been pushed. so pushing a state here evens the stacks. */
634 if (yyssp >= yyss + yystacksize - 1)
636 /* Give user a chance to reallocate the stack */
637 /* Use copies of these so that the &'s don't force the real ones into memory. */
638 YYSTYPE *yyvs1 = yyvs;
641 YYLTYPE *yyls1 = yyls;
644 /* Get the current used size of the three stacks, in elements. */
645 int size = yyssp - yyss + 1;
648 /* Each stack pointer address is followed by the size of
649 the data in use in that stack, in bytes. */
651 /* This used to be a conditional around just the two extra args,
652 but that might be undefined if yyoverflow is a macro. */
653 yyoverflow("parser stack overflow",
654 &yyss1, size * sizeof (*yyssp),
655 &yyvs1, size * sizeof (*yyvsp),
656 &yyls1, size * sizeof (*yylsp),
659 yyoverflow("parser stack overflow",
660 &yyss1, size * sizeof (*yyssp),
661 &yyvs1, size * sizeof (*yyvsp),
665 yyss = yyss1; yyvs = yyvs1;
669 #else /* no yyoverflow */
670 /* Extend the stack our own way. */
671 if (yystacksize >= YYMAXDEPTH)
673 yyerror("parser stack overflow");
685 if (yystacksize > YYMAXDEPTH)
686 yystacksize = YYMAXDEPTH;
687 #ifndef YYSTACK_USE_ALLOCA
690 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
691 __yy_memcpy ((char *)yyss, (char *)yyss1,
692 size * (unsigned int) sizeof (*yyssp));
693 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
694 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
695 size * (unsigned int) sizeof (*yyvsp));
697 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
698 __yy_memcpy ((char *)yyls, (char *)yyls1,
699 size * (unsigned int) sizeof (*yylsp));
701 #endif /* no yyoverflow */
703 yyssp = yyss + size - 1;
704 yyvsp = yyvs + size - 1;
706 yylsp = yyls + size - 1;
711 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
714 if (yyssp >= yyss + yystacksize - 1)
720 fprintf(stderr, "Entering state %d\n", yystate);
726 /* Do appropriate processing given the current state. */
727 /* Read a lookahead token if we need one and don't already have one. */
730 /* First try to decide what to do without reference to lookahead token. */
732 yyn = yypact[yystate];
736 /* Not known => get a lookahead token if don't already have one. */
738 /* yychar is either YYEMPTY or YYEOF
739 or a valid token in external form. */
741 if (yychar == YYEMPTY)
745 fprintf(stderr, "Reading a token: ");
750 /* Convert token to internal form (in yychar1) for indexing tables with */
752 if (yychar <= 0) /* This means end of input. */
755 yychar = YYEOF; /* Don't call YYLEX any more */
759 fprintf(stderr, "Now at end of input.\n");
764 yychar1 = YYTRANSLATE(yychar);
769 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
770 /* Give the individual parser a way to print the precise meaning
771 of a token, for further debugging info. */
773 YYPRINT (stderr, yychar, yylval);
775 fprintf (stderr, ")\n");
781 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
786 /* yyn is what to do for this token type in this state.
787 Negative => reduce, -yyn is rule number.
788 Positive => shift, yyn is new state.
789 New state is final state => don't bother to shift,
791 0, or most negative number => error. */
806 /* Shift the lookahead token. */
810 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
813 /* Discard the token being shifted unless it is eof. */
822 /* count tokens shifted since error; after three, turn off error status. */
823 if (yyerrstatus) yyerrstatus--;
828 /* Do the default action for the current state. */
831 yyn = yydefact[yystate];
835 /* Do a reduction. yyn is the number of a rule to reduce with. */
839 yyval = yyvsp[1-yylen]; /* implement default value of the action */
846 fprintf (stderr, "Reducing via rule %d (line %d), ",
849 /* Print the symbols being reduced, and their result. */
850 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
851 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
852 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
860 { lslOpList_free (yyvsp[0].operators); ;
863 { lslOpList x = lslOpList_new ();
864 g_importedlslOp = yyvsp[0].operator;
865 lslOpList_add (x, yyvsp[0].operator);
866 yyval.operators = x; ;
869 { lslOpList_add (yyvsp[-1].operators, yyvsp[0].operator);
870 yyval.operators = yyvsp[-1].operators; ;
873 { yyval.operator = makelslOpNode (yyvsp[-2].name, yyvsp[0].signature); ;
876 { yyval.name = makeNameNodeId (yyvsp[0].ltok); ;
879 { yyval.name = makeNameNodeForm (yyvsp[0].opform); ;
882 { yyval.opform = makeOpFormNode (yyvsp[-5].ltok, OPF_IF, opFormUnion_createMiddle (0), ltoken_undefined); ;
885 { yyval.opform = makeOpFormNode (yyvsp[0].ltok, OPF_ANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
888 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
891 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_ANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
894 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
897 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
900 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
903 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
906 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLEM,
907 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
910 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMIDDLE,
911 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
914 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMMIDDLE,
915 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
918 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMIDDLEM,
919 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
922 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMMIDDLEM,
923 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
926 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_SELECT,
927 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
930 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MSELECT,
931 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
934 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMAP,
935 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
938 { yyval.ltok = yyvsp[0].ltok; ;
941 { yyval.ltok = yyvsp[0].ltok; ;
944 { yyval.ltok = yyvsp[0].ltok; ;
950 { yyval.count = yyvsp[0].count; ;
956 { yyval.count = yyvsp[-2].count + 1; ;
959 { yyval.ltok = yyvsp[0].ltok; ;
962 { yyval.ltok = yyvsp[0].ltok; ;
965 { yyval.signature = makesigNode (yyvsp[-1].ltok, yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
968 { yyval.ltokenList = ltokenList_new (); ;
971 { yyval.ltokenList = yyvsp[0].ltokenList; ;
974 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
977 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
981 yyval.ltok = yyvsp[0].ltok;
982 ltoken_setText (yyval.ltok, processTraitSortId (ltoken_getText (yyvsp[0].ltok)));
986 { yyval.ltok = yyvsp[0].ltok; ;
989 /* the action file gets copied in in place of this dollarsign */
1001 short *ssp1 = yyss - 1;
1002 fprintf (stderr, "state stack now");
1003 while (ssp1 != yyssp)
1004 fprintf (stderr, " %d", *++ssp1);
1005 fprintf (stderr, "\n");
1015 yylsp->first_line = yylloc.first_line;
1016 yylsp->first_column = yylloc.first_column;
1017 yylsp->last_line = (yylsp-1)->last_line;
1018 yylsp->last_column = (yylsp-1)->last_column;
1023 yylsp->last_line = (yylsp+yylen-1)->last_line;
1024 yylsp->last_column = (yylsp+yylen-1)->last_column;
1028 /* Now "shift" the result of the reduction.
1029 Determine what state that goes to,
1030 based on the state we popped back to
1031 and the rule number reduced by. */
1035 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1036 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1037 yystate = yytable[yystate];
1039 yystate = yydefgoto[yyn - YYNTBASE];
1043 yyerrlab: /* here on detecting error */
1046 /* If not already recovering from an error, report this error. */
1050 #ifdef YYERROR_VERBOSE
1051 yyn = yypact[yystate];
1053 if (yyn > YYFLAG && yyn < YYLAST)
1060 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1061 for (x = (yyn < 0 ? -yyn : 0);
1062 x < (sizeof(yytname) / sizeof(char *)); x++)
1063 if (yycheck[x + yyn] == x)
1064 size += strlen(yytname[x]) + 15, count++;
1065 msg = (char *) malloc(size + 15);
1068 strcpy(msg, "parse error");
1073 for (x = (yyn < 0 ? -yyn : 0);
1074 x < (sizeof(yytname) / sizeof(char *)); x++)
1075 if (yycheck[x + yyn] == x)
1077 strcat(msg, count == 0 ? ", expecting `" : " or `");
1078 strcat(msg, yytname[x]);
1087 yyerror ("parse error; also virtual memory exceeded");
1090 #endif /* YYERROR_VERBOSE */
1091 yyerror("parse error");
1095 yyerrlab1: /* here on error raised explicitly by an action */
1097 if (yyerrstatus == 3)
1099 /* if just tried and failed to reuse lookahead token after an error, discard it. */
1101 /* return failure if at end of input */
1102 if (yychar == YYEOF)
1107 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1113 /* Else will try to reuse lookahead token
1114 after shifting the error token. */
1116 yyerrstatus = 3; /* Each real token shifted decrements this */
1120 yyerrdefault: /* current state does not do anything special for the error token. */
1123 /* This is wrong; only states that explicitly want error tokens
1124 should shift them. */
1125 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1126 if (yyn) goto yydefault;
1129 yyerrpop: /* pop the current state because it cannot handle the error token */
1131 if (yyssp == yyss) YYABORT;
1141 short *ssp1 = yyss - 1;
1142 fprintf (stderr, "Error: state stack now");
1143 while (ssp1 != yyssp)
1144 fprintf (stderr, " %d", *++ssp1);
1145 fprintf (stderr, "\n");
1151 yyn = yypact[yystate];
1156 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1175 fprintf(stderr, "Shifting error token, ");
1187 /* YYACCEPT comes here. */
1199 /* YYABORT comes here. */
1212 # include "bison.reset"
1214 extern char *yytext;
1216 void lslerror (char *s)
1219 (cstring_makeLiteral
1220 ("There has been a problem in the parser with LSL signatures. This is believed to result "
1221 "from a problem with bison v. 1.25. Please try rebuidling LCLint "
1222 "using the pre-compiled grammar files by commenting out the "
1223 "BISON= line in the top-level Makefile."));
1226 static void yyprint (FILE *file, int type, YYSTYPE value)
1228 fprintf (file, " (%u:%u type: %d; text: %s) ",
1229 ltoken_getLine (value.ltok),
1230 ltoken_getCol (value.ltok),
1232 ltoken_getRawTextChars (value.ltok));
1235 extern void PrintToken (ltoken tok) {
1238 switch (ltoken_getCode (tok))
1240 case NOTTOKEN: codStr = "*** NOTTOKEN ***"; break;
1241 case LST_QUANTIFIERSYM: codStr = "QUANTIFIERSYM"; break;
1242 case LST_LOGICALOP: codStr = "LOGICALOP: "; break;
1243 case LST_SELECTSYM: codStr = "LST_SELECTSYM"; break;
1244 case LST_OPENSYM: codStr = "LST_OPENSYM"; break;
1245 case LST_SEPSYM: codStr = "SEPSYM"; break;
1246 case LST_CLOSESYM: codStr = "LST_CLOSESYM"; break;
1247 case LST_SIMPLEID: codStr = "LST_SIMPLEID"; break;
1248 case LST_MAPSYM: codStr = "MAPSYM"; break;
1249 case LST_MARKERSYM: codStr = "LST_MARKERSYM"; break;
1250 case LST_COMMENTSYM: codStr = "COMMENTSYM"; break;
1251 case LST_SIMPLEOP: codStr = "SIMPLEOP"; break;
1252 case LST_COLON: codStr = "LST_COLON"; break;
1253 case LST_COMMA: codStr = "COMMA"; break;
1254 case LST_LBRACKET: codStr = "LST_LBRACKET"; break;
1255 case LST_LPAR: codStr = "LST_LPAR"; break;
1256 case LST_RBRACKET: codStr = "LST_RBRACKET"; break;
1257 case LST_RPAR: codStr = "LST_RPAR"; break;
1258 case LST_EQOP: codStr = "LST_EQOP"; break;
1259 case LST_WHITESPACE: codStr = "WHITESPACE,"; break;
1260 case LST_EOL: codStr = "LST_EOL"; break;
1261 case LST_elseTOKEN: codStr = "elseTOKEN"; break;
1262 case LST_ifTOKEN: codStr = "ifTOKEN"; break;
1263 case LST_thenTOKEN: codStr = "thenTOKEN"; break;
1264 case LST_BADTOKEN: codStr = "*** BADTOKEN ***"; break;
1265 case LEOFTOKEN: /* can't reach LEOFTOKEN easily */
1266 codStr = "LEOFTOKEN"; break;
1268 codStr = "*** invalid token code ***";
1272 /* only used for debugging */
1273 printf ("%u:%u: Token Code (%u): %s",
1274 ltoken_getLine (tok), ltoken_getCol (tok),
1275 ltoken_getCode (tok), codStr);
1276 if (ltoken_getRawText (tok) != 0)
1278 printf (", Token String (%lu): %s\n",
1279 ltoken_getRawText (tok), ltoken_getRawTextChars (tok));
1288 ** Resets all flags in bison.head
1310 /*@=evalorderuncon@*/
1319 /*@=elseifcomplete@*/
1323 /*@=readonlytrans@*/
1326 /*@=systemunrecog@*/
1327 /*@=dependenttrans@*/
1328 /*@=unqualifiedtrans@*/
1332 /*drl added 11/27/2001*/
1334 /*@=arrayboundsread@*/