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.25
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 258
62 #define LST_LOGICALOP 259
64 #define LST_SIMPLEOP 261
65 #define LST_MAPSYM 262
66 #define LST_FIELDMAPSYM 263
67 #define LST_MARKERSYM 264
68 #define LST_ifTOKEN 265
69 #define LST_thenTOKEN 266
70 #define LST_elseTOKEN 267
71 #define LST_LBRACKET 268
72 #define LST_RBRACKET 269
73 #define LST_SELECTSYM 270
74 #define LST_SEPSYM 271
75 #define LST_OPENSYM 272
76 #define LST_CLOSESYM 273
80 #define LST_COMMENTSYM 277
81 #define LST_WHITESPACE 278
82 #define LST_QUANTIFIERSYM 279
83 #define LST_EQUATIONSYM 280
84 #define LST_EQSEPSYM 281
85 #define LST_COMPOSESYM 282
88 #define LST_assertsTOKEN 285
89 #define LST_assumesTOKEN 286
90 #define LST_byTOKEN 287
91 #define LST_convertsTOKEN 288
92 #define LST_enumerationTOKEN 289
93 #define LST_equationsTOKEN 290
94 #define LST_exemptingTOKEN 291
95 #define LST_forTOKEN 292
96 #define LST_generatedTOKEN 293
97 #define LST_impliesTOKEN 294
98 #define LST_includesTOKEN 295
99 #define LST_introducesTOKEN 296
100 #define LST_ofTOKEN 297
101 #define LST_partitionedTOKEN 298
102 #define LST_traitTOKEN 299
103 #define LST_tupleTOKEN 300
104 #define LST_unionTOKEN 301
105 #define LST_BADTOKEN 302
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) <= 302 ? 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, 2, 3, 4, 5,
190 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
191 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
192 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
193 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
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/share/bison.simple"
317 /* Skeleton output parser for bison,
318 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
320 This program is free software; you can redistribute it and/or modify
321 it under the terms of the GNU General Public License as published by
322 the Free Software Foundation; either version 2, or (at your option)
325 This program is distributed in the hope that it will be useful,
326 but WITHOUT ANY WARRANTY; without even the implied warranty of
327 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
328 GNU General Public License for more details.
330 You should have received a copy of the GNU General Public License
331 along with this program; if not, write to the Free Software
332 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
334 /* As a special exception, when this file is copied by Bison into a
335 Bison output file, you may use that output file without restriction.
336 This special exception was added by the Free Software Foundation
337 in version 1.24 of Bison. */
341 #define alloca __builtin_alloca
342 #else /* not GNU C. */
343 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
345 #else /* not sparc */
346 #if defined (MSDOS) && !defined (__TURBOC__)
348 #else /* not MSDOS, or __TURBOC__ */
352 #else /* not MSDOS, __TURBOC__, or _AIX */
356 void *alloca (unsigned int);
358 #else /* not __cplusplus */
360 #endif /* not __cplusplus */
362 #endif /* not _AIX */
363 #endif /* not MSDOS, or __TURBOC__ */
364 #endif /* not sparc. */
365 #endif /* not GNU C. */
366 #endif /* alloca not defined. */
368 /* This is the parser code that is written into each bison parser
369 when the %semantic_parser declaration is not specified in the grammar.
370 It was written by Richard Stallman by simplifying the hairy parser
371 used when %semantic_parser is specified. */
373 /* Note: there must be only one dollar sign in this file.
374 It is replaced by the list of actions, each action
375 as one case of the switch. */
377 #define yyerrok (yyerrstatus = 0)
378 #define yyclearin (yychar = YYEMPTY)
381 #define YYACCEPT return(0)
382 #define YYABORT return(1)
383 #define YYERROR goto yyerrlab1
384 /* Like YYERROR except do call yyerror.
385 This remains here temporarily to ease the
386 transition to the new meaning of YYERROR, for GCC.
387 Once GCC version 2 has supplanted version 1, this can go. */
388 #define YYFAIL goto yyerrlab
389 #define YYRECOVERING() (!!yyerrstatus)
390 #define YYBACKUP(token, value) \
392 if (yychar == YYEMPTY && yylen == 1) \
393 { yychar = (token), yylval = (value); \
394 yychar1 = YYTRANSLATE (yychar); \
399 { yyerror ("syntax error: cannot back up"); YYERROR; } \
403 #define YYERRCODE 256
406 #define YYLEX yylex()
412 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
414 #define YYLEX yylex(&yylval, &yylloc)
416 #else /* not YYLSP_NEEDED */
418 #define YYLEX yylex(&yylval, YYLEX_PARAM)
420 #define YYLEX yylex(&yylval)
422 #endif /* not YYLSP_NEEDED */
425 /* If nonreentrant, generate the variables here */
429 int yychar; /* the lookahead symbol */
430 YYSTYPE yylval; /* the semantic value of the */
431 /* lookahead symbol */
434 YYLTYPE yylloc; /* location data for the lookahead */
438 int yynerrs; /* number of parse errors so far */
439 #endif /* not YYPURE */
442 int yydebug; /* nonzero means print parse trace */
443 /* Since this is uninitialized, it does not stop multiple parsers
447 /* YYINITDEPTH indicates the initial size of the parser's stacks */
450 #define YYINITDEPTH 200
453 /* YYMAXDEPTH is the maximum size the stacks can grow to
454 (effective only if the built-in stack extension method is used). */
461 #define YYMAXDEPTH 10000
464 /* Prevent warning if -Wstrict-prototypes. */
469 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
470 #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
471 #else /* not GNU C or C++ */
474 /* This is the most reliable way to avoid incompatibilities
475 in available built-in functions on various systems. */
477 __yy_memcpy (to, from, count)
482 register char *f = from;
483 register char *t = to;
484 register int i = count;
490 #else /* __cplusplus */
492 /* This is the most reliable way to avoid incompatibilities
493 in available built-in functions on various systems. */
495 __yy_memcpy (char *to, char *from, int count)
497 register char *f = from;
498 register char *t = to;
499 register int i = count;
508 #line 196 "/usr/share/bison.simple"
510 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
511 into yyparse. The argument should have type void *.
512 It should actually point to an object.
513 Grammar actions can access the variable by casting it
514 to the proper pointer type. */
518 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
519 #define YYPARSE_PARAM_DECL
520 #else /* not __cplusplus */
521 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
522 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
523 #endif /* not __cplusplus */
524 #else /* not YYPARSE_PARAM */
525 #define YYPARSE_PARAM_ARG
526 #define YYPARSE_PARAM_DECL
527 #endif /* not YYPARSE_PARAM */
530 yyparse(YYPARSE_PARAM_ARG)
533 register int yystate;
535 register short *yyssp;
536 register YYSTYPE *yyvsp;
537 int yyerrstatus; /* number of tokens to shift before error messages enabled */
538 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
540 short yyssa[YYINITDEPTH]; /* the state stack */
541 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
543 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
544 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
547 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
548 YYLTYPE *yyls = yylsa;
551 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
553 #define YYPOPSTACK (yyvsp--, yyssp--)
556 int yystacksize = YYINITDEPTH;
567 YYSTYPE yyval; /* the variable used to return */
568 /* semantic values from the action */
575 fprintf(stderr, "Starting parse\n");
581 yychar = YYEMPTY; /* Cause a token to be read. */
583 /* Initialize stack pointers.
584 Waste one element of value and location stack
585 so that they stay on the same level as the state stack.
586 The wasted elements are never initialized. */
594 /* Push a new state, which is found in yystate . */
595 /* In all cases, when you get here, the value and location stacks
596 have just been pushed. so pushing a state here evens the stacks. */
601 if (yyssp >= yyss + yystacksize - 1)
603 /* Give user a chance to reallocate the stack */
604 /* Use copies of these so that the &'s don't force the real ones into memory. */
605 YYSTYPE *yyvs1 = yyvs;
608 YYLTYPE *yyls1 = yyls;
611 /* Get the current used size of the three stacks, in elements. */
612 int size = yyssp - yyss + 1;
615 /* Each stack pointer address is followed by the size of
616 the data in use in that stack, in bytes. */
618 /* This used to be a conditional around just the two extra args,
619 but that might be undefined if yyoverflow is a macro. */
620 yyoverflow("parser stack overflow",
621 &yyss1, size * sizeof (*yyssp),
622 &yyvs1, size * sizeof (*yyvsp),
623 &yyls1, size * sizeof (*yylsp),
626 yyoverflow("parser stack overflow",
627 &yyss1, size * sizeof (*yyssp),
628 &yyvs1, size * sizeof (*yyvsp),
632 yyss = yyss1; yyvs = yyvs1;
636 #else /* no yyoverflow */
637 /* Extend the stack our own way. */
638 if (yystacksize >= YYMAXDEPTH)
640 yyerror("parser stack overflow");
644 if (yystacksize > YYMAXDEPTH)
645 yystacksize = YYMAXDEPTH;
646 yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
647 __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
648 yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
649 __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
651 yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
652 __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
654 #endif /* no yyoverflow */
656 yyssp = yyss + size - 1;
657 yyvsp = yyvs + size - 1;
659 yylsp = yyls + size - 1;
664 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
667 if (yyssp >= yyss + yystacksize - 1)
673 fprintf(stderr, "Entering state %d\n", yystate);
679 /* Do appropriate processing given the current state. */
680 /* Read a lookahead token if we need one and don't already have one. */
683 /* First try to decide what to do without reference to lookahead token. */
685 yyn = yypact[yystate];
689 /* Not known => get a lookahead token if don't already have one. */
691 /* yychar is either YYEMPTY or YYEOF
692 or a valid token in external form. */
694 if (yychar == YYEMPTY)
698 fprintf(stderr, "Reading a token: ");
703 /* Convert token to internal form (in yychar1) for indexing tables with */
705 if (yychar <= 0) /* This means end of input. */
708 yychar = YYEOF; /* Don't call YYLEX any more */
712 fprintf(stderr, "Now at end of input.\n");
717 yychar1 = YYTRANSLATE(yychar);
722 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
723 /* Give the individual parser a way to print the precise meaning
724 of a token, for further debugging info. */
726 YYPRINT (stderr, yychar, yylval);
728 fprintf (stderr, ")\n");
734 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
739 /* yyn is what to do for this token type in this state.
740 Negative => reduce, -yyn is rule number.
741 Positive => shift, yyn is new state.
742 New state is final state => don't bother to shift,
744 0, or most negative number => error. */
759 /* Shift the lookahead token. */
763 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
766 /* Discard the token being shifted unless it is eof. */
775 /* count tokens shifted since error; after three, turn off error status. */
776 if (yyerrstatus) yyerrstatus--;
781 /* Do the default action for the current state. */
784 yyn = yydefact[yystate];
788 /* Do a reduction. yyn is the number of a rule to reduce with. */
792 yyval = yyvsp[1-yylen]; /* implement default value of the action */
799 fprintf (stderr, "Reducing via rule %d (line %d), ",
802 /* Print the symbols being reduced, and their result. */
803 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
804 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
805 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
813 #line 139 "signature.y"
814 { lslOpList_free (yyvsp[0].operators); ;
817 #line 142 "signature.y"
818 { lslOpList x = lslOpList_new ();
819 g_importedlslOp = yyvsp[0].operator;
820 lslOpList_add (x, yyvsp[0].operator);
821 yyval.operators = x; ;
824 #line 147 "signature.y"
825 { lslOpList_add (yyvsp[-1].operators, yyvsp[0].operator);
826 yyval.operators = yyvsp[-1].operators; ;
829 #line 151 "signature.y"
830 { yyval.operator = makelslOpNode (yyvsp[-2].name, yyvsp[0].signature); ;
833 #line 157 "signature.y"
834 { yyval.name = makeNameNodeId (yyvsp[0].ltok); ;
837 #line 159 "signature.y"
838 { yyval.name = makeNameNodeForm (yyvsp[0].opform); ;
841 #line 163 "signature.y"
842 { yyval.opform = makeOpFormNode (yyvsp[-5].ltok, OPF_IF, opFormUnion_createMiddle (0), ltoken_undefined); ;
845 #line 165 "signature.y"
846 { yyval.opform = makeOpFormNode (yyvsp[0].ltok, OPF_ANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
849 #line 167 "signature.y"
850 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_MANYOP, opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
853 #line 169 "signature.y"
854 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_ANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
857 #line 171 "signature.y"
858 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MANYOPM, opFormUnion_createAnyOp (yyvsp[-1].ltok), ltoken_undefined); ;
861 #line 173 "signature.y"
862 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
865 #line 175 "signature.y"
866 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMIDDLE, opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
869 #line 177 "signature.y"
870 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MIDDLEM, opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
873 #line 179 "signature.y"
874 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_MMIDDLEM,
875 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
878 #line 182 "signature.y"
879 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMIDDLE,
880 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
883 #line 185 "signature.y"
884 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_BMMIDDLE,
885 opFormUnion_createMiddle (yyvsp[-1].count), yyvsp[0].ltok); ;
888 #line 188 "signature.y"
889 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMIDDLEM,
890 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
893 #line 191 "signature.y"
894 { yyval.opform = makeOpFormNode (yyvsp[-3].ltok, OPF_BMMIDDLEM,
895 opFormUnion_createMiddle (yyvsp[-2].count), yyvsp[-1].ltok); ;
898 #line 194 "signature.y"
899 { yyval.opform = makeOpFormNode (yyvsp[-1].ltok, OPF_SELECT,
900 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
903 #line 197 "signature.y"
904 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MSELECT,
905 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
908 #line 202 "signature.y"
909 { yyval.opform = makeOpFormNode (yyvsp[-2].ltok, OPF_MMAP,
910 opFormUnion_createAnyOp (yyvsp[0].ltok), ltoken_undefined); ;
913 #line 207 "signature.y"
914 { yyval.ltok = yyvsp[0].ltok; ;
917 #line 209 "signature.y"
918 { yyval.ltok = yyvsp[0].ltok; ;
921 #line 211 "signature.y"
922 { yyval.ltok = yyvsp[0].ltok; ;
925 #line 214 "signature.y"
929 #line 216 "signature.y"
930 { yyval.count = yyvsp[0].count; ;
933 #line 219 "signature.y"
937 #line 221 "signature.y"
938 { yyval.count = yyvsp[-2].count + 1; ;
941 #line 224 "signature.y"
942 { yyval.ltok = yyvsp[0].ltok; ;
945 #line 226 "signature.y"
946 { yyval.ltok = yyvsp[0].ltok; ;
949 #line 229 "signature.y"
950 { yyval.signature = makesigNode (yyvsp[-1].ltok, yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
953 #line 232 "signature.y"
954 { yyval.ltokenList = ltokenList_new (); ;
957 #line 234 "signature.y"
958 { yyval.ltokenList = yyvsp[0].ltokenList; ;
961 #line 237 "signature.y"
962 { yyval.ltokenList = ltokenList_singleton (yyvsp[0].ltok); ;
965 #line 239 "signature.y"
966 { yyval.ltokenList = ltokenList_push (yyvsp[-2].ltokenList, yyvsp[0].ltok); ;
969 #line 242 "signature.y"
971 yyval.ltok = yyvsp[0].ltok;
972 ltoken_setText (yyval.ltok, processTraitSortId (ltoken_getText (yyvsp[0].ltok)));
976 #line 248 "signature.y"
977 { yyval.ltok = yyvsp[0].ltok; ;
980 /* the action file gets copied in in place of this dollarsign */
981 #line 498 "/usr/share/bison.simple"
992 short *ssp1 = yyss - 1;
993 fprintf (stderr, "state stack now");
994 while (ssp1 != yyssp)
995 fprintf (stderr, " %d", *++ssp1);
996 fprintf (stderr, "\n");
1006 yylsp->first_line = yylloc.first_line;
1007 yylsp->first_column = yylloc.first_column;
1008 yylsp->last_line = (yylsp-1)->last_line;
1009 yylsp->last_column = (yylsp-1)->last_column;
1014 yylsp->last_line = (yylsp+yylen-1)->last_line;
1015 yylsp->last_column = (yylsp+yylen-1)->last_column;
1019 /* Now "shift" the result of the reduction.
1020 Determine what state that goes to,
1021 based on the state we popped back to
1022 and the rule number reduced by. */
1026 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1027 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1028 yystate = yytable[yystate];
1030 yystate = yydefgoto[yyn - YYNTBASE];
1034 yyerrlab: /* here on detecting error */
1037 /* If not already recovering from an error, report this error. */
1041 #ifdef YYERROR_VERBOSE
1042 yyn = yypact[yystate];
1044 if (yyn > YYFLAG && yyn < YYLAST)
1051 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1052 for (x = (yyn < 0 ? -yyn : 0);
1053 x < (sizeof(yytname) / sizeof(char *)); x++)
1054 if (yycheck[x + yyn] == x)
1055 size += strlen(yytname[x]) + 15, count++;
1056 msg = (char *) malloc(size + 15);
1059 strcpy(msg, "parse error");
1064 for (x = (yyn < 0 ? -yyn : 0);
1065 x < (sizeof(yytname) / sizeof(char *)); x++)
1066 if (yycheck[x + yyn] == x)
1068 strcat(msg, count == 0 ? ", expecting `" : " or `");
1069 strcat(msg, yytname[x]);
1078 yyerror ("parse error; also virtual memory exceeded");
1081 #endif /* YYERROR_VERBOSE */
1082 yyerror("parse error");
1086 yyerrlab1: /* here on error raised explicitly by an action */
1088 if (yyerrstatus == 3)
1090 /* if just tried and failed to reuse lookahead token after an error, discard it. */
1092 /* return failure if at end of input */
1093 if (yychar == YYEOF)
1098 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
1104 /* Else will try to reuse lookahead token
1105 after shifting the error token. */
1107 yyerrstatus = 3; /* Each real token shifted decrements this */
1111 yyerrdefault: /* current state does not do anything special for the error token. */
1114 /* This is wrong; only states that explicitly want error tokens
1115 should shift them. */
1116 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1117 if (yyn) goto yydefault;
1120 yyerrpop: /* pop the current state because it cannot handle the error token */
1122 if (yyssp == yyss) YYABORT;
1132 short *ssp1 = yyss - 1;
1133 fprintf (stderr, "Error: state stack now");
1134 while (ssp1 != yyssp)
1135 fprintf (stderr, " %d", *++ssp1);
1136 fprintf (stderr, "\n");
1142 yyn = yypact[yystate];
1147 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1166 fprintf(stderr, "Shifting error token, ");
1177 #line 249 "signature.y"
1180 # include "bison.reset"
1182 extern char *yytext;
1184 void lslerror (char *s)
1186 lclplainerror (message ("An error has occurred in parsing LSL signature: %s",
1187 cstring_fromChars (s)));
1190 static void yyprint (FILE *file, int type, YYSTYPE value)
1192 fprintf (file, " (%u:%u type: %d; text: %s) ",
1193 ltoken_getLine (value.ltok),
1194 ltoken_getCol (value.ltok),
1196 ltoken_getRawTextChars (value.ltok));
1199 extern void PrintToken (ltoken tok) {
1202 switch (ltoken_getCode (tok))
1204 case NOTTOKEN: codStr = "*** NOTTOKEN ***"; break;
1205 case LST_QUANTIFIERSYM: codStr = "QUANTIFIERSYM"; break;
1206 case LST_LOGICALOP: codStr = "LOGICALOP: "; break;
1207 case LST_SELECTSYM: codStr = "LST_SELECTSYM"; break;
1208 case LST_OPENSYM: codStr = "LST_OPENSYM"; break;
1209 case LST_SEPSYM: codStr = "SEPSYM"; break;
1210 case LST_CLOSESYM: codStr = "LST_CLOSESYM"; break;
1211 case LST_SIMPLEID: codStr = "LST_SIMPLEID"; break;
1212 case LST_MAPSYM: codStr = "MAPSYM"; break;
1213 case LST_MARKERSYM: codStr = "LST_MARKERSYM"; break;
1214 case LST_COMMENTSYM: codStr = "COMMENTSYM"; break;
1215 case LST_SIMPLEOP: codStr = "SIMPLEOP"; break;
1216 case LST_COLON: codStr = "LST_COLON"; break;
1217 case LST_COMMA: codStr = "COMMA"; break;
1218 case LST_LBRACKET: codStr = "LST_LBRACKET"; break;
1219 case LST_LPAR: codStr = "LST_LPAR"; break;
1220 case LST_RBRACKET: codStr = "LST_RBRACKET"; break;
1221 case LST_RPAR: codStr = "LST_RPAR"; break;
1222 case LST_EQOP: codStr = "LST_EQOP"; break;
1223 case LST_WHITESPACE: codStr = "WHITESPACE,"; break;
1224 case LST_EOL: codStr = "LST_EOL"; break;
1225 case LST_elseTOKEN: codStr = "elseTOKEN"; break;
1226 case LST_ifTOKEN: codStr = "ifTOKEN"; break;
1227 case LST_thenTOKEN: codStr = "thenTOKEN"; break;
1228 case LST_BADTOKEN: codStr = "*** BADTOKEN ***"; break;
1229 case LEOFTOKEN: /* can't reach LEOFTOKEN easily */
1230 codStr = "LEOFTOKEN"; break;
1232 codStr = "*** invalid token code ***";
1236 /* only used for debugging */
1237 printf ("%u:%u: Token Code (%u): %s",
1238 ltoken_getLine (tok), ltoken_getCol (tok),
1239 ltoken_getCode (tok), codStr);
1240 if (ltoken_getRawText (tok) != 0)
1242 printf (", Token String (%lu): %s\n",
1243 ltoken_getRawText (tok), ltoken_getRawTextChars (tok));