1 /* A Bison parser, made by GNU Bison 3.0.5. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.5"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 #line 1 "camp.y" /* yacc.c:339 */
66
67 /*****
68 * camp.y
69 * Andy Hammerlindl 08/12/2002
70 *
71 * The grammar of the camp language.
72 *****/
73
74 #include "errormsg.h"
75 #include "exp.h"
76 #include "newexp.h"
77 #include "dec.h"
78 #include "fundec.h"
79 #include "stm.h"
80 #include "modifier.h"
81 #include "opsymbols.h"
82
83 // Avoid error messages with unpatched bison-1.875:
84 #ifndef __attribute__
85 #define __attribute__(x)
86 #endif
87
88 // Used when a position needs to be determined and no token is
89 // available. Defined in camp.l.
90 position lexerPos();
91
92 bool lexerEOF();
93
94 int yylex(void); /* function prototype */
95
yyerror(const char * s)96 void yyerror(const char *s)
97 {
98 if (!lexerEOF()) {
99 em.error(lexerPos());
100 em << s;
101 em.cont();
102 }
103 }
104
105 // Check if the symbol given is "keyword". Returns true in this case and
106 // returns false and reports an error otherwise.
checkKeyword(position pos,symbol sym)107 bool checkKeyword(position pos, symbol sym)
108 {
109 if (sym != symbol::trans("keyword")) {
110 em.error(pos);
111 em << "expected 'keyword' here";
112
113 return false;
114 }
115 return true;
116 }
117
118 namespace absyntax { file *root; }
119
120 using namespace absyntax;
121 using sym::symbol;
122 using mem::string;
123
124 #line 125 "camp.tab.c" /* yacc.c:339 */
125
126 # ifndef YY_NULLPTR
127 # if defined __cplusplus && 201103L <= __cplusplus
128 # define YY_NULLPTR nullptr
129 # else
130 # define YY_NULLPTR 0
131 # endif
132 # endif
133
134 /* Enabling verbose error messages. */
135 #ifdef YYERROR_VERBOSE
136 # undef YYERROR_VERBOSE
137 # define YYERROR_VERBOSE 1
138 #else
139 # define YYERROR_VERBOSE 0
140 #endif
141
142 /* In a future release of Bison, this section will be replaced
143 by #include "camp.tab.h". */
144 #ifndef YY_YY_CAMP_TAB_H_INCLUDED
145 # define YY_YY_CAMP_TAB_H_INCLUDED
146 /* Debug traces. */
147 #ifndef YYDEBUG
148 # define YYDEBUG 1
149 #endif
150 #if YYDEBUG
151 extern int yydebug;
152 #endif
153
154 /* Token type. */
155 #ifndef YYTOKENTYPE
156 # define YYTOKENTYPE
157 enum yytokentype
158 {
159 ID = 258,
160 SELFOP = 259,
161 DOTS = 260,
162 COLONS = 261,
163 DASHES = 262,
164 INCR = 263,
165 LONGDASH = 264,
166 CONTROLS = 265,
167 TENSION = 266,
168 ATLEAST = 267,
169 CURL = 268,
170 COR = 269,
171 CAND = 270,
172 BAR = 271,
173 AMPERSAND = 272,
174 EQ = 273,
175 NEQ = 274,
176 LT = 275,
177 LE = 276,
178 GT = 277,
179 GE = 278,
180 CARETS = 279,
181 OPERATOR = 280,
182 LOOSE = 281,
183 ASSIGN = 282,
184 DIRTAG = 283,
185 JOIN_PREC = 284,
186 AND = 285,
187 ELLIPSIS = 286,
188 ACCESS = 287,
189 UNRAVEL = 288,
190 IMPORT = 289,
191 INCLUDE = 290,
192 FROM = 291,
193 QUOTE = 292,
194 STRUCT = 293,
195 TYPEDEF = 294,
196 NEW = 295,
197 IF = 296,
198 ELSE = 297,
199 WHILE = 298,
200 DO = 299,
201 FOR = 300,
202 BREAK = 301,
203 CONTINUE = 302,
204 RETURN_ = 303,
205 THIS = 304,
206 EXPLICIT = 305,
207 GARBAGE = 306,
208 LIT = 307,
209 STRING = 308,
210 PERM = 309,
211 MODIFIER = 310,
212 UNARY = 311,
213 EXP_IN_PARENS_RULE = 312
214 };
215 #endif
216
217 /* Value type. */
218 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
219
220 union YYSTYPE
221 {
222 #line 60 "camp.y" /* yacc.c:355 */
223
224 position pos;
225 bool boo;
226 struct {
227 position pos;
228 sym::symbol sym;
229 } ps;
230 absyntax::name *n;
231 absyntax::varinit *vi;
232 absyntax::arrayinit *ai;
233 absyntax::exp *e;
234 absyntax::stringExp *stre;
235 absyntax::specExp *se;
236 absyntax::joinExp *j;
237 absyntax::explist *elist;
238 absyntax::argument arg;
239 absyntax::arglist *alist;
240 absyntax::slice *slice;
241 absyntax::dimensions *dim;
242 absyntax::ty *t;
243 absyntax::decid *di;
244 absyntax::decidlist *dil;
245 absyntax::decidstart *dis;
246 absyntax::runnable *run;
247 struct {
248 position pos;
249 trans::permission val;
250 } perm;
251 struct {
252 position pos;
253 trans::modifier val;
254 } mod;
255 absyntax::modifierList *ml;
256 //absyntax::program *prog;
257 absyntax::vardec *vd;
258 //absyntax::vardecs *vds;
259 absyntax::dec *d;
260 absyntax::idpair *ip;
261 absyntax::idpairlist *ipl;
262 absyntax::stm *s;
263 absyntax::block *b;
264 absyntax::stmExpList *sel;
265 //absyntax::funheader *fh;
266 absyntax::formal *fl;
267 absyntax::formals *fls;
268
269 #line 270 "camp.tab.c" /* yacc.c:355 */
270 };
271
272 typedef union YYSTYPE YYSTYPE;
273 # define YYSTYPE_IS_TRIVIAL 1
274 # define YYSTYPE_IS_DECLARED 1
275 #endif
276
277
278 extern YYSTYPE yylval;
279
280 int yyparse (void);
281
282 #endif /* !YY_YY_CAMP_TAB_H_INCLUDED */
283
284 /* Copy the second part of user declarations. */
285
286 #line 287 "camp.tab.c" /* yacc.c:358 */
287
288 #ifdef short
289 # undef short
290 #endif
291
292 #ifdef YYTYPE_UINT8
293 typedef YYTYPE_UINT8 yytype_uint8;
294 #else
295 typedef unsigned char yytype_uint8;
296 #endif
297
298 #ifdef YYTYPE_INT8
299 typedef YYTYPE_INT8 yytype_int8;
300 #else
301 typedef signed char yytype_int8;
302 #endif
303
304 #ifdef YYTYPE_UINT16
305 typedef YYTYPE_UINT16 yytype_uint16;
306 #else
307 typedef unsigned short int yytype_uint16;
308 #endif
309
310 #ifdef YYTYPE_INT16
311 typedef YYTYPE_INT16 yytype_int16;
312 #else
313 typedef short int yytype_int16;
314 #endif
315
316 #ifndef YYSIZE_T
317 # ifdef __SIZE_TYPE__
318 # define YYSIZE_T __SIZE_TYPE__
319 # elif defined size_t
320 # define YYSIZE_T size_t
321 # elif ! defined YYSIZE_T
322 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
323 # define YYSIZE_T size_t
324 # else
325 # define YYSIZE_T unsigned int
326 # endif
327 #endif
328
329 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
330
331 #ifndef YY_
332 # if defined YYENABLE_NLS && YYENABLE_NLS
333 # if ENABLE_NLS
334 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
335 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
336 # endif
337 # endif
338 # ifndef YY_
339 # define YY_(Msgid) Msgid
340 # endif
341 #endif
342
343 #ifndef YY_ATTRIBUTE
344 # if (defined __GNUC__ \
345 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
346 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
347 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
348 # else
349 # define YY_ATTRIBUTE(Spec) /* empty */
350 # endif
351 #endif
352
353 #ifndef YY_ATTRIBUTE_PURE
354 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
355 #endif
356
357 #ifndef YY_ATTRIBUTE_UNUSED
358 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
359 #endif
360
361 #if !defined _Noreturn \
362 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
363 # if defined _MSC_VER && 1200 <= _MSC_VER
364 # define _Noreturn __declspec (noreturn)
365 # else
366 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
367 # endif
368 #endif
369
370 /* Suppress unused-variable warnings by "using" E. */
371 #if ! defined lint || defined __GNUC__
372 # define YYUSE(E) ((void) (E))
373 #else
374 # define YYUSE(E) /* empty */
375 #endif
376
377 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
378 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
379 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
380 _Pragma ("GCC diagnostic push") \
381 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
382 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
383 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
384 _Pragma ("GCC diagnostic pop")
385 #else
386 # define YY_INITIAL_VALUE(Value) Value
387 #endif
388 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
389 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
390 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
391 #endif
392 #ifndef YY_INITIAL_VALUE
393 # define YY_INITIAL_VALUE(Value) /* Nothing. */
394 #endif
395
396
397 #if ! defined yyoverflow || YYERROR_VERBOSE
398
399 /* The parser invokes alloca or malloc; define the necessary symbols. */
400
401 # ifdef YYSTACK_USE_ALLOCA
402 # if YYSTACK_USE_ALLOCA
403 # ifdef __GNUC__
404 # define YYSTACK_ALLOC __builtin_alloca
405 # elif defined __BUILTIN_VA_ARG_INCR
406 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
407 # elif defined _AIX
408 # define YYSTACK_ALLOC __alloca
409 # elif defined _MSC_VER
410 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
411 # define alloca _alloca
412 # else
413 # define YYSTACK_ALLOC alloca
414 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
415 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
416 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
417 # ifndef EXIT_SUCCESS
418 # define EXIT_SUCCESS 0
419 # endif
420 # endif
421 # endif
422 # endif
423 # endif
424
425 # ifdef YYSTACK_ALLOC
426 /* Pacify GCC's 'empty if-body' warning. */
427 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
428 # ifndef YYSTACK_ALLOC_MAXIMUM
429 /* The OS might guarantee only one guard page at the bottom of the stack,
430 and a page size can be as small as 4096 bytes. So we cannot safely
431 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
432 to allow for a few compiler-allocated temporary stack slots. */
433 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
434 # endif
435 # else
436 # define YYSTACK_ALLOC YYMALLOC
437 # define YYSTACK_FREE YYFREE
438 # ifndef YYSTACK_ALLOC_MAXIMUM
439 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
440 # endif
441 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
442 && ! ((defined YYMALLOC || defined malloc) \
443 && (defined YYFREE || defined free)))
444 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
445 # ifndef EXIT_SUCCESS
446 # define EXIT_SUCCESS 0
447 # endif
448 # endif
449 # ifndef YYMALLOC
450 # define YYMALLOC malloc
451 # if ! defined malloc && ! defined EXIT_SUCCESS
452 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
453 # endif
454 # endif
455 # ifndef YYFREE
456 # define YYFREE free
457 # if ! defined free && ! defined EXIT_SUCCESS
458 void free (void *); /* INFRINGES ON USER NAME SPACE */
459 # endif
460 # endif
461 # endif
462 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
463
464
465 #if (! defined yyoverflow \
466 && (! defined __cplusplus \
467 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
468
469 /* A type that is properly aligned for any stack member. */
470 union yyalloc
471 {
472 yytype_int16 yyss_alloc;
473 YYSTYPE yyvs_alloc;
474 };
475
476 /* The size of the maximum gap between one aligned stack and the next. */
477 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
478
479 /* The size of an array large to enough to hold all stacks, each with
480 N elements. */
481 # define YYSTACK_BYTES(N) \
482 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
483 + YYSTACK_GAP_MAXIMUM)
484
485 # define YYCOPY_NEEDED 1
486
487 /* Relocate STACK from its old location to the new one. The
488 local variables YYSIZE and YYSTACKSIZE give the old and new number of
489 elements in the stack, and YYPTR gives the new location of the
490 stack. Advance YYPTR to a properly aligned location for the next
491 stack. */
492 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
493 do \
494 { \
495 YYSIZE_T yynewbytes; \
496 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
497 Stack = &yyptr->Stack_alloc; \
498 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
499 yyptr += yynewbytes / sizeof (*yyptr); \
500 } \
501 while (0)
502
503 #endif
504
505 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
506 /* Copy COUNT objects from SRC to DST. The source and destination do
507 not overlap. */
508 # ifndef YYCOPY
509 # if defined __GNUC__ && 1 < __GNUC__
510 # define YYCOPY(Dst, Src, Count) \
511 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
512 # else
513 # define YYCOPY(Dst, Src, Count) \
514 do \
515 { \
516 YYSIZE_T yyi; \
517 for (yyi = 0; yyi < (Count); yyi++) \
518 (Dst)[yyi] = (Src)[yyi]; \
519 } \
520 while (0)
521 # endif
522 # endif
523 #endif /* !YYCOPY_NEEDED */
524
525 /* YYFINAL -- State number of the termination state. */
526 #define YYFINAL 3
527 /* YYLAST -- Last index in YYTABLE. */
528 #define YYLAST 1979
529
530 /* YYNTOKENS -- Number of terminals. */
531 #define YYNTOKENS 76
532 /* YYNNTS -- Number of nonterminals. */
533 #define YYNNTS 50
534 /* YYNRULES -- Number of rules. */
535 #define YYNRULES 200
536 /* YYNSTATES -- Number of states. */
537 #define YYNSTATES 376
538
539 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
540 by yylex, with out-of-bounds checking. */
541 #define YYUNDEFTOK 2
542 #define YYMAXUTOK 312
543
544 #define YYTRANSLATE(YYX) \
545 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
546
547 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
548 as returned by yylex, without out-of-bounds checking. */
549 static const yytype_uint8 yytranslate[] =
550 {
551 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
554 2, 2, 2, 2, 2, 30, 2, 29, 2, 2,
555 42, 43, 27, 25, 45, 26, 44, 28, 2, 2,
556 2, 2, 2, 2, 2, 2, 2, 2, 36, 48,
557 2, 2, 2, 35, 2, 2, 2, 2, 2, 2,
558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
560 2, 46, 2, 47, 31, 2, 2, 2, 2, 2,
561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
563 2, 2, 2, 40, 2, 41, 2, 2, 2, 2,
564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
576 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
577 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
578 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
579 32, 33, 34, 37, 38, 39, 49, 50, 51, 52,
580 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
581 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
582 73, 74, 75
583 };
584
585 #if YYDEBUG
586 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
587 static const yytype_uint16 yyrline[] =
588 {
589 0, 191, 191, 195, 196, 201, 202, 207, 208, 209,
590 214, 215, 216, 218, 223, 224, 225, 227, 232, 233,
591 234, 235, 237, 239, 241, 242, 244, 246, 248, 249,
592 254, 256, 260, 261, 266, 267, 272, 274, 278, 279,
593 284, 288, 292, 293, 297, 301, 302, 306, 307, 312,
594 313, 318, 319, 324, 325, 326, 328, 333, 334, 338,
595 343, 344, 346, 348, 353, 354, 355, 359, 361, 366,
596 367, 368, 370, 375, 376, 380, 382, 384, 387, 390,
597 396, 398, 403, 404, 408, 409, 410, 411, 415, 416,
598 418, 419, 421, 422, 425, 429, 430, 432, 434, 436,
599 440, 441, 445, 446, 448, 450, 456, 457, 461, 462,
600 463, 464, 466, 467, 469, 471, 473, 475, 476, 477,
601 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
602 488, 489, 490, 491, 492, 493, 494, 495, 496, 498,
603 500, 502, 504, 506, 508, 513, 515, 520, 522, 523,
604 524, 526, 532, 534, 537, 539, 540, 547, 548, 550,
605 553, 556, 562, 563, 564, 567, 573, 574, 576, 578,
606 579, 583, 585, 588, 591, 597, 598, 603, 604, 605,
607 606, 608, 610, 612, 614, 616, 618, 619, 620, 621,
608 625, 629, 633, 634, 635, 639, 640, 644, 645, 649,
609 650
610 };
611 #endif
612
613 #if YYDEBUG || YYERROR_VERBOSE || 0
614 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
615 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
616 static const char *const yytname[] =
617 {
618 "$end", "error", "$undefined", "ID", "SELFOP", "DOTS", "COLONS",
619 "DASHES", "INCR", "LONGDASH", "CONTROLS", "TENSION", "ATLEAST", "CURL",
620 "COR", "CAND", "BAR", "AMPERSAND", "EQ", "NEQ", "LT", "LE", "GT", "GE",
621 "CARETS", "'+'", "'-'", "'*'", "'/'", "'%'", "'#'", "'^'", "OPERATOR",
622 "LOOSE", "ASSIGN", "'?'", "':'", "DIRTAG", "JOIN_PREC", "AND", "'{'",
623 "'}'", "'('", "')'", "'.'", "','", "'['", "']'", "';'", "ELLIPSIS",
624 "ACCESS", "UNRAVEL", "IMPORT", "INCLUDE", "FROM", "QUOTE", "STRUCT",
625 "TYPEDEF", "NEW", "IF", "ELSE", "WHILE", "DO", "FOR", "BREAK",
626 "CONTINUE", "RETURN_", "THIS", "EXPLICIT", "GARBAGE", "LIT", "STRING",
627 "PERM", "MODIFIER", "UNARY", "EXP_IN_PARENS_RULE", "$accept", "file",
628 "fileblock", "bareblock", "name", "runnable", "modifiers", "dec",
629 "idpair", "idpairlist", "strid", "stridpair", "stridpairlist", "vardec",
630 "barevardec", "type", "celltype", "dims", "dimexps", "decidlist",
631 "decid", "decidstart", "varinit", "block", "arrayinit", "basearrayinit",
632 "varinits", "formals", "explicitornot", "formal", "fundec", "typedec",
633 "slice", "value", "argument", "arglist", "tuple", "exp", "join", "dir",
634 "basicjoin", "tension", "controls", "stm", "stmexp", "blockstm",
635 "forinit", "fortest", "forupdate", "stmexplist", YY_NULLPTR
636 };
637 #endif
638
639 # ifdef YYPRINT
640 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
641 (internal) symbol number NUM (which must be that of a token). */
642 static const yytype_uint16 yytoknum[] =
643 {
644 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
645 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
646 275, 276, 277, 278, 279, 43, 45, 42, 47, 37,
647 35, 94, 280, 281, 282, 63, 58, 283, 284, 285,
648 123, 125, 40, 41, 46, 44, 91, 93, 59, 286,
649 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
650 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
651 307, 308, 309, 310, 311, 312
652 };
653 # endif
654
655 #define YYPACT_NINF -285
656
657 #define yypact_value_is_default(Yystate) \
658 (!!((Yystate) == (-285)))
659
660 #define YYTABLE_NINF -45
661
662 #define yytable_value_is_error(Yytable_value) \
663 0
664
665 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
666 STATE-NUM. */
667 static const yytype_int16 yypact[] =
668 {
669 -285, 41, 472, -285, -285, 873, 873, 873, 873, -285,
670 873, -285, 873, -285, 14, 20, 14, 16, 8, 23,
671 31, 20, 20, 26, 49, 614, 56, 86, 91, 687,
672 -285, 141, -285, -285, -285, 18, -285, 543, -285, -285,
673 100, 53, -285, -285, -285, -285, 122, 1545, -285, 125,
674 -285, 224, 148, 148, 148, 148, 1931, 330, 203, 60,
675 1146, 190, -285, 194, -285, 88, 0, 155, 161, 166,
676 168, -1, 169, -285, 180, 34, -285, 236, 207, 15,
677 873, 873, 193, 873, -285, -285, -285, 961, 148, 235,
678 254, 616, 212, -285, -285, -285, -285, -285, 35, 217,
679 -285, 229, 685, 262, 741, 873, 79, -285, -285, 141,
680 -285, 873, 873, 873, 873, 873, 873, 873, 873, 873,
681 873, 873, 873, 873, 873, 873, 873, 873, 873, 873,
682 873, 873, 761, 873, -285, 231, -285, 741, -285, -285,
683 141, 114, -285, 873, -285, 873, 270, 14, -285, -285,
684 -285, -285, -285, 24, 39, 401, -285, 227, 134, -14,
685 797, 105, 234, 1272, 1312, 233, -285, 278, -285, 243,
686 237, -285, 249, -285, 893, -285, 107, 1545, -285, 873,
687 -285, 245, 998, 247, -10, 212, 236, 817, -285, 118,
688 -285, 248, 1035, 1545, 873, 853, 291, 292, 197, 1763,
689 1791, 1819, 1847, 1875, 1875, 1903, 1903, 1903, 1903, 1939,
690 258, 258, 148, 148, 148, 148, 148, 1931, 1545, 1508,
691 873, 1188, 197, 231, -285, -285, 873, 1545, 1545, -285,
692 -285, 295, 252, -285, 136, 253, 162, -285, -3, 180,
693 239, -285, 149, 20, -285, 1072, 146, 94, -285, 797,
694 212, 614, 614, 873, 46, 873, 873, 873, -285, -285,
695 893, 893, 1545, -285, 873, -285, -285, 180, 157, -285,
696 -285, -285, 1545, -285, -285, -285, 1580, 873, 1617, -285,
697 -285, 873, 1432, -285, 873, -285, -285, 300, -285, 301,
698 -285, -285, -285, -285, 186, -285, -285, 180, 239, 239,
699 305, -285, -285, -285, 817, -285, 4, 265, 180, 191,
700 1109, 251, -285, 1352, 873, 1545, 264, -285, 1545, -285,
701 -285, 1545, -285, 180, 873, 1654, 873, 1727, -285, 1230,
702 -285, -285, -285, -285, -285, -285, 27, 279, 273, -285,
703 817, 817, -285, 180, -285, 614, 267, 1392, 873, -285,
704 1691, 873, 1691, -285, 873, 282, 817, -285, 276, -285,
705 -285, -285, -285, 614, 275, 237, 1691, 1470, 817, -285,
706 -285, -285, 614, -285, -285, -285
707 };
708
709 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
710 Performed when YYTABLE does not specify something else to do. Zero
711 means the default is an error. */
712 static const yytype_uint8 yydefact[] =
713 {
714 3, 0, 2, 1, 7, 0, 0, 0, 0, 9,
715 0, 5, 0, 177, 0, 0, 0, 0, 0, 0,
716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717 99, 110, 111, 15, 14, 108, 4, 0, 10, 18,
718 0, 0, 42, 191, 19, 20, 109, 190, 11, 0,
719 178, 108, 153, 152, 115, 116, 117, 0, 108, 0,
720 0, 36, 35, 0, 38, 0, 0, 0, 0, 0,
721 7, 0, 0, 3, 0, 44, 83, 0, 44, 138,
722 0, 0, 0, 192, 186, 187, 188, 0, 112, 0,
723 0, 0, 43, 17, 16, 12, 13, 40, 53, 41,
724 49, 51, 0, 0, 0, 0, 166, 169, 157, 154,
725 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
727 0, 0, 0, 0, 151, 158, 179, 0, 59, 6,
728 98, 0, 149, 0, 97, 0, 0, 0, 21, 24,
729 27, 28, 29, 0, 0, 0, 82, 0, 53, 74,
730 0, 141, 139, 0, 0, 0, 194, 0, 199, 0,
731 193, 189, 7, 93, 0, 102, 0, 100, 8, 84,
732 45, 0, 0, 0, 74, 54, 0, 0, 95, 0,
733 88, 0, 0, 155, 0, 0, 0, 0, 137, 132,
734 131, 135, 134, 129, 130, 125, 126, 127, 128, 133,
735 118, 119, 120, 121, 122, 123, 124, 136, 148, 0,
736 0, 0, 150, 159, 160, 113, 0, 107, 106, 37,
737 39, 30, 0, 32, 0, 0, 0, 156, 74, 0,
738 74, 73, 0, 0, 69, 0, 0, 74, 142, 0,
739 140, 0, 0, 0, 53, 195, 0, 0, 103, 94,
740 0, 0, 86, 91, 85, 89, 46, 55, 0, 50,
741 52, 58, 57, 96, 92, 90, 175, 0, 171, 167,
742 168, 0, 0, 163, 0, 161, 114, 0, 23, 0,
743 22, 26, 25, 55, 0, 143, 70, 0, 74, 74,
744 75, 47, 60, 64, 0, 67, 0, 65, 0, 0,
745 0, 180, 182, 0, 0, 196, 0, 200, 101, 104,
746 105, 87, 80, 56, 0, 173, 0, 147, 162, 0,
747 31, 33, 56, 145, 71, 72, 53, 76, 0, 62,
748 0, 66, 144, 0, 48, 0, 0, 0, 197, 81,
749 176, 0, 172, 164, 0, 78, 0, 61, 0, 68,
750 146, 181, 183, 0, 0, 198, 174, 0, 0, 77,
751 63, 185, 0, 165, 79, 184
752 };
753
754 /* YYPGOTO[NTERM-NUM]. */
755 static const yytype_int16 yypgoto[] =
756 {
757 -285, -285, 250, -285, 10, 263, -285, 285, 36, 170,
758 309, -6, -285, 307, 246, -13, 308, -20, -285, -285,
759 145, -284, -210, 260, 171, -285, -285, -164, -285, -227,
760 -285, -285, 238, -285, -165, 241, -285, -5, -285, -121,
761 205, -285, -285, -19, -79, -138, -285, -285, -285, -8
762 };
763
764 /* YYDEFGOTO[NTERM-NUM]. */
765 static const yytype_int16 yydefgoto[] =
766 {
767 -1, 1, 2, 57, 51, 36, 37, 38, 233, 234,
768 63, 64, 65, 39, 40, 41, 42, 185, 162, 99,
769 100, 101, 270, 43, 271, 306, 307, 242, 243, 244,
770 44, 45, 181, 46, 175, 176, 59, 47, 133, 134,
771 135, 196, 197, 48, 49, 50, 169, 316, 364, 170
772 };
773
774 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
775 positive, shift that token. If negative, reduce the rule whose
776 number is the opposite. If YYTABLE_NINF, syntax error. */
777 static const yytype_int16 yytable[] =
778 {
779 52, 53, 54, 55, 168, 56, 82, 60, 77, 258,
780 67, 70, 35, 296, 224, 92, 337, 61, 96, 68,
781 268, -44, 58, 4, 87, 66, 88, 231, 71, 239,
782 158, 75, 78, 267, 74, 240, 305, 9, 141, 240,
783 293, 3, 231, 90, 90, 339, 240, 35, 149, 9,
784 153, 232, 355, 340, 241, 92, 98, 159, 241, 161,
785 89, 160, 90, 73, 91, 241, 235, 35, 80, 238,
786 167, 334, 335, 157, 294, 163, 164, 184, 90, 62,
787 157, 157, 314, 309, 177, 62, 182, 69, 238, 194,
788 195, 81, 157, 35, 338, 319, 320, 177, 83, 192,
789 193, 295, 285, 142, 198, 143, 199, 200, 201, 202,
790 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
791 213, 214, 215, 216, 217, 218, 219, 221, 222, 322,
792 358, 359, 182, 147, 84, 225, 148, 308, 227, 85,
793 228, 230, 250, 240, 4, 246, 369, 247, 97, 4,
794 259, 183, 260, 5, 6, 245, 261, 226, 374, 333,
795 183, 273, 241, 260, 102, 35, 103, 261, 104, 177,
796 342, 7, 8, 136, 262, 9, 238, 317, 10, 128,
797 157, 289, 272, 12, 290, 349, 246, 302, 12, 276,
798 278, 303, 297, -34, 298, 304, 19, 146, 299, 22,
799 323, 19, 298, 150, 22, 360, 299, 289, 30, 151,
800 292, 31, 32, 30, 152, 282, 31, 32, -34, 154,
801 11, 286, 122, 123, 124, 125, 126, 127, 128, 332,
802 300, 298, 311, 312, 343, 299, 298, 132, 172, 158,
803 299, 272, 5, 6, 310, 89, 140, 90, 313, 91,
804 315, 90, 318, 75, 165, 177, 177, 178, 183, 321,
805 7, 8, 186, 187, 9, 190, 89, 10, 90, 168,
806 137, 132, 325, 229, 180, 253, 327, 12, 173, 329,
807 249, 254, 256, 257, 174, 124, 125, 126, 127, 128,
808 19, 255, 263, 22, 266, 274, 279, 280, 287, 272,
809 288, 291, 30, 330, 231, 31, 32, 241, 336, 347,
810 341, 345, 348, 356, 357, 362, 368, 370, 372, 350,
811 139, 352, 95, 155, 236, 331, 361, 72, 76, 166,
812 79, 269, 248, 4, 156, 272, 272, 5, 6, 223,
813 365, 0, 191, 189, 371, 0, 366, 0, 0, 367,
814 0, 272, 0, 375, 0, 7, 8, 0, 0, 9,
815 0, 0, 10, 272, 0, 0, 0, 0, 0, 0,
816 11, 138, 12, 0, 0, 0, 0, 0, 13, 0,
817 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
818 0, 24, 25, 26, 27, 28, 29, 30, 0, 0,
819 31, 32, 33, 34, 4, 0, 0, 0, 5, 6,
820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
821 0, 0, 0, 0, 0, 0, 7, 8, 0, 0,
822 9, 0, 0, 10, 0, 0, 0, 0, 0, 0,
823 0, 11, 237, 12, 0, 0, 0, 0, 0, 13,
824 0, 14, 15, 16, 17, 18, 19, 20, 21, 22,
825 23, 0, 24, 25, 26, 27, 28, 29, 30, 0,
826 0, 31, 32, 33, 34, 4, 0, 0, 0, 5,
827 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
828 0, 0, 0, 0, 0, 0, 0, 7, 8, 0,
829 0, 9, 0, 0, 10, 0, 0, 0, 0, 0,
830 0, 0, 11, 0, 12, 0, 0, 0, 0, 0,
831 13, 0, 14, 15, 16, 17, 18, 19, 20, 21,
832 22, 23, 0, 24, 25, 26, 27, 28, 29, 30,
833 0, 0, 31, 32, 33, 34, 4, 0, 0, 0,
834 5, 6, 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
836 0, 0, 9, 0, 0, 10, 0, 0, 0, 0,
837 0, 0, 0, 11, 0, 12, 0, 0, 0, 0,
838 0, 13, 0, 14, 15, 16, 17, 18, 19, 20,
839 21, 22, 23, 0, 24, 25, 26, 27, 28, 29,
840 30, 0, 0, 31, 32, 93, 94, 4, 0, 4,
841 0, 5, 6, 5, 6, 0, 0, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
843 8, 7, 8, 9, 0, 9, 10, 0, 10, 0,
844 0, 0, 179, 0, 11, 0, 12, 0, 12, 0,
845 0, 0, 13, 180, 0, 0, 0, 0, 0, 19,
846 0, 19, 22, 23, 22, 24, 25, 26, 27, 28,
847 29, 30, 0, 30, 31, 32, 31, 32, 172, 0,
848 4, 0, 5, 6, 5, 6, 0, 0, 0, 0,
849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850 7, 8, 7, 8, 9, 0, 9, 10, 0, 10,
851 0, 0, 0, 0, 0, 0, 0, 12, 188, 12,
852 0, 0, 0, 0, 174, 86, 0, 0, 0, 0,
853 19, 0, 19, 22, 4, 22, 0, 0, 5, 6,
854 0, 0, 30, 0, 30, 31, 32, 31, 32, 0,
855 0, 0, 0, 0, 4, 0, 7, 8, 5, 6,
856 9, 0, 0, 10, 220, 0, 0, 179, 0, 0,
857 0, 0, 0, 12, 0, 0, 7, 8, 0, 0,
858 9, 0, 0, 10, 0, 0, 19, 0, 0, 22,
859 4, 0, 0, 12, 5, 6, 0, 0, 30, 0,
860 0, 31, 32, 0, 0, 0, 19, 0, 0, 22,
861 4, 0, 7, 8, 5, 6, 9, 0, 30, 10,
862 0, 31, 32, 0, 0, 0, 0, 0, 0, 12,
863 0, 0, 7, 8, 180, 0, 9, 0, 0, 10,
864 0, 0, 19, 0, 0, 22, 4, 246, 0, 12,
865 5, 6, 0, 0, 30, 277, 0, 31, 32, 0,
866 0, 0, 19, 0, 0, 22, 4, 0, 7, 8,
867 5, 6, 9, 0, 30, 10, 0, 31, 32, 0,
868 0, 0, 0, 0, 0, 12, 172, 0, 7, 8,
869 5, 6, 9, 0, 0, 10, 0, 0, 19, 0,
870 0, 22, 0, 0, 0, 12, 0, 0, 7, 8,
871 30, 0, 9, 31, 32, 10, 0, 0, 19, 0,
872 0, 22, 0, 0, 0, 12, 0, 0, 0, 0,
873 30, 0, 0, 31, 32, 0, 0, 0, 19, 0,
874 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
875 30, 0, 0, 31, 32, 105, 106, 107, 108, 109,
876 110, 0, 0, 0, 0, 111, 112, 113, 114, 115,
877 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
878 126, 127, 128, 129, 0, 130, 131, 0, 0, 0,
879 0, 132, 105, 106, 107, 108, 109, 110, 0, 171,
880 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
881 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
882 129, 0, 130, 131, 264, 0, 0, 0, 132, 105,
883 106, 107, 108, 109, 110, 265, 0, 0, 0, 111,
884 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
885 122, 123, 124, 125, 126, 127, 128, 129, 0, 130,
886 131, 264, 0, 0, 0, 132, 105, 106, 107, 108,
887 109, 110, 275, 0, 0, 0, 111, 112, 113, 114,
888 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
889 125, 126, 127, 128, 129, 0, 130, 131, 0, 0,
890 0, 0, 132, 105, 106, 107, 108, 109, 110, 301,
891 0, 0, 0, 111, 112, 113, 114, 115, 116, 117,
892 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
893 128, 129, 0, 130, 131, 0, 0, 0, 0, 132,
894 105, 106, 107, 108, 109, 110, 344, 0, 0, 0,
895 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
896 121, 122, 123, 124, 125, 126, 127, 128, 129, 0,
897 130, 131, 0, 0, 0, 0, 132, 0, 0, 144,
898 0, 145, 105, 106, 107, 108, 109, 110, 0, 0,
899 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
900 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
901 129, 0, 130, 131, 0, 0, 0, 0, 132, 283,
902 0, 0, 0, 284, 105, 106, 107, 108, 109, 110,
903 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
904 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
905 127, 128, 129, 0, 130, 131, 0, 0, 0, 0,
906 132, 353, 0, 0, 0, 354, 105, 106, 107, 108,
907 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
908 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
909 125, 126, 127, 128, 129, 0, 130, 131, 0, 0,
910 0, 0, 132, 0, 0, 251, 105, 106, 107, 108,
911 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
912 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
913 125, 126, 127, 128, 129, 0, 130, 131, 0, 0,
914 0, 0, 132, 0, 0, 252, 105, 106, 107, 108,
915 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
916 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
917 125, 126, 127, 128, 129, 0, 130, 131, 0, 0,
918 0, 0, 132, 0, 0, 346, 105, 106, 107, 108,
919 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
920 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
921 125, 126, 127, 128, 129, 0, 130, 131, 0, 0,
922 0, 0, 132, 0, 0, 363, 105, 106, 107, 108,
923 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
924 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
925 125, 126, 127, 128, 129, 0, 130, 131, 0, 0,
926 0, 0, 132, 328, 105, 106, 107, 108, 109, 110,
927 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
928 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
929 127, 128, 129, 0, 130, 131, 0, 0, 0, 0,
930 132, 373, 105, 106, 107, 108, 109, 110, 0, 0,
931 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
932 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
933 129, 0, 130, 131, 281, 0, 0, 0, 132, 105,
934 106, 107, 108, 109, 110, 0, 0, 0, 0, 111,
935 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
936 122, 123, 124, 125, 126, 127, 128, 129, 0, 130,
937 131, 0, 0, 0, 105, 132, 107, 108, 109, 110,
938 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
939 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
940 127, 128, 129, 0, 130, 131, 0, 0, 0, 324,
941 132, 105, 0, 107, 108, 109, 110, 0, 0, 0,
942 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
943 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
944 0, 130, 131, 0, 0, 0, 326, 132, 105, 0,
945 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
946 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
947 123, 124, 125, 126, 127, 128, 129, 0, 130, 131,
948 0, 0, 0, 351, 132, 105, 0, 107, 108, 109,
949 110, 0, 0, 0, 0, 111, 112, 113, 114, 115,
950 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
951 126, 127, 128, 129, 0, 130, 131, 0, 0, 0,
952 0, 132, 106, 107, 108, 109, 110, 0, 0, 0,
953 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
954 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
955 0, 0, 131, 0, 0, 0, 0, 132, 106, 107,
956 108, 109, 110, 0, 0, 0, 0, 0, 112, 113,
957 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
958 124, 125, 126, 127, 128, 129, 106, 107, 108, 109,
959 110, 0, 0, 132, 0, 0, 0, 113, 114, 115,
960 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
961 126, 127, 128, 129, 106, 107, 108, 109, 110, 0,
962 0, 132, 0, 0, 0, 0, 114, 115, 116, 117,
963 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
964 128, 129, 106, 107, 108, 109, 110, 0, 0, 132,
965 0, 0, 0, 0, 0, 115, 116, 117, 118, 119,
966 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
967 106, 107, 108, 109, 110, 0, 0, 132, 0, 0,
968 0, 0, 0, 0, 0, 117, 118, 119, 120, 121,
969 122, 123, 124, 125, 126, 127, 128, 129, 106, 107,
970 108, 109, 110, 0, 0, 132, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0, 0, 121, 122, 123,
972 124, 125, 126, 127, 128, 129, 106, 107, 108, 109,
973 110, 0, 0, 132, 106, 107, 108, 109, 110, 0,
974 0, 0, 0, 0, 0, 121, 122, 123, 124, 125,
975 126, 127, 128, 0, 122, 123, 124, 125, 126, 127,
976 128, 132, 0, 0, 0, 0, 0, 0, 0, 132
977 };
978
979 static const yytype_int16 yycheck[] =
980 {
981 5, 6, 7, 8, 83, 10, 25, 12, 21, 174,
982 16, 3, 2, 240, 135, 35, 300, 3, 37, 3,
983 184, 3, 12, 3, 29, 15, 31, 3, 18, 43,
984 3, 21, 22, 43, 3, 49, 246, 29, 58, 49,
985 43, 0, 3, 44, 44, 41, 49, 37, 48, 29,
986 51, 27, 336, 49, 68, 75, 3, 42, 68, 79,
987 42, 46, 44, 40, 46, 68, 27, 57, 42, 42,
988 83, 298, 299, 46, 238, 80, 81, 42, 44, 71,
989 46, 46, 36, 247, 89, 71, 91, 71, 42, 10,
990 11, 42, 46, 83, 304, 260, 261, 102, 42, 104,
991 105, 239, 223, 43, 109, 45, 111, 112, 113, 114,
992 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
993 125, 126, 127, 128, 129, 130, 131, 132, 133, 267,
994 340, 341, 137, 45, 48, 140, 48, 43, 143, 48,
995 145, 147, 162, 49, 3, 40, 356, 42, 48, 3,
996 43, 46, 45, 7, 8, 160, 49, 43, 368, 297,
997 46, 43, 68, 45, 42, 155, 44, 49, 46, 174,
998 308, 25, 26, 48, 179, 29, 42, 256, 32, 31,
999 46, 45, 187, 42, 48, 323, 40, 41, 42, 194,
1000 195, 45, 43, 3, 45, 49, 55, 3, 49, 58,
1001 43, 55, 45, 48, 58, 343, 49, 45, 67, 48,
1002 48, 70, 71, 67, 48, 220, 70, 71, 50, 50,
1003 40, 226, 25, 26, 27, 28, 29, 30, 31, 43,
1004 243, 45, 251, 252, 43, 49, 45, 40, 3, 3,
1005 49, 246, 7, 8, 249, 42, 43, 44, 253, 46,
1006 255, 44, 257, 243, 61, 260, 261, 3, 46, 264,
1007 25, 26, 45, 34, 29, 3, 42, 32, 44, 348,
1008 46, 40, 277, 3, 47, 42, 281, 42, 43, 284,
1009 46, 3, 45, 34, 49, 27, 28, 29, 30, 31,
1010 55, 48, 47, 58, 47, 47, 5, 5, 3, 304,
1011 48, 48, 67, 3, 3, 70, 71, 68, 3, 314,
1012 45, 60, 48, 34, 41, 48, 34, 41, 43, 324,
1013 57, 326, 37, 73, 154, 289, 345, 18, 21, 83,
1014 22, 186, 161, 3, 74, 340, 341, 7, 8, 134,
1015 348, -1, 104, 102, 363, -1, 351, -1, -1, 354,
1016 -1, 356, -1, 372, -1, 25, 26, -1, -1, 29,
1017 -1, -1, 32, 368, -1, -1, -1, -1, -1, -1,
1018 40, 41, 42, -1, -1, -1, -1, -1, 48, -1,
1019 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1020 -1, 61, 62, 63, 64, 65, 66, 67, -1, -1,
1021 70, 71, 72, 73, 3, -1, -1, -1, 7, 8,
1022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1023 -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
1024 29, -1, -1, 32, -1, -1, -1, -1, -1, -1,
1025 -1, 40, 41, 42, -1, -1, -1, -1, -1, 48,
1026 -1, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1027 59, -1, 61, 62, 63, 64, 65, 66, 67, -1,
1028 -1, 70, 71, 72, 73, 3, -1, -1, -1, 7,
1029 8, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1030 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
1031 -1, 29, -1, -1, 32, -1, -1, -1, -1, -1,
1032 -1, -1, 40, -1, 42, -1, -1, -1, -1, -1,
1033 48, -1, 50, 51, 52, 53, 54, 55, 56, 57,
1034 58, 59, -1, 61, 62, 63, 64, 65, 66, 67,
1035 -1, -1, 70, 71, 72, 73, 3, -1, -1, -1,
1036 7, 8, -1, -1, -1, -1, -1, -1, -1, -1,
1037 -1, -1, -1, -1, -1, -1, -1, -1, 25, 26,
1038 -1, -1, 29, -1, -1, 32, -1, -1, -1, -1,
1039 -1, -1, -1, 40, -1, 42, -1, -1, -1, -1,
1040 -1, 48, -1, 50, 51, 52, 53, 54, 55, 56,
1041 57, 58, 59, -1, 61, 62, 63, 64, 65, 66,
1042 67, -1, -1, 70, 71, 72, 73, 3, -1, 3,
1043 -1, 7, 8, 7, 8, -1, -1, -1, -1, -1,
1044 -1, -1, -1, -1, -1, -1, -1, -1, -1, 25,
1045 26, 25, 26, 29, -1, 29, 32, -1, 32, -1,
1046 -1, -1, 36, -1, 40, -1, 42, -1, 42, -1,
1047 -1, -1, 48, 47, -1, -1, -1, -1, -1, 55,
1048 -1, 55, 58, 59, 58, 61, 62, 63, 64, 65,
1049 66, 67, -1, 67, 70, 71, 70, 71, 3, -1,
1050 3, -1, 7, 8, 7, 8, -1, -1, -1, -1,
1051 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1052 25, 26, 25, 26, 29, -1, 29, 32, -1, 32,
1053 -1, -1, -1, -1, -1, -1, -1, 42, 43, 42,
1054 -1, -1, -1, -1, 49, 48, -1, -1, -1, -1,
1055 55, -1, 55, 58, 3, 58, -1, -1, 7, 8,
1056 -1, -1, 67, -1, 67, 70, 71, 70, 71, -1,
1057 -1, -1, -1, -1, 3, -1, 25, 26, 7, 8,
1058 29, -1, -1, 32, 13, -1, -1, 36, -1, -1,
1059 -1, -1, -1, 42, -1, -1, 25, 26, -1, -1,
1060 29, -1, -1, 32, -1, -1, 55, -1, -1, 58,
1061 3, -1, -1, 42, 7, 8, -1, -1, 67, -1,
1062 -1, 70, 71, -1, -1, -1, 55, -1, -1, 58,
1063 3, -1, 25, 26, 7, 8, 29, -1, 67, 32,
1064 -1, 70, 71, -1, -1, -1, -1, -1, -1, 42,
1065 -1, -1, 25, 26, 47, -1, 29, -1, -1, 32,
1066 -1, -1, 55, -1, -1, 58, 3, 40, -1, 42,
1067 7, 8, -1, -1, 67, 12, -1, 70, 71, -1,
1068 -1, -1, 55, -1, -1, 58, 3, -1, 25, 26,
1069 7, 8, 29, -1, 67, 32, -1, 70, 71, -1,
1070 -1, -1, -1, -1, -1, 42, 3, -1, 25, 26,
1071 7, 8, 29, -1, -1, 32, -1, -1, 55, -1,
1072 -1, 58, -1, -1, -1, 42, -1, -1, 25, 26,
1073 67, -1, 29, 70, 71, 32, -1, -1, 55, -1,
1074 -1, 58, -1, -1, -1, 42, -1, -1, -1, -1,
1075 67, -1, -1, 70, 71, -1, -1, -1, 55, -1,
1076 -1, 58, -1, -1, -1, -1, -1, -1, -1, -1,
1077 67, -1, -1, 70, 71, 4, 5, 6, 7, 8,
1078 9, -1, -1, -1, -1, 14, 15, 16, 17, 18,
1079 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1080 29, 30, 31, 32, -1, 34, 35, -1, -1, -1,
1081 -1, 40, 4, 5, 6, 7, 8, 9, -1, 48,
1082 -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1083 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1084 32, -1, 34, 35, 36, -1, -1, -1, 40, 4,
1085 5, 6, 7, 8, 9, 47, -1, -1, -1, 14,
1086 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1087 25, 26, 27, 28, 29, 30, 31, 32, -1, 34,
1088 35, 36, -1, -1, -1, 40, 4, 5, 6, 7,
1089 8, 9, 47, -1, -1, -1, 14, 15, 16, 17,
1090 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1091 28, 29, 30, 31, 32, -1, 34, 35, -1, -1,
1092 -1, -1, 40, 4, 5, 6, 7, 8, 9, 47,
1093 -1, -1, -1, 14, 15, 16, 17, 18, 19, 20,
1094 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1095 31, 32, -1, 34, 35, -1, -1, -1, -1, 40,
1096 4, 5, 6, 7, 8, 9, 47, -1, -1, -1,
1097 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1098 24, 25, 26, 27, 28, 29, 30, 31, 32, -1,
1099 34, 35, -1, -1, -1, -1, 40, -1, -1, 43,
1100 -1, 45, 4, 5, 6, 7, 8, 9, -1, -1,
1101 -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1102 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1103 32, -1, 34, 35, -1, -1, -1, -1, 40, 41,
1104 -1, -1, -1, 45, 4, 5, 6, 7, 8, 9,
1105 -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
1106 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1107 30, 31, 32, -1, 34, 35, -1, -1, -1, -1,
1108 40, 41, -1, -1, -1, 45, 4, 5, 6, 7,
1109 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1110 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1111 28, 29, 30, 31, 32, -1, 34, 35, -1, -1,
1112 -1, -1, 40, -1, -1, 43, 4, 5, 6, 7,
1113 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1114 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1115 28, 29, 30, 31, 32, -1, 34, 35, -1, -1,
1116 -1, -1, 40, -1, -1, 43, 4, 5, 6, 7,
1117 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1118 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1119 28, 29, 30, 31, 32, -1, 34, 35, -1, -1,
1120 -1, -1, 40, -1, -1, 43, 4, 5, 6, 7,
1121 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1122 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1123 28, 29, 30, 31, 32, -1, 34, 35, -1, -1,
1124 -1, -1, 40, -1, -1, 43, 4, 5, 6, 7,
1125 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
1126 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1127 28, 29, 30, 31, 32, -1, 34, 35, -1, -1,
1128 -1, -1, 40, 41, 4, 5, 6, 7, 8, 9,
1129 -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
1130 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1131 30, 31, 32, -1, 34, 35, -1, -1, -1, -1,
1132 40, 41, 4, 5, 6, 7, 8, 9, -1, -1,
1133 -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
1134 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1135 32, -1, 34, 35, 36, -1, -1, -1, 40, 4,
1136 5, 6, 7, 8, 9, -1, -1, -1, -1, 14,
1137 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1138 25, 26, 27, 28, 29, 30, 31, 32, -1, 34,
1139 35, -1, -1, -1, 4, 40, 6, 7, 8, 9,
1140 -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
1141 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1142 30, 31, 32, -1, 34, 35, -1, -1, -1, 39,
1143 40, 4, -1, 6, 7, 8, 9, -1, -1, -1,
1144 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1145 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1146 -1, 34, 35, -1, -1, -1, 39, 40, 4, -1,
1147 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
1148 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1149 26, 27, 28, 29, 30, 31, 32, -1, 34, 35,
1150 -1, -1, -1, 39, 40, 4, -1, 6, 7, 8,
1151 9, -1, -1, -1, -1, 14, 15, 16, 17, 18,
1152 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1153 29, 30, 31, 32, -1, 34, 35, -1, -1, -1,
1154 -1, 40, 5, 6, 7, 8, 9, -1, -1, -1,
1155 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1156 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1157 -1, -1, 35, -1, -1, -1, -1, 40, 5, 6,
1158 7, 8, 9, -1, -1, -1, -1, -1, 15, 16,
1159 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1160 27, 28, 29, 30, 31, 32, 5, 6, 7, 8,
1161 9, -1, -1, 40, -1, -1, -1, 16, 17, 18,
1162 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1163 29, 30, 31, 32, 5, 6, 7, 8, 9, -1,
1164 -1, 40, -1, -1, -1, -1, 17, 18, 19, 20,
1165 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
1166 31, 32, 5, 6, 7, 8, 9, -1, -1, 40,
1167 -1, -1, -1, -1, -1, 18, 19, 20, 21, 22,
1168 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1169 5, 6, 7, 8, 9, -1, -1, 40, -1, -1,
1170 -1, -1, -1, -1, -1, 20, 21, 22, 23, 24,
1171 25, 26, 27, 28, 29, 30, 31, 32, 5, 6,
1172 7, 8, 9, -1, -1, 40, -1, -1, -1, -1,
1173 -1, -1, -1, -1, -1, -1, -1, 24, 25, 26,
1174 27, 28, 29, 30, 31, 32, 5, 6, 7, 8,
1175 9, -1, -1, 40, 5, 6, 7, 8, 9, -1,
1176 -1, -1, -1, -1, -1, 24, 25, 26, 27, 28,
1177 29, 30, 31, -1, 25, 26, 27, 28, 29, 30,
1178 31, 40, -1, -1, -1, -1, -1, -1, -1, 40
1179 };
1180
1181 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1182 symbol of state STATE-NUM. */
1183 static const yytype_uint8 yystos[] =
1184 {
1185 0, 77, 78, 0, 3, 7, 8, 25, 26, 29,
1186 32, 40, 42, 48, 50, 51, 52, 53, 54, 55,
1187 56, 57, 58, 59, 61, 62, 63, 64, 65, 66,
1188 67, 70, 71, 72, 73, 80, 81, 82, 83, 89,
1189 90, 91, 92, 99, 106, 107, 109, 113, 119, 120,
1190 121, 80, 113, 113, 113, 113, 113, 79, 80, 112,
1191 113, 3, 71, 86, 87, 88, 80, 87, 3, 71,
1192 3, 80, 86, 40, 3, 80, 89, 91, 80, 92,
1193 42, 42, 119, 42, 48, 48, 48, 113, 113, 42,
1194 44, 46, 93, 72, 73, 83, 119, 48, 3, 95,
1195 96, 97, 42, 44, 46, 4, 5, 6, 7, 8,
1196 9, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1197 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1198 34, 35, 40, 114, 115, 116, 48, 46, 41, 81,
1199 43, 93, 43, 45, 43, 45, 3, 45, 48, 48,
1200 48, 48, 48, 51, 50, 78, 99, 46, 3, 42,
1201 46, 93, 94, 113, 113, 61, 90, 91, 120, 122,
1202 125, 48, 3, 43, 49, 110, 111, 113, 3, 36,
1203 47, 108, 113, 46, 42, 93, 45, 34, 43, 111,
1204 3, 108, 113, 113, 10, 11, 117, 118, 113, 113,
1205 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1206 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1207 13, 113, 113, 116, 115, 113, 43, 113, 113, 3,
1208 87, 3, 27, 84, 85, 27, 85, 41, 42, 43,
1209 49, 68, 103, 104, 105, 113, 40, 42, 100, 46,
1210 93, 43, 43, 42, 3, 48, 45, 34, 110, 43,
1211 45, 49, 113, 47, 36, 47, 47, 43, 103, 96,
1212 98, 100, 113, 43, 47, 47, 113, 12, 113, 5,
1213 5, 36, 113, 41, 45, 115, 113, 3, 48, 45,
1214 48, 48, 48, 43, 103, 121, 105, 43, 45, 49,
1215 91, 47, 41, 45, 49, 98, 101, 102, 43, 103,
1216 113, 119, 119, 113, 36, 113, 123, 120, 113, 110,
1217 110, 113, 121, 43, 39, 113, 39, 113, 41, 113,
1218 3, 84, 43, 121, 105, 105, 3, 97, 98, 41,
1219 49, 45, 121, 43, 47, 60, 43, 113, 48, 121,
1220 113, 39, 113, 41, 45, 97, 34, 41, 98, 98,
1221 121, 119, 48, 43, 124, 125, 113, 113, 34, 98,
1222 41, 119, 43, 41, 98, 119
1223 };
1224
1225 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1226 static const yytype_uint8 yyr1[] =
1227 {
1228 0, 76, 77, 78, 78, 79, 79, 80, 80, 80,
1229 81, 81, 81, 81, 82, 82, 82, 82, 83, 83,
1230 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1231 84, 84, 85, 85, 86, 86, 87, 87, 88, 88,
1232 89, 90, 91, 91, 92, 93, 93, 94, 94, 95,
1233 95, 96, 96, 97, 97, 97, 97, 98, 98, 99,
1234 100, 100, 100, 100, 101, 101, 101, 102, 102, 103,
1235 103, 103, 103, 104, 104, 105, 105, 105, 105, 105,
1236 106, 106, 107, 107, 108, 108, 108, 108, 109, 109,
1237 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1238 110, 110, 111, 111, 111, 111, 112, 112, 113, 113,
1239 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1240 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1241 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1242 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1243 113, 113, 113, 113, 113, 113, 113, 114, 114, 114,
1244 114, 114, 115, 115, 115, 115, 116, 116, 116, 116,
1245 116, 117, 117, 117, 117, 118, 118, 119, 119, 119,
1246 119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1247 120, 121, 122, 122, 122, 123, 123, 124, 124, 125,
1248 125
1249 };
1250
1251 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1252 static const yytype_uint8 yyr2[] =
1253 {
1254 0, 2, 1, 0, 2, 0, 2, 1, 3, 1,
1255 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
1256 1, 3, 5, 5, 3, 5, 5, 3, 3, 3,
1257 1, 3, 1, 3, 1, 1, 1, 3, 1, 3,
1258 2, 2, 1, 2, 1, 2, 3, 3, 4, 1,
1259 3, 1, 3, 1, 2, 3, 4, 1, 1, 3,
1260 2, 4, 3, 5, 1, 1, 2, 1, 3, 1,
1261 2, 3, 3, 1, 0, 2, 3, 5, 4, 6,
1262 5, 6, 3, 2, 1, 2, 2, 3, 3, 4,
1263 4, 4, 4, 3, 4, 3, 4, 3, 3, 1,
1264 1, 3, 1, 2, 3, 3, 3, 3, 1, 1,
1265 1, 1, 2, 4, 5, 2, 2, 2, 3, 3,
1266 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1267 3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
1268 4, 3, 4, 5, 6, 6, 7, 5, 3, 3,
1269 3, 2, 2, 2, 2, 3, 4, 1, 1, 2,
1270 2, 3, 4, 3, 5, 7, 1, 3, 3, 1,
1271 1, 2, 4, 3, 5, 2, 4, 1, 1, 2,
1272 5, 7, 5, 7, 9, 8, 2, 2, 2, 3,
1273 1, 1, 0, 1, 1, 0, 1, 0, 1, 1,
1274 3
1275 };
1276
1277
1278 #define yyerrok (yyerrstatus = 0)
1279 #define yyclearin (yychar = YYEMPTY)
1280 #define YYEMPTY (-2)
1281 #define YYEOF 0
1282
1283 #define YYACCEPT goto yyacceptlab
1284 #define YYABORT goto yyabortlab
1285 #define YYERROR goto yyerrorlab
1286
1287
1288 #define YYRECOVERING() (!!yyerrstatus)
1289
1290 #define YYBACKUP(Token, Value) \
1291 do \
1292 if (yychar == YYEMPTY) \
1293 { \
1294 yychar = (Token); \
1295 yylval = (Value); \
1296 YYPOPSTACK (yylen); \
1297 yystate = *yyssp; \
1298 goto yybackup; \
1299 } \
1300 else \
1301 { \
1302 yyerror (YY_("syntax error: cannot back up")); \
1303 YYERROR; \
1304 } \
1305 while (0)
1306
1307 /* Error token number */
1308 #define YYTERROR 1
1309 #define YYERRCODE 256
1310
1311
1312
1313 /* Enable debugging if requested. */
1314 #if YYDEBUG
1315
1316 # ifndef YYFPRINTF
1317 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1318 # define YYFPRINTF fprintf
1319 # endif
1320
1321 # define YYDPRINTF(Args) \
1322 do { \
1323 if (yydebug) \
1324 YYFPRINTF Args; \
1325 } while (0)
1326
1327 /* This macro is provided for backward compatibility. */
1328 #ifndef YY_LOCATION_PRINT
1329 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1330 #endif
1331
1332
1333 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1334 do { \
1335 if (yydebug) \
1336 { \
1337 YYFPRINTF (stderr, "%s ", Title); \
1338 yy_symbol_print (stderr, \
1339 Type, Value); \
1340 YYFPRINTF (stderr, "\n"); \
1341 } \
1342 } while (0)
1343
1344
1345 /*----------------------------------------.
1346 | Print this symbol's value on YYOUTPUT. |
1347 `----------------------------------------*/
1348
1349 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1350 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1351 {
1352 FILE *yyo = yyoutput;
1353 YYUSE (yyo);
1354 if (!yyvaluep)
1355 return;
1356 # ifdef YYPRINT
1357 if (yytype < YYNTOKENS)
1358 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1359 # endif
1360 YYUSE (yytype);
1361 }
1362
1363
1364 /*--------------------------------.
1365 | Print this symbol on YYOUTPUT. |
1366 `--------------------------------*/
1367
1368 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1369 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1370 {
1371 YYFPRINTF (yyoutput, "%s %s (",
1372 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1373
1374 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1375 YYFPRINTF (yyoutput, ")");
1376 }
1377
1378 /*------------------------------------------------------------------.
1379 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1380 | TOP (included). |
1381 `------------------------------------------------------------------*/
1382
1383 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)1384 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1385 {
1386 YYFPRINTF (stderr, "Stack now");
1387 for (; yybottom <= yytop; yybottom++)
1388 {
1389 int yybot = *yybottom;
1390 YYFPRINTF (stderr, " %d", yybot);
1391 }
1392 YYFPRINTF (stderr, "\n");
1393 }
1394
1395 # define YY_STACK_PRINT(Bottom, Top) \
1396 do { \
1397 if (yydebug) \
1398 yy_stack_print ((Bottom), (Top)); \
1399 } while (0)
1400
1401
1402 /*------------------------------------------------.
1403 | Report that the YYRULE is going to be reduced. |
1404 `------------------------------------------------*/
1405
1406 static void
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule)1407 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1408 {
1409 unsigned long int yylno = yyrline[yyrule];
1410 int yynrhs = yyr2[yyrule];
1411 int yyi;
1412 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1413 yyrule - 1, yylno);
1414 /* The symbols being reduced. */
1415 for (yyi = 0; yyi < yynrhs; yyi++)
1416 {
1417 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1418 yy_symbol_print (stderr,
1419 yystos[yyssp[yyi + 1 - yynrhs]],
1420 &(yyvsp[(yyi + 1) - (yynrhs)])
1421 );
1422 YYFPRINTF (stderr, "\n");
1423 }
1424 }
1425
1426 # define YY_REDUCE_PRINT(Rule) \
1427 do { \
1428 if (yydebug) \
1429 yy_reduce_print (yyssp, yyvsp, Rule); \
1430 } while (0)
1431
1432 /* Nonzero means print parse trace. It is left uninitialized so that
1433 multiple parsers can coexist. */
1434 int yydebug;
1435 #else /* !YYDEBUG */
1436 # define YYDPRINTF(Args)
1437 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1438 # define YY_STACK_PRINT(Bottom, Top)
1439 # define YY_REDUCE_PRINT(Rule)
1440 #endif /* !YYDEBUG */
1441
1442
1443 /* YYINITDEPTH -- initial size of the parser's stacks. */
1444 #ifndef YYINITDEPTH
1445 # define YYINITDEPTH 200
1446 #endif
1447
1448 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1449 if the built-in stack extension method is used).
1450
1451 Do not make this value too large; the results are undefined if
1452 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1453 evaluated with infinite-precision integer arithmetic. */
1454
1455 #ifndef YYMAXDEPTH
1456 # define YYMAXDEPTH 10000
1457 #endif
1458
1459
1460 #if YYERROR_VERBOSE
1461
1462 # ifndef yystrlen
1463 # if defined __GLIBC__ && defined _STRING_H
1464 # define yystrlen strlen
1465 # else
1466 /* Return the length of YYSTR. */
1467 static YYSIZE_T
yystrlen(const char * yystr)1468 yystrlen (const char *yystr)
1469 {
1470 YYSIZE_T yylen;
1471 for (yylen = 0; yystr[yylen]; yylen++)
1472 continue;
1473 return yylen;
1474 }
1475 # endif
1476 # endif
1477
1478 # ifndef yystpcpy
1479 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1480 # define yystpcpy stpcpy
1481 # else
1482 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1483 YYDEST. */
1484 static char *
yystpcpy(char * yydest,const char * yysrc)1485 yystpcpy (char *yydest, const char *yysrc)
1486 {
1487 char *yyd = yydest;
1488 const char *yys = yysrc;
1489
1490 while ((*yyd++ = *yys++) != '\0')
1491 continue;
1492
1493 return yyd - 1;
1494 }
1495 # endif
1496 # endif
1497
1498 # ifndef yytnamerr
1499 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1500 quotes and backslashes, so that it's suitable for yyerror. The
1501 heuristic is that double-quoting is unnecessary unless the string
1502 contains an apostrophe, a comma, or backslash (other than
1503 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1504 null, do not copy; instead, return the length of what the result
1505 would have been. */
1506 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)1507 yytnamerr (char *yyres, const char *yystr)
1508 {
1509 if (*yystr == '"')
1510 {
1511 YYSIZE_T yyn = 0;
1512 char const *yyp = yystr;
1513
1514 for (;;)
1515 switch (*++yyp)
1516 {
1517 case '\'':
1518 case ',':
1519 goto do_not_strip_quotes;
1520
1521 case '\\':
1522 if (*++yyp != '\\')
1523 goto do_not_strip_quotes;
1524 /* Fall through. */
1525 default:
1526 if (yyres)
1527 yyres[yyn] = *yyp;
1528 yyn++;
1529 break;
1530
1531 case '"':
1532 if (yyres)
1533 yyres[yyn] = '\0';
1534 return yyn;
1535 }
1536 do_not_strip_quotes: ;
1537 }
1538
1539 if (! yyres)
1540 return yystrlen (yystr);
1541
1542 return yystpcpy (yyres, yystr) - yyres;
1543 }
1544 # endif
1545
1546 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1547 about the unexpected token YYTOKEN for the state stack whose top is
1548 YYSSP.
1549
1550 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1551 not large enough to hold the message. In that case, also set
1552 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
1553 required number of bytes is too large to store. */
1554 static int
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)1555 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1556 yytype_int16 *yyssp, int yytoken)
1557 {
1558 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1559 YYSIZE_T yysize = yysize0;
1560 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1561 /* Internationalized format string. */
1562 const char *yyformat = YY_NULLPTR;
1563 /* Arguments of yyformat. */
1564 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1565 /* Number of reported tokens (one for the "unexpected", one per
1566 "expected"). */
1567 int yycount = 0;
1568
1569 /* There are many possibilities here to consider:
1570 - If this state is a consistent state with a default action, then
1571 the only way this function was invoked is if the default action
1572 is an error action. In that case, don't check for expected
1573 tokens because there are none.
1574 - The only way there can be no lookahead present (in yychar) is if
1575 this state is a consistent state with a default action. Thus,
1576 detecting the absence of a lookahead is sufficient to determine
1577 that there is no unexpected or expected token to report. In that
1578 case, just report a simple "syntax error".
1579 - Don't assume there isn't a lookahead just because this state is a
1580 consistent state with a default action. There might have been a
1581 previous inconsistent state, consistent state with a non-default
1582 action, or user semantic action that manipulated yychar.
1583 - Of course, the expected token list depends on states to have
1584 correct lookahead information, and it depends on the parser not
1585 to perform extra reductions after fetching a lookahead from the
1586 scanner and before detecting a syntax error. Thus, state merging
1587 (from LALR or IELR) and default reductions corrupt the expected
1588 token list. However, the list is correct for canonical LR with
1589 one exception: it will still contain any token that will not be
1590 accepted due to an error action in a later state.
1591 */
1592 if (yytoken != YYEMPTY)
1593 {
1594 int yyn = yypact[*yyssp];
1595 yyarg[yycount++] = yytname[yytoken];
1596 if (!yypact_value_is_default (yyn))
1597 {
1598 /* Start YYX at -YYN if negative to avoid negative indexes in
1599 YYCHECK. In other words, skip the first -YYN actions for
1600 this state because they are default actions. */
1601 int yyxbegin = yyn < 0 ? -yyn : 0;
1602 /* Stay within bounds of both yycheck and yytname. */
1603 int yychecklim = YYLAST - yyn + 1;
1604 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1605 int yyx;
1606
1607 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1608 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1609 && !yytable_value_is_error (yytable[yyx + yyn]))
1610 {
1611 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1612 {
1613 yycount = 1;
1614 yysize = yysize0;
1615 break;
1616 }
1617 yyarg[yycount++] = yytname[yyx];
1618 {
1619 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1620 if (! (yysize <= yysize1
1621 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1622 return 2;
1623 yysize = yysize1;
1624 }
1625 }
1626 }
1627 }
1628
1629 switch (yycount)
1630 {
1631 # define YYCASE_(N, S) \
1632 case N: \
1633 yyformat = S; \
1634 break
1635 default: /* Avoid compiler warnings. */
1636 YYCASE_(0, YY_("syntax error"));
1637 YYCASE_(1, YY_("syntax error, unexpected %s"));
1638 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1639 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1640 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1641 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1642 # undef YYCASE_
1643 }
1644
1645 {
1646 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1647 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1648 return 2;
1649 yysize = yysize1;
1650 }
1651
1652 if (*yymsg_alloc < yysize)
1653 {
1654 *yymsg_alloc = 2 * yysize;
1655 if (! (yysize <= *yymsg_alloc
1656 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1657 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1658 return 1;
1659 }
1660
1661 /* Avoid sprintf, as that infringes on the user's name space.
1662 Don't have undefined behavior even if the translation
1663 produced a string with the wrong number of "%s"s. */
1664 {
1665 char *yyp = *yymsg;
1666 int yyi = 0;
1667 while ((*yyp = *yyformat) != '\0')
1668 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1669 {
1670 yyp += yytnamerr (yyp, yyarg[yyi++]);
1671 yyformat += 2;
1672 }
1673 else
1674 {
1675 yyp++;
1676 yyformat++;
1677 }
1678 }
1679 return 0;
1680 }
1681 #endif /* YYERROR_VERBOSE */
1682
1683 /*-----------------------------------------------.
1684 | Release the memory associated to this symbol. |
1685 `-----------------------------------------------*/
1686
1687 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)1688 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1689 {
1690 YYUSE (yyvaluep);
1691 if (!yymsg)
1692 yymsg = "Deleting";
1693 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1694
1695 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1696 YYUSE (yytype);
1697 YY_IGNORE_MAYBE_UNINITIALIZED_END
1698 }
1699
1700
1701
1702
1703 /* The lookahead symbol. */
1704 int yychar;
1705
1706 /* The semantic value of the lookahead symbol. */
1707 YYSTYPE yylval;
1708 /* Number of syntax errors so far. */
1709 int yynerrs;
1710
1711
1712 /*----------.
1713 | yyparse. |
1714 `----------*/
1715
1716 int
yyparse(void)1717 yyparse (void)
1718 {
1719 int yystate;
1720 /* Number of tokens to shift before error messages enabled. */
1721 int yyerrstatus;
1722
1723 /* The stacks and their tools:
1724 'yyss': related to states.
1725 'yyvs': related to semantic values.
1726
1727 Refer to the stacks through separate pointers, to allow yyoverflow
1728 to reallocate them elsewhere. */
1729
1730 /* The state stack. */
1731 yytype_int16 yyssa[YYINITDEPTH];
1732 yytype_int16 *yyss;
1733 yytype_int16 *yyssp;
1734
1735 /* The semantic value stack. */
1736 YYSTYPE yyvsa[YYINITDEPTH];
1737 YYSTYPE *yyvs;
1738 YYSTYPE *yyvsp;
1739
1740 YYSIZE_T yystacksize;
1741
1742 int yyn;
1743 int yyresult;
1744 /* Lookahead token as an internal (translated) token number. */
1745 int yytoken = 0;
1746 /* The variables used to return semantic value and location from the
1747 action routines. */
1748 YYSTYPE yyval;
1749
1750 #if YYERROR_VERBOSE
1751 /* Buffer for error messages, and its allocated size. */
1752 char yymsgbuf[128];
1753 char *yymsg = yymsgbuf;
1754 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1755 #endif
1756
1757 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1758
1759 /* The number of symbols on the RHS of the reduced rule.
1760 Keep to zero when no symbol should be popped. */
1761 int yylen = 0;
1762
1763 yyssp = yyss = yyssa;
1764 yyvsp = yyvs = yyvsa;
1765 yystacksize = YYINITDEPTH;
1766
1767 YYDPRINTF ((stderr, "Starting parse\n"));
1768
1769 yystate = 0;
1770 yyerrstatus = 0;
1771 yynerrs = 0;
1772 yychar = YYEMPTY; /* Cause a token to be read. */
1773 goto yysetstate;
1774
1775 /*------------------------------------------------------------.
1776 | yynewstate -- Push a new state, which is found in yystate. |
1777 `------------------------------------------------------------*/
1778 yynewstate:
1779 /* In all cases, when you get here, the value and location stacks
1780 have just been pushed. So pushing a state here evens the stacks. */
1781 yyssp++;
1782
1783 yysetstate:
1784 *yyssp = yystate;
1785
1786 if (yyss + yystacksize - 1 <= yyssp)
1787 {
1788 /* Get the current used size of the three stacks, in elements. */
1789 YYSIZE_T yysize = yyssp - yyss + 1;
1790
1791 #ifdef yyoverflow
1792 {
1793 /* Give user a chance to reallocate the stack. Use copies of
1794 these so that the &'s don't force the real ones into
1795 memory. */
1796 YYSTYPE *yyvs1 = yyvs;
1797 yytype_int16 *yyss1 = yyss;
1798
1799 /* Each stack pointer address is followed by the size of the
1800 data in use in that stack, in bytes. This used to be a
1801 conditional around just the two extra args, but that might
1802 be undefined if yyoverflow is a macro. */
1803 yyoverflow (YY_("memory exhausted"),
1804 &yyss1, yysize * sizeof (*yyssp),
1805 &yyvs1, yysize * sizeof (*yyvsp),
1806 &yystacksize);
1807
1808 yyss = yyss1;
1809 yyvs = yyvs1;
1810 }
1811 #else /* no yyoverflow */
1812 # ifndef YYSTACK_RELOCATE
1813 goto yyexhaustedlab;
1814 # else
1815 /* Extend the stack our own way. */
1816 if (YYMAXDEPTH <= yystacksize)
1817 goto yyexhaustedlab;
1818 yystacksize *= 2;
1819 if (YYMAXDEPTH < yystacksize)
1820 yystacksize = YYMAXDEPTH;
1821
1822 {
1823 yytype_int16 *yyss1 = yyss;
1824 union yyalloc *yyptr =
1825 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1826 if (! yyptr)
1827 goto yyexhaustedlab;
1828 YYSTACK_RELOCATE (yyss_alloc, yyss);
1829 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1830 # undef YYSTACK_RELOCATE
1831 if (yyss1 != yyssa)
1832 YYSTACK_FREE (yyss1);
1833 }
1834 # endif
1835 #endif /* no yyoverflow */
1836
1837 yyssp = yyss + yysize - 1;
1838 yyvsp = yyvs + yysize - 1;
1839
1840 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1841 (unsigned long int) yystacksize));
1842
1843 if (yyss + yystacksize - 1 <= yyssp)
1844 YYABORT;
1845 }
1846
1847 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1848
1849 if (yystate == YYFINAL)
1850 YYACCEPT;
1851
1852 goto yybackup;
1853
1854 /*-----------.
1855 | yybackup. |
1856 `-----------*/
1857 yybackup:
1858
1859 /* Do appropriate processing given the current state. Read a
1860 lookahead token if we need one and don't already have one. */
1861
1862 /* First try to decide what to do without reference to lookahead token. */
1863 yyn = yypact[yystate];
1864 if (yypact_value_is_default (yyn))
1865 goto yydefault;
1866
1867 /* Not known => get a lookahead token if don't already have one. */
1868
1869 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1870 if (yychar == YYEMPTY)
1871 {
1872 YYDPRINTF ((stderr, "Reading a token: "));
1873 yychar = yylex ();
1874 }
1875
1876 if (yychar <= YYEOF)
1877 {
1878 yychar = yytoken = YYEOF;
1879 YYDPRINTF ((stderr, "Now at end of input.\n"));
1880 }
1881 else
1882 {
1883 yytoken = YYTRANSLATE (yychar);
1884 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1885 }
1886
1887 /* If the proper action on seeing token YYTOKEN is to reduce or to
1888 detect an error, take that action. */
1889 yyn += yytoken;
1890 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1891 goto yydefault;
1892 yyn = yytable[yyn];
1893 if (yyn <= 0)
1894 {
1895 if (yytable_value_is_error (yyn))
1896 goto yyerrlab;
1897 yyn = -yyn;
1898 goto yyreduce;
1899 }
1900
1901 /* Count tokens shifted since error; after three, turn off error
1902 status. */
1903 if (yyerrstatus)
1904 yyerrstatus--;
1905
1906 /* Shift the lookahead token. */
1907 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1908
1909 /* Discard the shifted token. */
1910 yychar = YYEMPTY;
1911
1912 yystate = yyn;
1913 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1914 *++yyvsp = yylval;
1915 YY_IGNORE_MAYBE_UNINITIALIZED_END
1916
1917 goto yynewstate;
1918
1919
1920 /*-----------------------------------------------------------.
1921 | yydefault -- do the default action for the current state. |
1922 `-----------------------------------------------------------*/
1923 yydefault:
1924 yyn = yydefact[yystate];
1925 if (yyn == 0)
1926 goto yyerrlab;
1927 goto yyreduce;
1928
1929
1930 /*-----------------------------.
1931 | yyreduce -- Do a reduction. |
1932 `-----------------------------*/
1933 yyreduce:
1934 /* yyn is the number of a rule to reduce with. */
1935 yylen = yyr2[yyn];
1936
1937 /* If YYLEN is nonzero, implement the default value of the action:
1938 '$$ = $1'.
1939
1940 Otherwise, the following line sets YYVAL to garbage.
1941 This behavior is undocumented and Bison
1942 users should not rely upon it. Assigning to YYVAL
1943 unconditionally makes the parser a bit smaller, and it avoids a
1944 GCC warning that YYVAL may be used uninitialized. */
1945 yyval = yyvsp[1-yylen];
1946
1947
1948 YY_REDUCE_PRINT (yyn);
1949 switch (yyn)
1950 {
1951 case 2:
1952 #line 191 "camp.y" /* yacc.c:1648 */
1953 { absyntax::root = (yyvsp[0].b); }
1954 #line 1955 "camp.tab.c" /* yacc.c:1648 */
1955 break;
1956
1957 case 3:
1958 #line 195 "camp.y" /* yacc.c:1648 */
1959 { (yyval.b) = new file(lexerPos(), false); }
1960 #line 1961 "camp.tab.c" /* yacc.c:1648 */
1961 break;
1962
1963 case 4:
1964 #line 197 "camp.y" /* yacc.c:1648 */
1965 { (yyval.b) = (yyvsp[-1].b); (yyval.b)->add((yyvsp[0].run)); }
1966 #line 1967 "camp.tab.c" /* yacc.c:1648 */
1967 break;
1968
1969 case 5:
1970 #line 201 "camp.y" /* yacc.c:1648 */
1971 { (yyval.b) = new block(lexerPos(), true); }
1972 #line 1973 "camp.tab.c" /* yacc.c:1648 */
1973 break;
1974
1975 case 6:
1976 #line 203 "camp.y" /* yacc.c:1648 */
1977 { (yyval.b) = (yyvsp[-1].b); (yyval.b)->add((yyvsp[0].run)); }
1978 #line 1979 "camp.tab.c" /* yacc.c:1648 */
1979 break;
1980
1981 case 7:
1982 #line 207 "camp.y" /* yacc.c:1648 */
1983 { (yyval.n) = new simpleName((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
1984 #line 1985 "camp.tab.c" /* yacc.c:1648 */
1985 break;
1986
1987 case 8:
1988 #line 208 "camp.y" /* yacc.c:1648 */
1989 { (yyval.n) = new qualifiedName((yyvsp[-1].pos), (yyvsp[-2].n), (yyvsp[0].ps).sym); }
1990 #line 1991 "camp.tab.c" /* yacc.c:1648 */
1991 break;
1992
1993 case 9:
1994 #line 209 "camp.y" /* yacc.c:1648 */
1995 { (yyval.n) = new simpleName((yyvsp[0].ps).pos,
1996 symbol::trans("operator answer")); }
1997 #line 1998 "camp.tab.c" /* yacc.c:1648 */
1998 break;
1999
2000 case 10:
2001 #line 214 "camp.y" /* yacc.c:1648 */
2002 { (yyval.run) = (yyvsp[0].d); }
2003 #line 2004 "camp.tab.c" /* yacc.c:1648 */
2004 break;
2005
2006 case 11:
2007 #line 215 "camp.y" /* yacc.c:1648 */
2008 { (yyval.run) = (yyvsp[0].s); }
2009 #line 2010 "camp.tab.c" /* yacc.c:1648 */
2010 break;
2011
2012 case 12:
2013 #line 217 "camp.y" /* yacc.c:1648 */
2014 { (yyval.run) = new modifiedRunnable((yyvsp[-1].ml)->getPos(), (yyvsp[-1].ml), (yyvsp[0].d)); }
2015 #line 2016 "camp.tab.c" /* yacc.c:1648 */
2016 break;
2017
2018 case 13:
2019 #line 219 "camp.y" /* yacc.c:1648 */
2020 { (yyval.run) = new modifiedRunnable((yyvsp[-1].ml)->getPos(), (yyvsp[-1].ml), (yyvsp[0].s)); }
2021 #line 2022 "camp.tab.c" /* yacc.c:1648 */
2022 break;
2023
2024 case 14:
2025 #line 223 "camp.y" /* yacc.c:1648 */
2026 { (yyval.ml) = new modifierList((yyvsp[0].mod).pos); (yyval.ml)->add((yyvsp[0].mod).val); }
2027 #line 2028 "camp.tab.c" /* yacc.c:1648 */
2028 break;
2029
2030 case 15:
2031 #line 224 "camp.y" /* yacc.c:1648 */
2032 { (yyval.ml) = new modifierList((yyvsp[0].perm).pos); (yyval.ml)->add((yyvsp[0].perm).val); }
2033 #line 2034 "camp.tab.c" /* yacc.c:1648 */
2034 break;
2035
2036 case 16:
2037 #line 226 "camp.y" /* yacc.c:1648 */
2038 { (yyval.ml) = (yyvsp[-1].ml); (yyval.ml)->add((yyvsp[0].mod).val); }
2039 #line 2040 "camp.tab.c" /* yacc.c:1648 */
2040 break;
2041
2042 case 17:
2043 #line 228 "camp.y" /* yacc.c:1648 */
2044 { (yyval.ml) = (yyvsp[-1].ml); (yyval.ml)->add((yyvsp[0].perm).val); }
2045 #line 2046 "camp.tab.c" /* yacc.c:1648 */
2046 break;
2047
2048 case 18:
2049 #line 232 "camp.y" /* yacc.c:1648 */
2050 { (yyval.d) = (yyvsp[0].vd); }
2051 #line 2052 "camp.tab.c" /* yacc.c:1648 */
2052 break;
2053
2054 case 19:
2055 #line 233 "camp.y" /* yacc.c:1648 */
2056 { (yyval.d) = (yyvsp[0].d); }
2057 #line 2058 "camp.tab.c" /* yacc.c:1648 */
2058 break;
2059
2060 case 20:
2061 #line 234 "camp.y" /* yacc.c:1648 */
2062 { (yyval.d) = (yyvsp[0].d); }
2063 #line 2064 "camp.tab.c" /* yacc.c:1648 */
2064 break;
2065
2066 case 21:
2067 #line 236 "camp.y" /* yacc.c:1648 */
2068 { (yyval.d) = new accessdec((yyvsp[-2].pos), (yyvsp[-1].ipl)); }
2069 #line 2070 "camp.tab.c" /* yacc.c:1648 */
2070 break;
2071
2072 case 22:
2073 #line 238 "camp.y" /* yacc.c:1648 */
2074 { (yyval.d) = new unraveldec((yyvsp[-4].pos), (yyvsp[-3].n), (yyvsp[-1].ipl)); }
2075 #line 2076 "camp.tab.c" /* yacc.c:1648 */
2076 break;
2077
2078 case 23:
2079 #line 240 "camp.y" /* yacc.c:1648 */
2080 { (yyval.d) = new unraveldec((yyvsp[-4].pos), (yyvsp[-3].n), WILDCARD); }
2081 #line 2082 "camp.tab.c" /* yacc.c:1648 */
2082 break;
2083
2084 case 24:
2085 #line 241 "camp.y" /* yacc.c:1648 */
2086 { (yyval.d) = new unraveldec((yyvsp[-2].pos), (yyvsp[-1].n), WILDCARD); }
2087 #line 2088 "camp.tab.c" /* yacc.c:1648 */
2088 break;
2089
2090 case 25:
2091 #line 243 "camp.y" /* yacc.c:1648 */
2092 { (yyval.d) = new fromaccessdec((yyvsp[-4].pos), (yyvsp[-3].ps).sym, (yyvsp[-1].ipl)); }
2093 #line 2094 "camp.tab.c" /* yacc.c:1648 */
2094 break;
2095
2096 case 26:
2097 #line 245 "camp.y" /* yacc.c:1648 */
2098 { (yyval.d) = new fromaccessdec((yyvsp[-4].pos), (yyvsp[-3].ps).sym, WILDCARD); }
2099 #line 2100 "camp.tab.c" /* yacc.c:1648 */
2100 break;
2101
2102 case 27:
2103 #line 247 "camp.y" /* yacc.c:1648 */
2104 { (yyval.d) = new importdec((yyvsp[-2].pos), (yyvsp[-1].ip)); }
2105 #line 2106 "camp.tab.c" /* yacc.c:1648 */
2106 break;
2107
2108 case 28:
2109 #line 248 "camp.y" /* yacc.c:1648 */
2110 { (yyval.d) = new includedec((yyvsp[-2].pos), (yyvsp[-1].ps).sym); }
2111 #line 2112 "camp.tab.c" /* yacc.c:1648 */
2112 break;
2113
2114 case 29:
2115 #line 250 "camp.y" /* yacc.c:1648 */
2116 { (yyval.d) = new includedec((yyvsp[-2].pos), (yyvsp[-1].stre)->getString()); }
2117 #line 2118 "camp.tab.c" /* yacc.c:1648 */
2118 break;
2119
2120 case 30:
2121 #line 254 "camp.y" /* yacc.c:1648 */
2122 { (yyval.ip) = new idpair((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
2123 #line 2124 "camp.tab.c" /* yacc.c:1648 */
2124 break;
2125
2126 case 31:
2127 #line 256 "camp.y" /* yacc.c:1648 */
2128 { (yyval.ip) = new idpair((yyvsp[-2].ps).pos, (yyvsp[-2].ps).sym, (yyvsp[-1].ps).sym , (yyvsp[0].ps).sym); }
2129 #line 2130 "camp.tab.c" /* yacc.c:1648 */
2130 break;
2131
2132 case 32:
2133 #line 260 "camp.y" /* yacc.c:1648 */
2134 { (yyval.ipl) = new idpairlist(); (yyval.ipl)->add((yyvsp[0].ip)); }
2135 #line 2136 "camp.tab.c" /* yacc.c:1648 */
2136 break;
2137
2138 case 33:
2139 #line 262 "camp.y" /* yacc.c:1648 */
2140 { (yyval.ipl) = (yyvsp[-2].ipl); (yyval.ipl)->add((yyvsp[0].ip)); }
2141 #line 2142 "camp.tab.c" /* yacc.c:1648 */
2142 break;
2143
2144 case 34:
2145 #line 266 "camp.y" /* yacc.c:1648 */
2146 { (yyval.ps) = (yyvsp[0].ps); }
2147 #line 2148 "camp.tab.c" /* yacc.c:1648 */
2148 break;
2149
2150 case 35:
2151 #line 267 "camp.y" /* yacc.c:1648 */
2152 { (yyval.ps).pos = (yyvsp[0].stre)->getPos();
2153 (yyval.ps).sym = symbol::literalTrans((yyvsp[0].stre)->getString()); }
2154 #line 2155 "camp.tab.c" /* yacc.c:1648 */
2155 break;
2156
2157 case 36:
2158 #line 272 "camp.y" /* yacc.c:1648 */
2159 { (yyval.ip) = new idpair((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
2160 #line 2161 "camp.tab.c" /* yacc.c:1648 */
2161 break;
2162
2163 case 37:
2164 #line 274 "camp.y" /* yacc.c:1648 */
2165 { (yyval.ip) = new idpair((yyvsp[-2].ps).pos, (yyvsp[-2].ps).sym, (yyvsp[-1].ps).sym , (yyvsp[0].ps).sym); }
2166 #line 2167 "camp.tab.c" /* yacc.c:1648 */
2167 break;
2168
2169 case 38:
2170 #line 278 "camp.y" /* yacc.c:1648 */
2171 { (yyval.ipl) = new idpairlist(); (yyval.ipl)->add((yyvsp[0].ip)); }
2172 #line 2173 "camp.tab.c" /* yacc.c:1648 */
2173 break;
2174
2175 case 39:
2176 #line 280 "camp.y" /* yacc.c:1648 */
2177 { (yyval.ipl) = (yyvsp[-2].ipl); (yyval.ipl)->add((yyvsp[0].ip)); }
2178 #line 2179 "camp.tab.c" /* yacc.c:1648 */
2179 break;
2180
2181 case 40:
2182 #line 284 "camp.y" /* yacc.c:1648 */
2183 { (yyval.vd) = (yyvsp[-1].vd); }
2184 #line 2185 "camp.tab.c" /* yacc.c:1648 */
2185 break;
2186
2187 case 41:
2188 #line 288 "camp.y" /* yacc.c:1648 */
2189 { (yyval.vd) = new vardec((yyvsp[-1].t)->getPos(), (yyvsp[-1].t), (yyvsp[0].dil)); }
2190 #line 2191 "camp.tab.c" /* yacc.c:1648 */
2191 break;
2192
2193 case 42:
2194 #line 292 "camp.y" /* yacc.c:1648 */
2195 { (yyval.t) = (yyvsp[0].t); }
2196 #line 2197 "camp.tab.c" /* yacc.c:1648 */
2197 break;
2198
2199 case 43:
2200 #line 293 "camp.y" /* yacc.c:1648 */
2201 { (yyval.t) = new arrayTy((yyvsp[-1].n), (yyvsp[0].dim)); }
2202 #line 2203 "camp.tab.c" /* yacc.c:1648 */
2203 break;
2204
2205 case 44:
2206 #line 297 "camp.y" /* yacc.c:1648 */
2207 { (yyval.t) = new nameTy((yyvsp[0].n)); }
2208 #line 2209 "camp.tab.c" /* yacc.c:1648 */
2209 break;
2210
2211 case 45:
2212 #line 301 "camp.y" /* yacc.c:1648 */
2213 { (yyval.dim) = new dimensions((yyvsp[-1].pos)); }
2214 #line 2215 "camp.tab.c" /* yacc.c:1648 */
2215 break;
2216
2217 case 46:
2218 #line 302 "camp.y" /* yacc.c:1648 */
2219 { (yyval.dim) = (yyvsp[-2].dim); (yyval.dim)->increase(); }
2220 #line 2221 "camp.tab.c" /* yacc.c:1648 */
2221 break;
2222
2223 case 47:
2224 #line 306 "camp.y" /* yacc.c:1648 */
2225 { (yyval.elist) = new explist((yyvsp[-2].pos)); (yyval.elist)->add((yyvsp[-1].e)); }
2226 #line 2227 "camp.tab.c" /* yacc.c:1648 */
2227 break;
2228
2229 case 48:
2230 #line 308 "camp.y" /* yacc.c:1648 */
2231 { (yyval.elist) = (yyvsp[-3].elist); (yyval.elist)->add((yyvsp[-1].e)); }
2232 #line 2233 "camp.tab.c" /* yacc.c:1648 */
2233 break;
2234
2235 case 49:
2236 #line 312 "camp.y" /* yacc.c:1648 */
2237 { (yyval.dil) = new decidlist((yyvsp[0].di)->getPos()); (yyval.dil)->add((yyvsp[0].di)); }
2238 #line 2239 "camp.tab.c" /* yacc.c:1648 */
2239 break;
2240
2241 case 50:
2242 #line 314 "camp.y" /* yacc.c:1648 */
2243 { (yyval.dil) = (yyvsp[-2].dil); (yyval.dil)->add((yyvsp[0].di)); }
2244 #line 2245 "camp.tab.c" /* yacc.c:1648 */
2245 break;
2246
2247 case 51:
2248 #line 318 "camp.y" /* yacc.c:1648 */
2249 { (yyval.di) = new decid((yyvsp[0].dis)->getPos(), (yyvsp[0].dis)); }
2250 #line 2251 "camp.tab.c" /* yacc.c:1648 */
2251 break;
2252
2253 case 52:
2254 #line 320 "camp.y" /* yacc.c:1648 */
2255 { (yyval.di) = new decid((yyvsp[-2].dis)->getPos(), (yyvsp[-2].dis), (yyvsp[0].vi)); }
2256 #line 2257 "camp.tab.c" /* yacc.c:1648 */
2257 break;
2258
2259 case 53:
2260 #line 324 "camp.y" /* yacc.c:1648 */
2261 { (yyval.dis) = new decidstart((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
2262 #line 2263 "camp.tab.c" /* yacc.c:1648 */
2263 break;
2264
2265 case 54:
2266 #line 325 "camp.y" /* yacc.c:1648 */
2267 { (yyval.dis) = new decidstart((yyvsp[-1].ps).pos, (yyvsp[-1].ps).sym, (yyvsp[0].dim)); }
2268 #line 2269 "camp.tab.c" /* yacc.c:1648 */
2269 break;
2270
2271 case 55:
2272 #line 326 "camp.y" /* yacc.c:1648 */
2273 { (yyval.dis) = new fundecidstart((yyvsp[-2].ps).pos, (yyvsp[-2].ps).sym, 0,
2274 new formals((yyvsp[-1].pos))); }
2275 #line 2276 "camp.tab.c" /* yacc.c:1648 */
2276 break;
2277
2278 case 56:
2279 #line 329 "camp.y" /* yacc.c:1648 */
2280 { (yyval.dis) = new fundecidstart((yyvsp[-3].ps).pos, (yyvsp[-3].ps).sym, 0, (yyvsp[-1].fls)); }
2281 #line 2282 "camp.tab.c" /* yacc.c:1648 */
2282 break;
2283
2284 case 57:
2285 #line 333 "camp.y" /* yacc.c:1648 */
2286 { (yyval.vi) = (yyvsp[0].e); }
2287 #line 2288 "camp.tab.c" /* yacc.c:1648 */
2288 break;
2289
2290 case 58:
2291 #line 334 "camp.y" /* yacc.c:1648 */
2292 { (yyval.vi) = (yyvsp[0].ai); }
2293 #line 2294 "camp.tab.c" /* yacc.c:1648 */
2294 break;
2295
2296 case 59:
2297 #line 339 "camp.y" /* yacc.c:1648 */
2298 { (yyval.b) = (yyvsp[-1].b); }
2299 #line 2300 "camp.tab.c" /* yacc.c:1648 */
2300 break;
2301
2302 case 60:
2303 #line 343 "camp.y" /* yacc.c:1648 */
2304 { (yyval.ai) = new arrayinit((yyvsp[-1].pos)); }
2305 #line 2306 "camp.tab.c" /* yacc.c:1648 */
2306 break;
2307
2308 case 61:
2309 #line 345 "camp.y" /* yacc.c:1648 */
2310 { (yyval.ai) = new arrayinit((yyvsp[-3].pos)); (yyval.ai)->addRest((yyvsp[-1].vi)); }
2311 #line 2312 "camp.tab.c" /* yacc.c:1648 */
2312 break;
2313
2314 case 62:
2315 #line 347 "camp.y" /* yacc.c:1648 */
2316 { (yyval.ai) = (yyvsp[-1].ai); }
2317 #line 2318 "camp.tab.c" /* yacc.c:1648 */
2318 break;
2319
2320 case 63:
2321 #line 349 "camp.y" /* yacc.c:1648 */
2322 { (yyval.ai) = (yyvsp[-3].ai); (yyval.ai)->addRest((yyvsp[-1].vi)); }
2323 #line 2324 "camp.tab.c" /* yacc.c:1648 */
2324 break;
2325
2326 case 64:
2327 #line 353 "camp.y" /* yacc.c:1648 */
2328 { (yyval.ai) = new arrayinit((yyvsp[0].pos)); }
2329 #line 2330 "camp.tab.c" /* yacc.c:1648 */
2330 break;
2331
2332 case 65:
2333 #line 354 "camp.y" /* yacc.c:1648 */
2334 { (yyval.ai) = (yyvsp[0].ai); }
2335 #line 2336 "camp.tab.c" /* yacc.c:1648 */
2336 break;
2337
2338 case 66:
2339 #line 355 "camp.y" /* yacc.c:1648 */
2340 { (yyval.ai) = (yyvsp[-1].ai); }
2341 #line 2342 "camp.tab.c" /* yacc.c:1648 */
2342 break;
2343
2344 case 67:
2345 #line 359 "camp.y" /* yacc.c:1648 */
2346 { (yyval.ai) = new arrayinit((yyvsp[0].vi)->getPos());
2347 (yyval.ai)->add((yyvsp[0].vi));}
2348 #line 2349 "camp.tab.c" /* yacc.c:1648 */
2349 break;
2350
2351 case 68:
2352 #line 362 "camp.y" /* yacc.c:1648 */
2353 { (yyval.ai) = (yyvsp[-2].ai); (yyval.ai)->add((yyvsp[0].vi)); }
2354 #line 2355 "camp.tab.c" /* yacc.c:1648 */
2355 break;
2356
2357 case 69:
2358 #line 366 "camp.y" /* yacc.c:1648 */
2359 { (yyval.fls) = new formals((yyvsp[0].fl)->getPos()); (yyval.fls)->add((yyvsp[0].fl)); }
2360 #line 2361 "camp.tab.c" /* yacc.c:1648 */
2361 break;
2362
2363 case 70:
2364 #line 367 "camp.y" /* yacc.c:1648 */
2365 { (yyval.fls) = new formals((yyvsp[-1].pos)); (yyval.fls)->addRest((yyvsp[0].fl)); }
2366 #line 2367 "camp.tab.c" /* yacc.c:1648 */
2367 break;
2368
2369 case 71:
2370 #line 369 "camp.y" /* yacc.c:1648 */
2371 { (yyval.fls) = (yyvsp[-2].fls); (yyval.fls)->add((yyvsp[0].fl)); }
2372 #line 2373 "camp.tab.c" /* yacc.c:1648 */
2373 break;
2374
2375 case 72:
2376 #line 371 "camp.y" /* yacc.c:1648 */
2377 { (yyval.fls) = (yyvsp[-2].fls); (yyval.fls)->addRest((yyvsp[0].fl)); }
2378 #line 2379 "camp.tab.c" /* yacc.c:1648 */
2379 break;
2380
2381 case 73:
2382 #line 375 "camp.y" /* yacc.c:1648 */
2383 { (yyval.boo) = true; }
2384 #line 2385 "camp.tab.c" /* yacc.c:1648 */
2385 break;
2386
2387 case 74:
2388 #line 376 "camp.y" /* yacc.c:1648 */
2389 { (yyval.boo) = false; }
2390 #line 2391 "camp.tab.c" /* yacc.c:1648 */
2391 break;
2392
2393 case 75:
2394 #line 381 "camp.y" /* yacc.c:1648 */
2395 { (yyval.fl) = new formal((yyvsp[0].t)->getPos(), (yyvsp[0].t), 0, 0, (yyvsp[-1].boo), 0); }
2396 #line 2397 "camp.tab.c" /* yacc.c:1648 */
2397 break;
2398
2399 case 76:
2400 #line 383 "camp.y" /* yacc.c:1648 */
2401 { (yyval.fl) = new formal((yyvsp[-1].t)->getPos(), (yyvsp[-1].t), (yyvsp[0].dis), 0, (yyvsp[-2].boo), 0); }
2402 #line 2403 "camp.tab.c" /* yacc.c:1648 */
2403 break;
2404
2405 case 77:
2406 #line 385 "camp.y" /* yacc.c:1648 */
2407 { (yyval.fl) = new formal((yyvsp[-3].t)->getPos(), (yyvsp[-3].t), (yyvsp[-2].dis), (yyvsp[0].vi), (yyvsp[-4].boo), 0); }
2408 #line 2409 "camp.tab.c" /* yacc.c:1648 */
2409 break;
2410
2411 case 78:
2412 #line 388 "camp.y" /* yacc.c:1648 */
2413 { bool k = checkKeyword((yyvsp[-1].ps).pos, (yyvsp[-1].ps).sym);
2414 (yyval.fl) = new formal((yyvsp[-2].t)->getPos(), (yyvsp[-2].t), (yyvsp[0].dis), 0, (yyvsp[-3].boo), k); }
2415 #line 2416 "camp.tab.c" /* yacc.c:1648 */
2416 break;
2417
2418 case 79:
2419 #line 391 "camp.y" /* yacc.c:1648 */
2420 { bool k = checkKeyword((yyvsp[-3].ps).pos, (yyvsp[-3].ps).sym);
2421 (yyval.fl) = new formal((yyvsp[-4].t)->getPos(), (yyvsp[-4].t), (yyvsp[-2].dis), (yyvsp[0].vi), (yyvsp[-5].boo), k); }
2422 #line 2423 "camp.tab.c" /* yacc.c:1648 */
2423 break;
2424
2425 case 80:
2426 #line 397 "camp.y" /* yacc.c:1648 */
2427 { (yyval.d) = new fundec((yyvsp[-2].pos), (yyvsp[-4].t), (yyvsp[-3].ps).sym, new formals((yyvsp[-2].pos)), (yyvsp[0].s)); }
2428 #line 2429 "camp.tab.c" /* yacc.c:1648 */
2429 break;
2430
2431 case 81:
2432 #line 399 "camp.y" /* yacc.c:1648 */
2433 { (yyval.d) = new fundec((yyvsp[-3].pos), (yyvsp[-5].t), (yyvsp[-4].ps).sym, (yyvsp[-2].fls), (yyvsp[0].s)); }
2434 #line 2435 "camp.tab.c" /* yacc.c:1648 */
2435 break;
2436
2437 case 82:
2438 #line 403 "camp.y" /* yacc.c:1648 */
2439 { (yyval.d) = new recorddec((yyvsp[-2].pos), (yyvsp[-1].ps).sym, (yyvsp[0].b)); }
2440 #line 2441 "camp.tab.c" /* yacc.c:1648 */
2441 break;
2442
2443 case 83:
2444 #line 404 "camp.y" /* yacc.c:1648 */
2445 { (yyval.d) = new typedec((yyvsp[-1].pos), (yyvsp[0].vd)); }
2446 #line 2447 "camp.tab.c" /* yacc.c:1648 */
2447 break;
2448
2449 case 84:
2450 #line 408 "camp.y" /* yacc.c:1648 */
2451 { (yyval.slice) = new slice((yyvsp[0].pos), 0, 0); }
2452 #line 2453 "camp.tab.c" /* yacc.c:1648 */
2453 break;
2454
2455 case 85:
2456 #line 409 "camp.y" /* yacc.c:1648 */
2457 { (yyval.slice) = new slice((yyvsp[0].pos), (yyvsp[-1].e), 0); }
2458 #line 2459 "camp.tab.c" /* yacc.c:1648 */
2459 break;
2460
2461 case 86:
2462 #line 410 "camp.y" /* yacc.c:1648 */
2463 { (yyval.slice) = new slice((yyvsp[-1].pos), 0, (yyvsp[0].e)); }
2464 #line 2465 "camp.tab.c" /* yacc.c:1648 */
2465 break;
2466
2467 case 87:
2468 #line 411 "camp.y" /* yacc.c:1648 */
2469 { (yyval.slice) = new slice((yyvsp[-1].pos), (yyvsp[-2].e), (yyvsp[0].e)); }
2470 #line 2471 "camp.tab.c" /* yacc.c:1648 */
2471 break;
2472
2473 case 88:
2474 #line 415 "camp.y" /* yacc.c:1648 */
2475 { (yyval.e) = new fieldExp((yyvsp[-1].pos), (yyvsp[-2].e), (yyvsp[0].ps).sym); }
2476 #line 2477 "camp.tab.c" /* yacc.c:1648 */
2477 break;
2478
2479 case 89:
2480 #line 416 "camp.y" /* yacc.c:1648 */
2481 { (yyval.e) = new subscriptExp((yyvsp[-2].pos),
2482 new nameExp((yyvsp[-3].n)->getPos(), (yyvsp[-3].n)), (yyvsp[-1].e)); }
2483 #line 2484 "camp.tab.c" /* yacc.c:1648 */
2484 break;
2485
2486 case 90:
2487 #line 418 "camp.y" /* yacc.c:1648 */
2488 { (yyval.e) = new subscriptExp((yyvsp[-2].pos), (yyvsp[-3].e), (yyvsp[-1].e)); }
2489 #line 2490 "camp.tab.c" /* yacc.c:1648 */
2490 break;
2491
2492 case 91:
2493 #line 419 "camp.y" /* yacc.c:1648 */
2494 { (yyval.e) = new sliceExp((yyvsp[-2].pos),
2495 new nameExp((yyvsp[-3].n)->getPos(), (yyvsp[-3].n)), (yyvsp[-1].slice)); }
2496 #line 2497 "camp.tab.c" /* yacc.c:1648 */
2497 break;
2498
2499 case 92:
2500 #line 421 "camp.y" /* yacc.c:1648 */
2501 { (yyval.e) = new sliceExp((yyvsp[-2].pos), (yyvsp[-3].e), (yyvsp[-1].slice)); }
2502 #line 2503 "camp.tab.c" /* yacc.c:1648 */
2503 break;
2504
2505 case 93:
2506 #line 422 "camp.y" /* yacc.c:1648 */
2507 { (yyval.e) = new callExp((yyvsp[-1].pos),
2508 new nameExp((yyvsp[-2].n)->getPos(), (yyvsp[-2].n)),
2509 new arglist()); }
2510 #line 2511 "camp.tab.c" /* yacc.c:1648 */
2511 break;
2512
2513 case 94:
2514 #line 426 "camp.y" /* yacc.c:1648 */
2515 { (yyval.e) = new callExp((yyvsp[-2].pos),
2516 new nameExp((yyvsp[-3].n)->getPos(), (yyvsp[-3].n)),
2517 (yyvsp[-1].alist)); }
2518 #line 2519 "camp.tab.c" /* yacc.c:1648 */
2519 break;
2520
2521 case 95:
2522 #line 429 "camp.y" /* yacc.c:1648 */
2523 { (yyval.e) = new callExp((yyvsp[-1].pos), (yyvsp[-2].e), new arglist()); }
2524 #line 2525 "camp.tab.c" /* yacc.c:1648 */
2525 break;
2526
2527 case 96:
2528 #line 431 "camp.y" /* yacc.c:1648 */
2529 { (yyval.e) = new callExp((yyvsp[-2].pos), (yyvsp[-3].e), (yyvsp[-1].alist)); }
2530 #line 2531 "camp.tab.c" /* yacc.c:1648 */
2531 break;
2532
2533 case 97:
2534 #line 433 "camp.y" /* yacc.c:1648 */
2535 { (yyval.e) = (yyvsp[-1].e); }
2536 #line 2537 "camp.tab.c" /* yacc.c:1648 */
2537 break;
2538
2539 case 98:
2540 #line 435 "camp.y" /* yacc.c:1648 */
2541 { (yyval.e) = new nameExp((yyvsp[-1].n)->getPos(), (yyvsp[-1].n)); }
2542 #line 2543 "camp.tab.c" /* yacc.c:1648 */
2543 break;
2544
2545 case 99:
2546 #line 436 "camp.y" /* yacc.c:1648 */
2547 { (yyval.e) = new thisExp((yyvsp[0].pos)); }
2548 #line 2549 "camp.tab.c" /* yacc.c:1648 */
2549 break;
2550
2551 case 100:
2552 #line 440 "camp.y" /* yacc.c:1648 */
2553 { (yyval.arg).name = symbol::nullsym; (yyval.arg).val=(yyvsp[0].e); }
2554 #line 2555 "camp.tab.c" /* yacc.c:1648 */
2555 break;
2556
2557 case 101:
2558 #line 441 "camp.y" /* yacc.c:1648 */
2559 { (yyval.arg).name = (yyvsp[-2].ps).sym; (yyval.arg).val=(yyvsp[0].e); }
2560 #line 2561 "camp.tab.c" /* yacc.c:1648 */
2561 break;
2562
2563 case 102:
2564 #line 445 "camp.y" /* yacc.c:1648 */
2565 { (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[0].arg)); }
2566 #line 2567 "camp.tab.c" /* yacc.c:1648 */
2567 break;
2568
2569 case 103:
2570 #line 447 "camp.y" /* yacc.c:1648 */
2571 { (yyval.alist) = new arglist(); (yyval.alist)->addRest((yyvsp[0].arg)); }
2572 #line 2573 "camp.tab.c" /* yacc.c:1648 */
2573 break;
2574
2575 case 104:
2576 #line 449 "camp.y" /* yacc.c:1648 */
2577 { (yyval.alist) = (yyvsp[-2].alist); (yyval.alist)->add((yyvsp[0].arg)); }
2578 #line 2579 "camp.tab.c" /* yacc.c:1648 */
2579 break;
2580
2581 case 105:
2582 #line 451 "camp.y" /* yacc.c:1648 */
2583 { (yyval.alist) = (yyvsp[-2].alist); (yyval.alist)->addRest((yyvsp[0].arg)); }
2584 #line 2585 "camp.tab.c" /* yacc.c:1648 */
2585 break;
2586
2587 case 106:
2588 #line 456 "camp.y" /* yacc.c:1648 */
2589 { (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[-2].e)); (yyval.alist)->add((yyvsp[0].e)); }
2590 #line 2591 "camp.tab.c" /* yacc.c:1648 */
2591 break;
2592
2593 case 107:
2594 #line 457 "camp.y" /* yacc.c:1648 */
2595 { (yyval.alist) = (yyvsp[-2].alist); (yyval.alist)->add((yyvsp[0].e)); }
2596 #line 2597 "camp.tab.c" /* yacc.c:1648 */
2597 break;
2598
2599 case 108:
2600 #line 461 "camp.y" /* yacc.c:1648 */
2601 { (yyval.e) = new nameExp((yyvsp[0].n)->getPos(), (yyvsp[0].n)); }
2602 #line 2603 "camp.tab.c" /* yacc.c:1648 */
2603 break;
2604
2605 case 109:
2606 #line 462 "camp.y" /* yacc.c:1648 */
2607 { (yyval.e) = (yyvsp[0].e); }
2608 #line 2609 "camp.tab.c" /* yacc.c:1648 */
2609 break;
2610
2611 case 110:
2612 #line 463 "camp.y" /* yacc.c:1648 */
2613 { (yyval.e) = (yyvsp[0].e); }
2614 #line 2615 "camp.tab.c" /* yacc.c:1648 */
2615 break;
2616
2617 case 111:
2618 #line 464 "camp.y" /* yacc.c:1648 */
2619 { (yyval.e) = (yyvsp[0].stre); }
2620 #line 2621 "camp.tab.c" /* yacc.c:1648 */
2621 break;
2622
2623 case 112:
2624 #line 466 "camp.y" /* yacc.c:1648 */
2625 { (yyval.e) = new scaleExp((yyvsp[-1].e)->getPos(), (yyvsp[-1].e), (yyvsp[0].e)); }
2626 #line 2627 "camp.tab.c" /* yacc.c:1648 */
2627 break;
2628
2629 case 113:
2630 #line 468 "camp.y" /* yacc.c:1648 */
2631 { (yyval.e) = new castExp((yyvsp[-2].n)->getPos(), new nameTy((yyvsp[-2].n)), (yyvsp[0].e)); }
2632 #line 2633 "camp.tab.c" /* yacc.c:1648 */
2633 break;
2634
2635 case 114:
2636 #line 470 "camp.y" /* yacc.c:1648 */
2637 { (yyval.e) = new castExp((yyvsp[-3].n)->getPos(), new arrayTy((yyvsp[-3].n), (yyvsp[-2].dim)), (yyvsp[0].e)); }
2638 #line 2639 "camp.tab.c" /* yacc.c:1648 */
2639 break;
2640
2641 case 115:
2642 #line 472 "camp.y" /* yacc.c:1648 */
2643 { (yyval.e) = new unaryExp((yyvsp[-1].ps).pos, (yyvsp[0].e), (yyvsp[-1].ps).sym); }
2644 #line 2645 "camp.tab.c" /* yacc.c:1648 */
2645 break;
2646
2647 case 116:
2648 #line 474 "camp.y" /* yacc.c:1648 */
2649 { (yyval.e) = new unaryExp((yyvsp[-1].ps).pos, (yyvsp[0].e), (yyvsp[-1].ps).sym); }
2650 #line 2651 "camp.tab.c" /* yacc.c:1648 */
2651 break;
2652
2653 case 117:
2654 #line 475 "camp.y" /* yacc.c:1648 */
2655 { (yyval.e) = new unaryExp((yyvsp[-1].ps).pos, (yyvsp[0].e), (yyvsp[-1].ps).sym); }
2656 #line 2657 "camp.tab.c" /* yacc.c:1648 */
2657 break;
2658
2659 case 118:
2660 #line 476 "camp.y" /* yacc.c:1648 */
2661 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2662 #line 2663 "camp.tab.c" /* yacc.c:1648 */
2663 break;
2664
2665 case 119:
2666 #line 477 "camp.y" /* yacc.c:1648 */
2667 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2668 #line 2669 "camp.tab.c" /* yacc.c:1648 */
2669 break;
2670
2671 case 120:
2672 #line 478 "camp.y" /* yacc.c:1648 */
2673 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2674 #line 2675 "camp.tab.c" /* yacc.c:1648 */
2675 break;
2676
2677 case 121:
2678 #line 479 "camp.y" /* yacc.c:1648 */
2679 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2680 #line 2681 "camp.tab.c" /* yacc.c:1648 */
2681 break;
2682
2683 case 122:
2684 #line 480 "camp.y" /* yacc.c:1648 */
2685 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2686 #line 2687 "camp.tab.c" /* yacc.c:1648 */
2687 break;
2688
2689 case 123:
2690 #line 481 "camp.y" /* yacc.c:1648 */
2691 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2692 #line 2693 "camp.tab.c" /* yacc.c:1648 */
2693 break;
2694
2695 case 124:
2696 #line 482 "camp.y" /* yacc.c:1648 */
2697 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2698 #line 2699 "camp.tab.c" /* yacc.c:1648 */
2699 break;
2700
2701 case 125:
2702 #line 483 "camp.y" /* yacc.c:1648 */
2703 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2704 #line 2705 "camp.tab.c" /* yacc.c:1648 */
2705 break;
2706
2707 case 126:
2708 #line 484 "camp.y" /* yacc.c:1648 */
2709 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2710 #line 2711 "camp.tab.c" /* yacc.c:1648 */
2711 break;
2712
2713 case 127:
2714 #line 485 "camp.y" /* yacc.c:1648 */
2715 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2716 #line 2717 "camp.tab.c" /* yacc.c:1648 */
2717 break;
2718
2719 case 128:
2720 #line 486 "camp.y" /* yacc.c:1648 */
2721 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2722 #line 2723 "camp.tab.c" /* yacc.c:1648 */
2723 break;
2724
2725 case 129:
2726 #line 487 "camp.y" /* yacc.c:1648 */
2727 { (yyval.e) = new equalityExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2728 #line 2729 "camp.tab.c" /* yacc.c:1648 */
2729 break;
2730
2731 case 130:
2732 #line 488 "camp.y" /* yacc.c:1648 */
2733 { (yyval.e) = new equalityExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2734 #line 2735 "camp.tab.c" /* yacc.c:1648 */
2735 break;
2736
2737 case 131:
2738 #line 489 "camp.y" /* yacc.c:1648 */
2739 { (yyval.e) = new andExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2740 #line 2741 "camp.tab.c" /* yacc.c:1648 */
2741 break;
2742
2743 case 132:
2744 #line 490 "camp.y" /* yacc.c:1648 */
2745 { (yyval.e) = new orExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2746 #line 2747 "camp.tab.c" /* yacc.c:1648 */
2747 break;
2748
2749 case 133:
2750 #line 491 "camp.y" /* yacc.c:1648 */
2751 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2752 #line 2753 "camp.tab.c" /* yacc.c:1648 */
2753 break;
2754
2755 case 134:
2756 #line 492 "camp.y" /* yacc.c:1648 */
2757 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2758 #line 2759 "camp.tab.c" /* yacc.c:1648 */
2759 break;
2760
2761 case 135:
2762 #line 493 "camp.y" /* yacc.c:1648 */
2763 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2764 #line 2765 "camp.tab.c" /* yacc.c:1648 */
2765 break;
2766
2767 case 136:
2768 #line 494 "camp.y" /* yacc.c:1648 */
2769 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2770 #line 2771 "camp.tab.c" /* yacc.c:1648 */
2771 break;
2772
2773 case 137:
2774 #line 495 "camp.y" /* yacc.c:1648 */
2775 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2776 #line 2777 "camp.tab.c" /* yacc.c:1648 */
2777 break;
2778
2779 case 138:
2780 #line 497 "camp.y" /* yacc.c:1648 */
2781 { (yyval.e) = new newRecordExp((yyvsp[-1].pos), (yyvsp[0].t)); }
2782 #line 2783 "camp.tab.c" /* yacc.c:1648 */
2783 break;
2784
2785 case 139:
2786 #line 499 "camp.y" /* yacc.c:1648 */
2787 { (yyval.e) = new newArrayExp((yyvsp[-2].pos), (yyvsp[-1].t), (yyvsp[0].elist), 0, 0); }
2788 #line 2789 "camp.tab.c" /* yacc.c:1648 */
2789 break;
2790
2791 case 140:
2792 #line 501 "camp.y" /* yacc.c:1648 */
2793 { (yyval.e) = new newArrayExp((yyvsp[-3].pos), (yyvsp[-2].t), (yyvsp[-1].elist), (yyvsp[0].dim), 0); }
2794 #line 2795 "camp.tab.c" /* yacc.c:1648 */
2795 break;
2796
2797 case 141:
2798 #line 503 "camp.y" /* yacc.c:1648 */
2799 { (yyval.e) = new newArrayExp((yyvsp[-2].pos), (yyvsp[-1].t), 0, (yyvsp[0].dim), 0); }
2800 #line 2801 "camp.tab.c" /* yacc.c:1648 */
2801 break;
2802
2803 case 142:
2804 #line 505 "camp.y" /* yacc.c:1648 */
2805 { (yyval.e) = new newArrayExp((yyvsp[-3].pos), (yyvsp[-2].t), 0, (yyvsp[-1].dim), (yyvsp[0].ai)); }
2806 #line 2807 "camp.tab.c" /* yacc.c:1648 */
2807 break;
2808
2809 case 143:
2810 #line 507 "camp.y" /* yacc.c:1648 */
2811 { (yyval.e) = new newFunctionExp((yyvsp[-4].pos), (yyvsp[-3].t), new formals((yyvsp[-2].pos)), (yyvsp[0].s)); }
2812 #line 2813 "camp.tab.c" /* yacc.c:1648 */
2813 break;
2814
2815 case 144:
2816 #line 509 "camp.y" /* yacc.c:1648 */
2817 { (yyval.e) = new newFunctionExp((yyvsp[-5].pos),
2818 new arrayTy((yyvsp[-4].t)->getPos(), (yyvsp[-4].t), (yyvsp[-3].dim)),
2819 new formals((yyvsp[-2].pos)),
2820 (yyvsp[0].s)); }
2821 #line 2822 "camp.tab.c" /* yacc.c:1648 */
2822 break;
2823
2824 case 145:
2825 #line 514 "camp.y" /* yacc.c:1648 */
2826 { (yyval.e) = new newFunctionExp((yyvsp[-5].pos), (yyvsp[-4].t), (yyvsp[-2].fls), (yyvsp[0].s)); }
2827 #line 2828 "camp.tab.c" /* yacc.c:1648 */
2828 break;
2829
2830 case 146:
2831 #line 516 "camp.y" /* yacc.c:1648 */
2832 { (yyval.e) = new newFunctionExp((yyvsp[-6].pos),
2833 new arrayTy((yyvsp[-5].t)->getPos(), (yyvsp[-5].t), (yyvsp[-4].dim)),
2834 (yyvsp[-2].fls),
2835 (yyvsp[0].s)); }
2836 #line 2837 "camp.tab.c" /* yacc.c:1648 */
2837 break;
2838
2839 case 147:
2840 #line 521 "camp.y" /* yacc.c:1648 */
2841 { (yyval.e) = new conditionalExp((yyvsp[-3].pos), (yyvsp[-4].e), (yyvsp[-2].e), (yyvsp[0].e)); }
2842 #line 2843 "camp.tab.c" /* yacc.c:1648 */
2843 break;
2844
2845 case 148:
2846 #line 522 "camp.y" /* yacc.c:1648 */
2847 { (yyval.e) = new assignExp((yyvsp[-1].pos), (yyvsp[-2].e), (yyvsp[0].e)); }
2848 #line 2849 "camp.tab.c" /* yacc.c:1648 */
2849 break;
2850
2851 case 149:
2852 #line 523 "camp.y" /* yacc.c:1648 */
2853 { (yyval.e) = new callExp((yyvsp[-2].pos), new nameExp((yyvsp[-2].pos), SYM_TUPLE), (yyvsp[-1].alist)); }
2854 #line 2855 "camp.tab.c" /* yacc.c:1648 */
2855 break;
2856
2857 case 150:
2858 #line 525 "camp.y" /* yacc.c:1648 */
2859 { (yyvsp[-1].j)->pushFront((yyvsp[-2].e)); (yyvsp[-1].j)->pushBack((yyvsp[0].e)); (yyval.e) = (yyvsp[-1].j); }
2860 #line 2861 "camp.tab.c" /* yacc.c:1648 */
2861 break;
2862
2863 case 151:
2864 #line 527 "camp.y" /* yacc.c:1648 */
2865 { (yyvsp[0].se)->setSide(camp::OUT);
2866 joinExp *jexp =
2867 new joinExp((yyvsp[0].se)->getPos(), SYM_DOTS);
2868 (yyval.e)=jexp;
2869 jexp->pushBack((yyvsp[-1].e)); jexp->pushBack((yyvsp[0].se)); }
2870 #line 2871 "camp.tab.c" /* yacc.c:1648 */
2871 break;
2872
2873 case 152:
2874 #line 533 "camp.y" /* yacc.c:1648 */
2875 { (yyval.e) = new prefixExp((yyvsp[-1].ps).pos, (yyvsp[0].e), SYM_PLUS); }
2876 #line 2877 "camp.tab.c" /* yacc.c:1648 */
2877 break;
2878
2879 case 153:
2880 #line 535 "camp.y" /* yacc.c:1648 */
2881 { (yyval.e) = new prefixExp((yyvsp[-1].ps).pos, (yyvsp[0].e), SYM_MINUS); }
2882 #line 2883 "camp.tab.c" /* yacc.c:1648 */
2883 break;
2884
2885 case 154:
2886 #line 538 "camp.y" /* yacc.c:1648 */
2887 { (yyval.e) = new postfixExp((yyvsp[0].ps).pos, (yyvsp[-1].e), SYM_PLUS); }
2888 #line 2889 "camp.tab.c" /* yacc.c:1648 */
2889 break;
2890
2891 case 155:
2892 #line 539 "camp.y" /* yacc.c:1648 */
2893 { (yyval.e) = new selfExp((yyvsp[-1].ps).pos, (yyvsp[-2].e), (yyvsp[-1].ps).sym, (yyvsp[0].e)); }
2894 #line 2895 "camp.tab.c" /* yacc.c:1648 */
2895 break;
2896
2897 case 156:
2898 #line 541 "camp.y" /* yacc.c:1648 */
2899 { (yyval.e) = new quoteExp((yyvsp[-3].pos), (yyvsp[-1].b)); }
2900 #line 2901 "camp.tab.c" /* yacc.c:1648 */
2901 break;
2902
2903 case 157:
2904 #line 547 "camp.y" /* yacc.c:1648 */
2905 { (yyval.j) = new joinExp((yyvsp[0].ps).pos,(yyvsp[0].ps).sym); }
2906 #line 2907 "camp.tab.c" /* yacc.c:1648 */
2907 break;
2908
2909 case 158:
2910 #line 549 "camp.y" /* yacc.c:1648 */
2911 { (yyval.j) = (yyvsp[0].j); }
2912 #line 2913 "camp.tab.c" /* yacc.c:1648 */
2913 break;
2914
2915 case 159:
2916 #line 551 "camp.y" /* yacc.c:1648 */
2917 { (yyvsp[-1].se)->setSide(camp::OUT);
2918 (yyval.j) = (yyvsp[0].j); (yyval.j)->pushFront((yyvsp[-1].se)); }
2919 #line 2920 "camp.tab.c" /* yacc.c:1648 */
2920 break;
2921
2922 case 160:
2923 #line 554 "camp.y" /* yacc.c:1648 */
2924 { (yyvsp[0].se)->setSide(camp::IN);
2925 (yyval.j) = (yyvsp[-1].j); (yyval.j)->pushBack((yyvsp[0].se)); }
2926 #line 2927 "camp.tab.c" /* yacc.c:1648 */
2927 break;
2928
2929 case 161:
2930 #line 557 "camp.y" /* yacc.c:1648 */
2931 { (yyvsp[-2].se)->setSide(camp::OUT); (yyvsp[0].se)->setSide(camp::IN);
2932 (yyval.j) = (yyvsp[-1].j); (yyval.j)->pushFront((yyvsp[-2].se)); (yyval.j)->pushBack((yyvsp[0].se)); }
2933 #line 2934 "camp.tab.c" /* yacc.c:1648 */
2934 break;
2935
2936 case 162:
2937 #line 562 "camp.y" /* yacc.c:1648 */
2938 { (yyval.se) = new specExp((yyvsp[-2].ps).pos, (yyvsp[-2].ps).sym, (yyvsp[-1].e)); }
2939 #line 2940 "camp.tab.c" /* yacc.c:1648 */
2940 break;
2941
2942 case 163:
2943 #line 563 "camp.y" /* yacc.c:1648 */
2944 { (yyval.se) = new specExp((yyvsp[-2].pos), symbol::opTrans("spec"), (yyvsp[-1].e)); }
2945 #line 2946 "camp.tab.c" /* yacc.c:1648 */
2946 break;
2947
2948 case 164:
2949 #line 565 "camp.y" /* yacc.c:1648 */
2950 { (yyval.se) = new specExp((yyvsp[-4].pos), symbol::opTrans("spec"),
2951 new pairExp((yyvsp[-2].pos), (yyvsp[-3].e), (yyvsp[-1].e))); }
2952 #line 2953 "camp.tab.c" /* yacc.c:1648 */
2953 break;
2954
2955 case 165:
2956 #line 568 "camp.y" /* yacc.c:1648 */
2957 { (yyval.se) = new specExp((yyvsp[-6].pos), symbol::opTrans("spec"),
2958 new tripleExp((yyvsp[-4].pos), (yyvsp[-5].e), (yyvsp[-3].e), (yyvsp[-1].e))); }
2959 #line 2960 "camp.tab.c" /* yacc.c:1648 */
2960 break;
2961
2962 case 166:
2963 #line 573 "camp.y" /* yacc.c:1648 */
2964 { (yyval.j) = new joinExp((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
2965 #line 2966 "camp.tab.c" /* yacc.c:1648 */
2966 break;
2967
2968 case 167:
2969 #line 575 "camp.y" /* yacc.c:1648 */
2970 { (yyval.j) = new joinExp((yyvsp[-2].ps).pos, (yyvsp[-2].ps).sym); (yyval.j)->pushBack((yyvsp[-1].e)); }
2971 #line 2972 "camp.tab.c" /* yacc.c:1648 */
2972 break;
2973
2974 case 168:
2975 #line 577 "camp.y" /* yacc.c:1648 */
2976 { (yyval.j) = new joinExp((yyvsp[-2].ps).pos, (yyvsp[-2].ps).sym); (yyval.j)->pushBack((yyvsp[-1].e)); }
2977 #line 2978 "camp.tab.c" /* yacc.c:1648 */
2978 break;
2979
2980 case 169:
2981 #line 578 "camp.y" /* yacc.c:1648 */
2982 { (yyval.j) = new joinExp((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
2983 #line 2984 "camp.tab.c" /* yacc.c:1648 */
2984 break;
2985
2986 case 170:
2987 #line 579 "camp.y" /* yacc.c:1648 */
2988 { (yyval.j) = new joinExp((yyvsp[0].ps).pos, (yyvsp[0].ps).sym); }
2989 #line 2990 "camp.tab.c" /* yacc.c:1648 */
2990 break;
2991
2992 case 171:
2993 #line 583 "camp.y" /* yacc.c:1648 */
2994 { (yyval.e) = new binaryExp((yyvsp[-1].ps).pos, (yyvsp[0].e), (yyvsp[-1].ps).sym,
2995 new booleanExp((yyvsp[-1].ps).pos, false)); }
2996 #line 2997 "camp.tab.c" /* yacc.c:1648 */
2997 break;
2998
2999 case 172:
3000 #line 586 "camp.y" /* yacc.c:1648 */
3001 { (yyval.e) = new ternaryExp((yyvsp[-3].ps).pos, (yyvsp[-2].e), (yyvsp[-3].ps).sym, (yyvsp[0].e),
3002 new booleanExp((yyvsp[-3].ps).pos, false)); }
3003 #line 3004 "camp.tab.c" /* yacc.c:1648 */
3004 break;
3005
3006 case 173:
3007 #line 589 "camp.y" /* yacc.c:1648 */
3008 { (yyval.e) = new binaryExp((yyvsp[-2].ps).pos, (yyvsp[0].e), (yyvsp[-2].ps).sym,
3009 new booleanExp((yyvsp[-1].ps).pos, true)); }
3010 #line 3011 "camp.tab.c" /* yacc.c:1648 */
3011 break;
3012
3013 case 174:
3014 #line 592 "camp.y" /* yacc.c:1648 */
3015 { (yyval.e) = new ternaryExp((yyvsp[-4].ps).pos, (yyvsp[-2].e), (yyvsp[-4].ps).sym, (yyvsp[0].e),
3016 new booleanExp((yyvsp[-3].ps).pos, true)); }
3017 #line 3018 "camp.tab.c" /* yacc.c:1648 */
3018 break;
3019
3020 case 175:
3021 #line 597 "camp.y" /* yacc.c:1648 */
3022 { (yyval.e) = new unaryExp((yyvsp[-1].ps).pos, (yyvsp[0].e), (yyvsp[-1].ps).sym); }
3023 #line 3024 "camp.tab.c" /* yacc.c:1648 */
3024 break;
3025
3026 case 176:
3027 #line 599 "camp.y" /* yacc.c:1648 */
3028 { (yyval.e) = new binaryExp((yyvsp[-3].ps).pos, (yyvsp[-2].e), (yyvsp[-3].ps).sym, (yyvsp[0].e)); }
3029 #line 3030 "camp.tab.c" /* yacc.c:1648 */
3030 break;
3031
3032 case 177:
3033 #line 603 "camp.y" /* yacc.c:1648 */
3034 { (yyval.s) = new emptyStm((yyvsp[0].pos)); }
3035 #line 3036 "camp.tab.c" /* yacc.c:1648 */
3036 break;
3037
3038 case 178:
3039 #line 604 "camp.y" /* yacc.c:1648 */
3040 { (yyval.s) = (yyvsp[0].s); }
3041 #line 3042 "camp.tab.c" /* yacc.c:1648 */
3042 break;
3043
3044 case 179:
3045 #line 605 "camp.y" /* yacc.c:1648 */
3046 { (yyval.s) = (yyvsp[-1].s); }
3047 #line 3048 "camp.tab.c" /* yacc.c:1648 */
3048 break;
3049
3050 case 180:
3051 #line 607 "camp.y" /* yacc.c:1648 */
3052 { (yyval.s) = new ifStm((yyvsp[-4].pos), (yyvsp[-2].e), (yyvsp[0].s)); }
3053 #line 3054 "camp.tab.c" /* yacc.c:1648 */
3054 break;
3055
3056 case 181:
3057 #line 609 "camp.y" /* yacc.c:1648 */
3058 { (yyval.s) = new ifStm((yyvsp[-6].pos), (yyvsp[-4].e), (yyvsp[-2].s), (yyvsp[0].s)); }
3059 #line 3060 "camp.tab.c" /* yacc.c:1648 */
3060 break;
3061
3062 case 182:
3063 #line 611 "camp.y" /* yacc.c:1648 */
3064 { (yyval.s) = new whileStm((yyvsp[-4].pos), (yyvsp[-2].e), (yyvsp[0].s)); }
3065 #line 3066 "camp.tab.c" /* yacc.c:1648 */
3066 break;
3067
3068 case 183:
3069 #line 613 "camp.y" /* yacc.c:1648 */
3070 { (yyval.s) = new doStm((yyvsp[-6].pos), (yyvsp[-5].s), (yyvsp[-2].e)); }
3071 #line 3072 "camp.tab.c" /* yacc.c:1648 */
3072 break;
3073
3074 case 184:
3075 #line 615 "camp.y" /* yacc.c:1648 */
3076 { (yyval.s) = new forStm((yyvsp[-8].pos), (yyvsp[-6].run), (yyvsp[-4].e), (yyvsp[-2].sel), (yyvsp[0].s)); }
3077 #line 3078 "camp.tab.c" /* yacc.c:1648 */
3078 break;
3079
3080 case 185:
3081 #line 617 "camp.y" /* yacc.c:1648 */
3082 { (yyval.s) = new extendedForStm((yyvsp[-7].pos), (yyvsp[-5].t), (yyvsp[-4].ps).sym, (yyvsp[-2].e), (yyvsp[0].s)); }
3083 #line 3084 "camp.tab.c" /* yacc.c:1648 */
3084 break;
3085
3086 case 186:
3087 #line 618 "camp.y" /* yacc.c:1648 */
3088 { (yyval.s) = new breakStm((yyvsp[-1].pos)); }
3089 #line 3090 "camp.tab.c" /* yacc.c:1648 */
3090 break;
3091
3092 case 187:
3093 #line 619 "camp.y" /* yacc.c:1648 */
3094 { (yyval.s) = new continueStm((yyvsp[-1].pos)); }
3095 #line 3096 "camp.tab.c" /* yacc.c:1648 */
3096 break;
3097
3098 case 188:
3099 #line 620 "camp.y" /* yacc.c:1648 */
3100 { (yyval.s) = new returnStm((yyvsp[-1].pos)); }
3101 #line 3102 "camp.tab.c" /* yacc.c:1648 */
3102 break;
3103
3104 case 189:
3105 #line 621 "camp.y" /* yacc.c:1648 */
3106 { (yyval.s) = new returnStm((yyvsp[-2].pos), (yyvsp[-1].e)); }
3107 #line 3108 "camp.tab.c" /* yacc.c:1648 */
3108 break;
3109
3110 case 190:
3111 #line 625 "camp.y" /* yacc.c:1648 */
3112 { (yyval.s) = new expStm((yyvsp[0].e)->getPos(), (yyvsp[0].e)); }
3113 #line 3114 "camp.tab.c" /* yacc.c:1648 */
3114 break;
3115
3116 case 191:
3117 #line 629 "camp.y" /* yacc.c:1648 */
3118 { (yyval.s) = new blockStm((yyvsp[0].b)->getPos(), (yyvsp[0].b)); }
3119 #line 3120 "camp.tab.c" /* yacc.c:1648 */
3120 break;
3121
3122 case 192:
3123 #line 633 "camp.y" /* yacc.c:1648 */
3124 { (yyval.run) = 0; }
3125 #line 3126 "camp.tab.c" /* yacc.c:1648 */
3126 break;
3127
3128 case 193:
3129 #line 634 "camp.y" /* yacc.c:1648 */
3130 { (yyval.run) = (yyvsp[0].sel); }
3131 #line 3132 "camp.tab.c" /* yacc.c:1648 */
3132 break;
3133
3134 case 194:
3135 #line 635 "camp.y" /* yacc.c:1648 */
3136 { (yyval.run) = (yyvsp[0].vd); }
3137 #line 3138 "camp.tab.c" /* yacc.c:1648 */
3138 break;
3139
3140 case 195:
3141 #line 639 "camp.y" /* yacc.c:1648 */
3142 { (yyval.e) = 0; }
3143 #line 3144 "camp.tab.c" /* yacc.c:1648 */
3144 break;
3145
3146 case 196:
3147 #line 640 "camp.y" /* yacc.c:1648 */
3148 { (yyval.e) = (yyvsp[0].e); }
3149 #line 3150 "camp.tab.c" /* yacc.c:1648 */
3150 break;
3151
3152 case 197:
3153 #line 644 "camp.y" /* yacc.c:1648 */
3154 { (yyval.sel) = 0; }
3155 #line 3156 "camp.tab.c" /* yacc.c:1648 */
3156 break;
3157
3158 case 198:
3159 #line 645 "camp.y" /* yacc.c:1648 */
3160 { (yyval.sel) = (yyvsp[0].sel); }
3161 #line 3162 "camp.tab.c" /* yacc.c:1648 */
3162 break;
3163
3164 case 199:
3165 #line 649 "camp.y" /* yacc.c:1648 */
3166 { (yyval.sel) = new stmExpList((yyvsp[0].s)->getPos()); (yyval.sel)->add((yyvsp[0].s)); }
3167 #line 3168 "camp.tab.c" /* yacc.c:1648 */
3168 break;
3169
3170 case 200:
3171 #line 651 "camp.y" /* yacc.c:1648 */
3172 { (yyval.sel) = (yyvsp[-2].sel); (yyval.sel)->add((yyvsp[0].s)); }
3173 #line 3174 "camp.tab.c" /* yacc.c:1648 */
3174 break;
3175
3176
3177 #line 3178 "camp.tab.c" /* yacc.c:1648 */
3178 default: break;
3179 }
3180 /* User semantic actions sometimes alter yychar, and that requires
3181 that yytoken be updated with the new translation. We take the
3182 approach of translating immediately before every use of yytoken.
3183 One alternative is translating here after every semantic action,
3184 but that translation would be missed if the semantic action invokes
3185 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3186 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3187 incorrect destructor might then be invoked immediately. In the
3188 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3189 to an incorrect destructor call or verbose syntax error message
3190 before the lookahead is translated. */
3191 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3192
3193 YYPOPSTACK (yylen);
3194 yylen = 0;
3195 YY_STACK_PRINT (yyss, yyssp);
3196
3197 *++yyvsp = yyval;
3198
3199 /* Now 'shift' the result of the reduction. Determine what state
3200 that goes to, based on the state we popped back to and the rule
3201 number reduced by. */
3202
3203 yyn = yyr1[yyn];
3204
3205 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3206 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3207 yystate = yytable[yystate];
3208 else
3209 yystate = yydefgoto[yyn - YYNTOKENS];
3210
3211 goto yynewstate;
3212
3213
3214 /*--------------------------------------.
3215 | yyerrlab -- here on detecting error. |
3216 `--------------------------------------*/
3217 yyerrlab:
3218 /* Make sure we have latest lookahead translation. See comments at
3219 user semantic actions for why this is necessary. */
3220 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
3221
3222 /* If not already recovering from an error, report this error. */
3223 if (!yyerrstatus)
3224 {
3225 ++yynerrs;
3226 #if ! YYERROR_VERBOSE
3227 yyerror (YY_("syntax error"));
3228 #else
3229 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
3230 yyssp, yytoken)
3231 {
3232 char const *yymsgp = YY_("syntax error");
3233 int yysyntax_error_status;
3234 yysyntax_error_status = YYSYNTAX_ERROR;
3235 if (yysyntax_error_status == 0)
3236 yymsgp = yymsg;
3237 else if (yysyntax_error_status == 1)
3238 {
3239 if (yymsg != yymsgbuf)
3240 YYSTACK_FREE (yymsg);
3241 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
3242 if (!yymsg)
3243 {
3244 yymsg = yymsgbuf;
3245 yymsg_alloc = sizeof yymsgbuf;
3246 yysyntax_error_status = 2;
3247 }
3248 else
3249 {
3250 yysyntax_error_status = YYSYNTAX_ERROR;
3251 yymsgp = yymsg;
3252 }
3253 }
3254 yyerror (yymsgp);
3255 if (yysyntax_error_status == 2)
3256 goto yyexhaustedlab;
3257 }
3258 # undef YYSYNTAX_ERROR
3259 #endif
3260 }
3261
3262
3263
3264 if (yyerrstatus == 3)
3265 {
3266 /* If just tried and failed to reuse lookahead token after an
3267 error, discard it. */
3268
3269 if (yychar <= YYEOF)
3270 {
3271 /* Return failure if at end of input. */
3272 if (yychar == YYEOF)
3273 YYABORT;
3274 }
3275 else
3276 {
3277 yydestruct ("Error: discarding",
3278 yytoken, &yylval);
3279 yychar = YYEMPTY;
3280 }
3281 }
3282
3283 /* Else will try to reuse lookahead token after shifting the error
3284 token. */
3285 goto yyerrlab1;
3286
3287
3288 /*---------------------------------------------------.
3289 | yyerrorlab -- error raised explicitly by YYERROR. |
3290 `---------------------------------------------------*/
3291 yyerrorlab:
3292
3293 /* Pacify compilers like GCC when the user code never invokes
3294 YYERROR and the label yyerrorlab therefore never appears in user
3295 code. */
3296 if (/*CONSTCOND*/ 0)
3297 goto yyerrorlab;
3298
3299 /* Do not reclaim the symbols of the rule whose action triggered
3300 this YYERROR. */
3301 YYPOPSTACK (yylen);
3302 yylen = 0;
3303 YY_STACK_PRINT (yyss, yyssp);
3304 yystate = *yyssp;
3305 goto yyerrlab1;
3306
3307
3308 /*-------------------------------------------------------------.
3309 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3310 `-------------------------------------------------------------*/
3311 yyerrlab1:
3312 yyerrstatus = 3; /* Each real token shifted decrements this. */
3313
3314 for (;;)
3315 {
3316 yyn = yypact[yystate];
3317 if (!yypact_value_is_default (yyn))
3318 {
3319 yyn += YYTERROR;
3320 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3321 {
3322 yyn = yytable[yyn];
3323 if (0 < yyn)
3324 break;
3325 }
3326 }
3327
3328 /* Pop the current state because it cannot handle the error token. */
3329 if (yyssp == yyss)
3330 YYABORT;
3331
3332
3333 yydestruct ("Error: popping",
3334 yystos[yystate], yyvsp);
3335 YYPOPSTACK (1);
3336 yystate = *yyssp;
3337 YY_STACK_PRINT (yyss, yyssp);
3338 }
3339
3340 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3341 *++yyvsp = yylval;
3342 YY_IGNORE_MAYBE_UNINITIALIZED_END
3343
3344
3345 /* Shift the error token. */
3346 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3347
3348 yystate = yyn;
3349 goto yynewstate;
3350
3351
3352 /*-------------------------------------.
3353 | yyacceptlab -- YYACCEPT comes here. |
3354 `-------------------------------------*/
3355 yyacceptlab:
3356 yyresult = 0;
3357 goto yyreturn;
3358
3359 /*-----------------------------------.
3360 | yyabortlab -- YYABORT comes here. |
3361 `-----------------------------------*/
3362 yyabortlab:
3363 yyresult = 1;
3364 goto yyreturn;
3365
3366 #if !defined yyoverflow || YYERROR_VERBOSE
3367 /*-------------------------------------------------.
3368 | yyexhaustedlab -- memory exhaustion comes here. |
3369 `-------------------------------------------------*/
3370 yyexhaustedlab:
3371 yyerror (YY_("memory exhausted"));
3372 yyresult = 2;
3373 /* Fall through. */
3374 #endif
3375
3376 yyreturn:
3377 if (yychar != YYEMPTY)
3378 {
3379 /* Make sure we have latest lookahead translation. See comments at
3380 user semantic actions for why this is necessary. */
3381 yytoken = YYTRANSLATE (yychar);
3382 yydestruct ("Cleanup: discarding lookahead",
3383 yytoken, &yylval);
3384 }
3385 /* Do not reclaim the symbols of the rule whose action triggered
3386 this YYABORT or YYACCEPT. */
3387 YYPOPSTACK (yylen);
3388 YY_STACK_PRINT (yyss, yyssp);
3389 while (yyssp != yyss)
3390 {
3391 yydestruct ("Cleanup: popping",
3392 yystos[*yyssp], yyvsp);
3393 YYPOPSTACK (1);
3394 }
3395 #ifndef yyoverflow
3396 if (yyss != yyssa)
3397 YYSTACK_FREE (yyss);
3398 #endif
3399 #if YYERROR_VERBOSE
3400 if (yymsg != yymsgbuf)
3401 YYSTACK_FREE (yymsg);
3402 #endif
3403 return yyresult;
3404 }
3405