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