2 ** Inserted at beginning of c files generated by bison
3 ** REMEMBER: Change bison.reset too.
42 /*@-unqualifiedtrans@*/
45 /* < end of bison.head > */
48 /* A Bison parser, made from signature.y
49 by GNU Bison version 1.27
52 #define YYBISON 1 /* Identify Bison output. */
54 #define yyparse lslparse
56 #define yyerror lslerror
57 #define yylval lsllval
58 #define yychar lslchar
59 #define yydebug lsldebug
60 #define yynerrs lslnerrs
61 #define LST_SIMPLEID 257
62 #define LST_LOGICALOP 258
64 #define LST_SIMPLEOP 260
65 #define LST_MAPSYM 261
66 #define LST_FIELDMAPSYM 262
67 #define LST_MARKERSYM 263
68 #define LST_ifTOKEN 264
69 #define LST_thenTOKEN 265
70 #define LST_elseTOKEN 266
71 #define LST_LBRACKET 267
72 #define LST_RBRACKET 268
73 #define LST_SELECTSYM 269
74 #define LST_SEPSYM 270
75 #define LST_OPENSYM 271
76 #define LST_CLOSESYM 272
80 #define LST_COMMENTSYM 276
81 #define LST_WHITESPACE 277
82 #define LST_QUANTIFIERSYM 278
83 #define LST_EQUATIONSYM 279
84 #define LST_EQSEPSYM 280
85 #define LST_COMPOSESYM 281
88 #define LST_assertsTOKEN 284
89 #define LST_assumesTOKEN 285
90 #define LST_byTOKEN 286
91 #define LST_convertsTOKEN 287
92 #define LST_enumerationTOKEN 288
93 #define LST_equationsTOKEN 289
94 #define LST_exemptingTOKEN 290
95 #define LST_forTOKEN 291
96 #define LST_generatedTOKEN 292
97 #define LST_impliesTOKEN 293
98 #define LST_includesTOKEN 294
99 #define LST_introducesTOKEN 295
100 #define LST_ofTOKEN 296
101 #define LST_partitionedTOKEN 297
102 #define LST_traitTOKEN 298
103 #define LST_tupleTOKEN 299
104 #define LST_unionTOKEN 300
105 #define LST_BADTOKEN 301
107 #line 36 "signature.y"
110 # include "bison.reset"
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)
129 # include "bison.head"
132 #line 73 "signature.y"
134 ltoken ltok; /* a leaf is also an ltoken */
136 /*@only@*/ ltokenList ltokenList;
137 /*@only@*/ opFormNode opform;
138 /*@owned@*/ sigNode signature;
139 /*@only@*/ nameNode name;
140 /*@owned@*/ lslOp operator;
141 /*@only@*/ lslOpList operators;
158 #define YYFLAG -32768
161 #define YYTRANSLATE(x) ((unsigned)(x) <= 301 ? yytranslate[x] : 62)
163 static const char yytranslate[] = { 0,
164 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
165 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
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, 1, 3, 4, 5, 6,
190 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
191 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
192 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
193 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
198 static const short yyprhs[] = { 0,
199 0, 2, 4, 7, 11, 13, 15, 22, 24, 27,
200 30, 34, 38, 43, 48, 54, 58, 63, 68, 74,
201 77, 81, 85, 87, 89, 91, 92, 94, 96, 100,
202 102, 104, 108, 109, 111, 113, 117, 119
205 static const short yyrhs[] = { 49,
206 0, 50, 0, 49, 50, 0, 51, 19, 57, 0,
207 61, 0, 52, 0, 10, 9, 11, 9, 12, 9,
208 0, 53, 0, 9, 53, 0, 53, 9, 0, 9,
209 53, 9, 0, 17, 54, 18, 0, 9, 17, 54,
210 18, 0, 17, 54, 18, 9, 0, 9, 17, 54,
211 18, 9, 0, 13, 54, 14, 0, 9, 13, 54,
212 14, 0, 13, 54, 14, 9, 0, 9, 13, 54,
213 14, 9, 0, 15, 3, 0, 9, 15, 3, 0,
214 9, 8, 3, 0, 6, 0, 4, 0, 5, 0,
215 0, 55, 0, 9, 0, 55, 56, 9, 0, 20,
216 0, 16, 0, 58, 7, 60, 0, 0, 59, 0,
217 60, 0, 59, 20, 60, 0, 3, 0, 3, 0
223 static const short yyrline[] = { 0,
224 139, 141, 146, 150, 156, 158, 162, 164, 166, 168,
225 170, 172, 174, 176, 178, 181, 184, 187, 190, 193,
226 196, 201, 206, 208, 210, 213, 215, 218, 220, 223,
227 225, 228, 231, 233, 236, 238, 241, 247
232 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
234 static const char * const yytname[] = { "$","error","$undefined.","LST_SIMPLEID",
235 "LST_LOGICALOP","LST_EQOP","LST_SIMPLEOP","LST_MAPSYM","LST_FIELDMAPSYM","LST_MARKERSYM",
236 "LST_ifTOKEN","LST_thenTOKEN","LST_elseTOKEN","LST_LBRACKET","LST_RBRACKET",
237 "LST_SELECTSYM","LST_SEPSYM","LST_OPENSYM","LST_CLOSESYM","LST_COLON","LST_COMMA",
238 "LST_EOL","LST_COMMENTSYM","LST_WHITESPACE","LST_QUANTIFIERSYM","LST_EQUATIONSYM",
239 "LST_EQSEPSYM","LST_COMPOSESYM","LST_LPAR","LST_RPAR","LST_assertsTOKEN","LST_assumesTOKEN",
240 "LST_byTOKEN","LST_convertsTOKEN","LST_enumerationTOKEN","LST_equationsTOKEN",
241 "LST_exemptingTOKEN","LST_forTOKEN","LST_generatedTOKEN","LST_impliesTOKEN",
242 "LST_includesTOKEN","LST_introducesTOKEN","LST_ofTOKEN","LST_partitionedTOKEN",
243 "LST_traitTOKEN","LST_tupleTOKEN","LST_unionTOKEN","LST_BADTOKEN","top","operatorList",
244 "operator","name","opForm","anyOp","middle","placeList","separator","signature",
245 "domain","sortList","sortId","opId", NULL
249 static const short yyr1[] = { 0,
250 48, 49, 49, 50, 51, 51, 52, 52, 52, 52,
251 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
252 52, 52, 53, 53, 53, 54, 54, 55, 55, 56,
253 56, 57, 58, 58, 59, 59, 60, 61
256 static const short yyr2[] = { 0,
257 1, 1, 2, 3, 1, 1, 6, 1, 2, 2,
258 3, 3, 4, 4, 5, 3, 4, 4, 5, 2,
259 3, 3, 1, 1, 1, 0, 1, 1, 3, 1,
260 1, 3, 0, 1, 1, 3, 1, 1
263 static const short yydefact[] = { 0,
264 38, 24, 25, 23, 0, 0, 26, 0, 26, 1,
265 2, 0, 6, 8, 5, 0, 26, 0, 26, 9,
266 0, 28, 0, 27, 20, 0, 3, 33, 10, 22,
267 0, 21, 0, 11, 0, 16, 31, 30, 0, 12,
268 37, 4, 0, 34, 35, 17, 13, 0, 18, 29,
269 14, 0, 0, 19, 15, 0, 32, 36, 7, 0,
273 static const short yydefgoto[] = { 60,
274 10, 11, 12, 13, 14, 23, 24, 39, 42, 43,
278 static const short yypact[] = { -3,
279 -32768,-32768,-32768,-32768, 11, -4, 0, 8, 0, -3,
280 -32768, -1,-32768, 13,-32768, 17, 0, 22, 0, 18,
281 20,-32768, 19, -12,-32768, 14,-32768, 31,-32768,-32768,
282 21,-32768, 23,-32768, 27, 28,-32768,-32768, 29, 30,
283 -32768,-32768, 33, 24,-32768, 34, 36, 35,-32768,-32768,
284 -32768, 31, 31,-32768,-32768, 37,-32768,-32768,-32768, 42,
288 static const short yypgoto[] = {-32768,
289 -32768, 39,-32768,-32768, 45, 4,-32768,-32768,-32768,-32768,
297 static const short yytable[] = { 1,
298 2, 3, 4, 37, 21, 5, 6, 38, 22, 7,
299 25, 8, 26, 9, 2, 3, 4, 28, 16, 30,
300 31, 29, 33, 17, 32, 18, 34, 19, 57, 58,
301 35, 40, 36, 41, 46, 48, 49, 50, 51, 52,
302 47, 61, 54, 53, 55, 59, 56, 62, 27, 20
305 static const short yycheck[] = { 3,
306 4, 5, 6, 16, 9, 9, 10, 20, 9, 13,
307 3, 15, 9, 17, 4, 5, 6, 19, 8, 3,
308 17, 9, 19, 13, 3, 15, 9, 17, 52, 53,
309 11, 18, 14, 3, 14, 9, 9, 9, 9, 7,
310 18, 0, 9, 20, 9, 9, 12, 0, 10, 5
314 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
315 #line 3 "/usr/lib/bison.simple"
316 /* This file comes from bison-1.27. */
318 /* Skeleton output parser for bison,
319 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
321 This program is free software; you can redistribute it and/or modify
322 it under the terms of the GNU General Public License as published by
323 the Free Software Foundation; either version 2, or (at your option)
326 This program is distributed in the hope that it will be useful,
327 but WITHOUT ANY WARRANTY; without even the implied warranty of
328 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
329 GNU General Public License for more details.
331 You should have received a copy of the GNU General Public License
332 along with this program; if not, write to the Free Software
333 Foundation, Inc., 59 Temple Place - Suite 330,
334 Boston, MA 02111-1307, USA. */
336 /* As a special exception, when this file is copied by Bison into a
337 Bison output file, you may use that output file without restriction.
338 This special exception was added by the Free Software Foundation
339 in version 1.24 of Bison. */
341 /* This is the parser code that is written into each bison parser
342 when the %semantic_parser declaration is not specified in the grammar.
343 It was written by Richard Stallman by simplifying the hairy parser
344 used when %semantic_parser is specified. */
346 #ifndef YYSTACK_USE_ALLOCA
348 #define YYSTACK_USE_ALLOCA
349 #else /* alloca not defined */
351 #define YYSTACK_USE_ALLOCA
352 #define alloca __builtin_alloca
353 #else /* not GNU C. */
354 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
355 #define YYSTACK_USE_ALLOCA
357 #else /* not sparc */
358 /* We think this test detects Watcom and Microsoft C. */
359 /* This used to test MSDOS, but that is a bad idea
360 since that symbol is in the user namespace. */
361 #if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
362 #if 0 /* No need for malloc.h, which pollutes the namespace;
363 instead, just don't use alloca. */
366 #else /* not MSDOS, or __TURBOC__ */
368 /* I don't know what this was needed for, but it pollutes the namespace.
369 So I turned it off. rms, 2 May 1997. */
370 /* #include <malloc.h> */
372 #define YYSTACK_USE_ALLOCA
373 #else /* not MSDOS, or __TURBOC__, or _AIX */
375 #ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
376 and on HPUX 10. Eventually we can turn this on. */
377 #define YYSTACK_USE_ALLOCA
378 #define alloca __builtin_alloca
381 #endif /* not _AIX */
382 #endif /* not MSDOS, or __TURBOC__ */
383 #endif /* not sparc */
384 #endif /* not GNU C */
385 #endif /* alloca not defined */
386 #endif /* YYSTACK_USE_ALLOCA not defined */
388 #ifdef YYSTACK_USE_ALLOCA
389 #define YYSTACK_ALLOC alloca
391 #define YYSTACK_ALLOC malloc
394 /* Note: there must be only one dollar sign in this file.
395 It is replaced by the list of actions, each action
396 as one case of the switch. */
398 #define yyerrok (yyerrstatus = 0)
399 #define yyclearin (yychar = YYEMPTY)
402 #define YYACCEPT goto yyacceptlab
403 #define YYABORT goto yyabortlab
404 #define YYERROR goto yyerrlab1
405 /* Like YYERROR except do call yyerror.
406 This remains here temporarily to ease the
407 transition to the new meaning of YYERROR, for GCC.
408 Once GCC version 2 has supplanted version 1, this can go. */
409 #define YYFAIL goto yyerrlab
410 #define YYRECOVERING() (!!yyerrstatus)
411 #define YYBACKUP(token, value) \
413 if (yychar == YYEMPTY && yylen == 1) \
414 { yychar = (token), yylval = (value); \
415 yychar1 = YYTRANSLATE (yychar); \
420 { yyerror ("syntax error: cannot back up"); YYERROR; } \
424 #define YYERRCODE 256
427 #define YYLEX yylex()
433 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
435 #define YYLEX yylex(&yylval, &yylloc)
437 #else /* not YYLSP_NEEDED */
439 #define YYLEX yylex(&yylval, YYLEX_PARAM)
441 #define YYLEX yylex(&yylval)
443 #endif /* not YYLSP_NEEDED */
446 /* If nonreentrant, generate the variables here */
450 int yychar; /* the lookahead symbol */
451 YYSTYPE yylval; /* the semantic value of the */
452 /* lookahead symbol */
455 YYLTYPE yylloc; /* location data for the lookahead */
459 int yynerrs; /* number of parse errors so far */
460 #endif /* not YYPURE */
463 int yydebug; /* nonzero means print parse trace */
464 /* Since this is uninitialized, it does not stop multiple parsers
468 /* YYINITDEPTH indicates the initial size of the parser's stacks */
471 #define YYINITDEPTH 200
474 /* YYMAXDEPTH is the maximum size the stacks can grow to
475 (effective only if the built-in stack extension method is used). */
482 #define YYMAXDEPTH 10000
485 /* Define __yy_memcpy. Note that the size argument
486 should be passed with type unsigned int, because that is what the non-GCC
487 definitions require. With GCC, __builtin_memcpy takes an arg
488 of type size_t, but it can handle unsigned int. */
490 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
491 #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
492 #else /* not GNU C or C++ */
495 /* This is the most reliable way to avoid incompatibilities
496 in available built-in functions on various systems. */
498 __yy_memcpy (to, from, count)
503 register char *f = from;
504 register char *t = to;
505 register int i = count;
511 #else /* __cplusplus */
513 /* This is the most reliable way to avoid incompatibilities
514 in available built-in functions on various systems. */
516 __yy_memcpy (char *to, char *from, unsigned int count)
518 register char *t = to;
519 register char *f = from;
520 register int i = count;
529 #line 216 "/usr/lib/bison.simple"
531 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
532 into yyparse. The argument should have type void *.
533 It should actually point to an object.
534 Grammar actions can access the variable by casting it
535 to the proper pointer type. */
539 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
540 #define YYPARSE_PARAM_DECL
541 #else /* not __cplusplus */
542 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
543 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
544 #endif /* not __cplusplus */
545 #else /* not YYPARSE_PARAM */
546 #define YYPARSE_PARAM_ARG
547 #define YYPARSE_PARAM_DECL
548 #endif /* not YYPARSE_PARAM */
550 /* Prevent warning if -Wstrict-prototypes. */
553 int yyparse (void *);
560 yyparse(YYPARSE_PARAM_ARG)
563 register int yystate;
565 register short *yyssp;
566 register YYSTYPE *yyvsp;
567 int yyerrstatus; /* number of tokens to shift before error messages enabled */
568 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
570 short yyssa[YYINITDEPTH]; /* the state stack */
571 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
573 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
574 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
577 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
578 YYLTYPE *yyls = yylsa;
581 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
583 #define YYPOPSTACK (yyvsp--, yyssp--)
586 int yystacksize = YYINITDEPTH;
587 int yyfree_stacks = 0;
598 YYSTYPE yyval; /* the variable used to return */
599 /* semantic values from the action */
606 fprintf(stderr, "Starting parse\n");
612 yychar = YYEMPTY; /* Cause a token to be read. */
614 /* Initialize stack pointers.
615 Waste one element of value and location stack
616 so that they stay on the same level as the state stack.
617 The wasted elements are never initialized. */
625 /* Push a new state, which is found in yystate . */
626 /* In all cases, when you get here, the value and location stacks
627 have just been pushed. so pushing a state here evens the stacks. */
632 if (yyssp >= yyss + yystacksize - 1)
634 /* Give user a chance to reallocate the stack */
635 /* Use copies of these so that the &'s don't force the real ones into memory. */
636 YYSTYPE *yyvs1 = yyvs;
639 YYLTYPE *yyls1 = yyls;
642 /* Get the current used size of the three stacks, in elements. */
643 int size = yyssp - yyss + 1;
646 /* Each stack pointer address is followed by the size of
647 the data in use in that stack, in bytes. */
649 /* This used to be a conditional around just the two extra args,
650 but that might be undefined if yyoverflow is a macro. */
651 yyoverflow("parser stack overflow",
652 &yyss1, size * sizeof (*yyssp),
653 &yyvs1, size * sizeof (*yyvsp),
654 &yyls1, size * sizeof (*yylsp),
657 yyoverflow("parser stack overflow",
658 &yyss1, size * sizeof (*yyssp),
659 &yyvs1, size * sizeof (*yyvsp),
663 yyss = yyss1; yyvs = yyvs1;
667 #else /* no yyoverflow */
668 /* Extend the stack our own way. */
669 if (yystacksize >= YYMAXDEPTH)
671 yyerror("parser stack overflow");
683 if (yystacksize > YYMAXDEPTH)
684 yystacksize = YYMAXDEPTH;
685 #ifndef YYSTACK_USE_ALLOCA
688 yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
689 __yy_memcpy ((char *)yyss, (char *)yyss1,
690 size * (unsigned int) sizeof (*yyssp));
691 yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
692 __yy_memcpy ((char *)yyvs, (char *)yyvs1,
693 size * (unsigned int) sizeof (*yyvsp));
695 yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
696 __yy_memcpy ((char *)yyls, (char *)yyls1,
697 size * (unsigned int) sizeof (*yylsp));
699 #endif /* no yyoverflow */
701 yyssp = yyss + size - 1;
702 yyvsp = yyvs + size - 1;
704 yylsp = yyls + size - 1;
709 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
712 if (yyssp >= yyss + yystacksize - 1)
718 fprintf(stderr, "Entering state %d\n", yystate);
724 /* Do appropriate processing given the current state. */
725 /* Read a lookahead token if we need one and don't already have one. */
728 /* First try to decide what to do without reference to lookahead token. */
730 yyn = yypact[yystate];
734 /* Not known => get a lookahead token if don't already have one. */
736 /* yychar is either YYEMPTY or YYEOF
737 or a valid token in external form. */
739 if (yychar == YYEMPTY)
743 fprintf(stderr, "Reading a token: ");
748 /* Convert token to internal form (in yychar1) for indexing tables with */
750 if (yychar <= 0) /* This means end of input. */
753 yychar = YYEOF; /* Don't call YYLEX any more */
757 fprintf(stderr, "Now at end of input.\n");
762 yychar1 = YYTRANSLATE(yychar);
767 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
768 /* Give the individual parser a way to print the precise meaning
769 of a token, for further debugging info. */
771 YYPRINT (stderr, yychar, yylval);
773 fprintf (stderr, ")\n");
779 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
784 /* yyn is what to do for this token type in this state.
785 Negative => reduce, -yyn is rule number.
786 Positive => shift, yyn is new state.
787 New state is final state => don't bother to shift,
789 0, or most negative number => error. */
804 /* Shift the lookahead token. */
808 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
811 /* Discard the token being shifted unless it is eof. */
820 /* count tokens shifted since error; after three, turn off error status. */
821 if (yyerrstatus) yyerrstatus--;
826 /* Do the default action for the current state. */
829 yyn = yydefact[yystate];
833 /* Do a reduction. yyn is the number of a rule to reduce with. */
837 yyval = yyvsp[1-yylen]; /* implement default value of the action */
844 fprintf (stderr, "Reducing via rule %d (line %d), ",
847 /* Print the symbols being reduced, and their result. */
848 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
849 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
850 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
858 #line 139 "signature.y"
859 { lslOpList_free (yyvsp[0].operators); ;
862 #line 142 "signature.y"
863 { lslOpList x = lslOpList_new ();
864 g_importedlslOp = yyvsp[0].operator;
865 lslOpList_add (x, yyvsp[0].operator);
866 yyval.operators = x; ;
869 #line 147 "signature.y"
870 { lslOpList_add (yyvsp[-1].operators, yyvsp[0].operator);
871 yyval.operators = yyvsp[-1].operators; ;
874 #line 151 "signature.y"
875 { yyval.operator = makelslOpNode (yyvsp[-2].name, yyvsp[0].signature); ;
878 #line 157 "signature.y"
879 { yyval.name = makeNameNodeId (yyvsp[0].ltok); ;
882 #line 159 "signature.y"
883 { yyval.name = makeNameNodeForm (yyvsp[0].opform); ;
886 #line 163 "signature.y"
887 { yyval.opform = makeOpFormNode (yyvsp[-5].ltok, OPF_IF, opFormUnion_createMiddle (0), ltoken_undefined); ;
890 #line 165 "signature.y"
891 { yyval.opform = makeOpFormNode (yyvsp[0].ltok, OPF_ANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
894 #line 167 "signature.y"
895 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
898 #line 169 "signature.y"
899 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_ANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
902 #line 171 "signature.y"
903 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
906 #line 173 "signature.y"
907 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
910 #line 175 "signature.y"
911 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
914 #line 177 "signature.y"
915 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
918 #line 179 "signature.y"
919 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLEM,
920 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
923 #line 182 "signature.y"
924 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMIDDLE,
925 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
928 #line 185 "signature.y"
929 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMMIDDLE,
930 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
933 #line 188 "signature.y"
934 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMIDDLEM,
935 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
938 #line 191 "signature.y"
939 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMMIDDLEM,
940 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
943 #line 194 "signature.y"
944 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_SELECT,
945 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
948 #line 197 "signature.y"
949 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MSELECT,
950 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
953 #line 202 "signature.y"
954 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMAP,
955 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
958 #line 207 "signature.y"
959 { yyval.ltok = yyvsp[0].ltok; ;
962 #line 209 "signature.y"
963 { yyval.ltok = yyvsp[0].ltok; ;
966 #line 211 "signature.y"
967 { yyval.ltok = yyvsp[0].ltok; ;
970 #line 214 "signature.y"
974 #line 216 "signature.y"
975 { yyval.count = yyvsp[0].count; ;
978 #line 219 "signature.y"
982 #line 221 "signature.y"
983 { yyval.count = yyvsp[-2].count + 1; ;
986 #line 224 "signature.y"
987 { yyval.ltok = yyvsp[0].ltok; ;
990 #line 226 "signature.y"
991 { yyval.ltok = yyvsp[0].ltok; ;
994 #line 229 "signature.y"
995 { yyval.signature = makesigNode (yyvsp[-1].ltok, yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
998 #line 232 "signature.y"
999 { yyval.ltokenList = ltokenList_new (); ;
1002 #line 234 "signature.y"
1003 { yyval.ltokenList = yyvsp[0].ltokenList; ;
1006 #line 237 "signature.y"
1007 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
1010 #line 239 "signature.y"
1011 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
1014 #line 242 "signature.y"
1016 yyval.ltok = yyvsp[0].ltok;
1017 ltoken_setText (yyval.ltok, processTraitSortId (ltoken_getText (yyvsp[0].ltok)));
1021 #line 248 "signature.y"
1022 { yyval.ltok = yyvsp[0].ltok; ;
1025 /* the action file gets copied in in place of this dollarsign */
1026 #line 542 "/usr/lib/bison.simple"
1037 short *ssp1 = yyss - 1;
1038 fprintf (stderr, "state stack now");
1039 while (ssp1 != yyssp)
1040 fprintf (stderr, " %d", *++ssp1);
1041 fprintf (stderr, "\n");
1051 yylsp->first_line = yylloc.first_line;
1052 yylsp->first_column = yylloc.first_column;
1053 yylsp->last_line = (yylsp-1)->last_line;
1054 yylsp->last_column = (yylsp-1)->last_column;
1059 yylsp->last_line = (yylsp+yylen-1)->last_line;
1060 yylsp->last_column = (yylsp+yylen-1)->last_column;
1064 /* Now "shift" the result of the reduction.
1065 Determine what state that goes to,
1066 based on the state we popped back to
1067 and the rule number reduced by. */
1071 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1072 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1073 yystate = yytable[yystate];
1075 yystate = yydefgoto[yyn - YYNTBASE];
1079 yyerrlab: /* here on detecting error */
1082 /* If not already recovering from an error, report this error. */
1086 #ifdef YYERROR_VERBOSE
1087 yyn = yypact[yystate];
1089 if (yyn > YYFLAG && yyn < YYLAST)
1096 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1097 for (x = (yyn < 0 ? -yyn : 0);
1098 x < (sizeof(yytname) / sizeof(char *)); x++)
1099 if (yycheck[x + yyn] == x)
1100 size += strlen(yytname[x]) + 15, count++;
1101 msg = (char *) malloc(size + 15);
1104 strcpy(msg, "parse error");
1109 for (x = (yyn < 0 ? -yyn : 0);
1110 x < (sizeof(yytname) / sizeof(char *)); x++)
1111 if (yycheck[x + yyn] == x)
1113 strcat(msg, count == 0 ? ", expecting `" : " or `");
1114 strcat(msg, yytname[x]);
1123 yyerror ("parse error; also virtual memory exceeded");
1126 #endif /* YYERROR_VERBOSE */
1127 yyerror("parse error");
1131 yyerrlab1: /* here on error raised explicitly by an action */
1133 if (yyerrstatus == 3)
1135 /* if just tried and failed to reuse lookahead token after an error, discard it. */
1137 /* return failure if at end of input */
1138 if (yychar == YYEOF)
1143 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1149 /* Else will try to reuse lookahead token
1150 after shifting the error token. */
1152 yyerrstatus = 3; /* Each real token shifted decrements this */
1156 yyerrdefault: /* current state does not do anything special for the error token. */
1159 /* This is wrong; only states that explicitly want error tokens
1160 should shift them. */
1161 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1162 if (yyn) goto yydefault;
1165 yyerrpop: /* pop the current state because it cannot handle the error token */
1167 if (yyssp == yyss) YYABORT;
1177 short *ssp1 = yyss - 1;
1178 fprintf (stderr, "Error: state stack now");
1179 while (ssp1 != yyssp)
1180 fprintf (stderr, " %d", *++ssp1);
1181 fprintf (stderr, "\n");
1187 yyn = yypact[yystate];
1192 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1211 fprintf(stderr, "Shifting error token, ");
1223 /* YYACCEPT comes here. */
1235 /* YYABORT comes here. */
1246 #line 249 "signature.y"
1249 # include "bison.reset"
1251 extern char *yytext;
1253 void lslerror (char *s)
1256 (message ("An error has occurred in parsing LSL signature: %s",
1257 cstring_fromChars (s)));
1260 static void yyprint (FILE *file, int type, YYSTYPE value)
1262 fprintf (file, " (%u:%u type: %d; text: %s) ",
1263 ltoken_getLine (value.ltok),
1264 ltoken_getCol (value.ltok),
1266 ltoken_getRawTextChars (value.ltok));
1269 extern void PrintToken (ltoken tok) {
1272 switch (ltoken_getCode (tok))
1274 case NOTTOKEN: codStr = "*** NOTTOKEN ***"; break;
1275 case LST_QUANTIFIERSYM: codStr = "QUANTIFIERSYM"; break;
1276 case LST_LOGICALOP: codStr = "LOGICALOP: "; break;
1277 case LST_SELECTSYM: codStr = "LST_SELECTSYM"; break;
1278 case LST_OPENSYM: codStr = "LST_OPENSYM"; break;
1279 case LST_SEPSYM: codStr = "SEPSYM"; break;
1280 case LST_CLOSESYM: codStr = "LST_CLOSESYM"; break;
1281 case LST_SIMPLEID: codStr = "LST_SIMPLEID"; break;
1282 case LST_MAPSYM: codStr = "MAPSYM"; break;
1283 case LST_MARKERSYM: codStr = "LST_MARKERSYM"; break;
1284 case LST_COMMENTSYM: codStr = "COMMENTSYM"; break;
1285 case LST_SIMPLEOP: codStr = "SIMPLEOP"; break;
1286 case LST_COLON: codStr = "LST_COLON"; break;
1287 case LST_COMMA: codStr = "COMMA"; break;
1288 case LST_LBRACKET: codStr = "LST_LBRACKET"; break;
1289 case LST_LPAR: codStr = "LST_LPAR"; break;
1290 case LST_RBRACKET: codStr = "LST_RBRACKET"; break;
1291 case LST_RPAR: codStr = "LST_RPAR"; break;
1292 case LST_EQOP: codStr = "LST_EQOP"; break;
1293 case LST_WHITESPACE: codStr = "WHITESPACE,"; break;
1294 case LST_EOL: codStr = "LST_EOL"; break;
1295 case LST_elseTOKEN: codStr = "elseTOKEN"; break;
1296 case LST_ifTOKEN: codStr = "ifTOKEN"; break;
1297 case LST_thenTOKEN: codStr = "thenTOKEN"; break;
1298 case LST_BADTOKEN: codStr = "*** BADTOKEN ***"; break;
1299 case LEOFTOKEN: /* can't reach LEOFTOKEN easily */
1300 codStr = "LEOFTOKEN"; break;
1302 codStr = "*** invalid token code ***";
1306 /* only used for debugging */
1307 printf ("%u:%u: Token Code (%u): %s",
1308 ltoken_getLine (tok), ltoken_getCol (tok),
1309 ltoken_getCode (tok), codStr);
1310 if (ltoken_getRawText (tok) != 0)
1312 printf (", Token String (%lu): %s\n",
1313 ltoken_getRawText (tok), ltoken_getRawTextChars (tok));