8b62a61b1aae08ab998fc7c73b3ee340e72af53a
[charm.git] / src / xlat-i / xi-grammar.tab.C
1 /* A Bison parser, made by GNU Bison 2.3.  */
2
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4
5    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6    Free Software Foundation, Inc.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2, or (at your option)
11    any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor,
21    Boston, MA 02110-1301, USA.  */
22
23 /* As a special exception, you may create a larger work that contains
24    part or all of the Bison parser skeleton and distribute that work
25    under terms of your choice, so long as that work isn't itself a
26    parser generator using the skeleton or a modified version thereof
27    as a parser skeleton.  Alternatively, if you modify or redistribute
28    the parser skeleton itself, you may (at your option) remove this
29    special exception, which will cause the skeleton and the resulting
30    Bison output files to be licensed under the GNU General Public
31    License without this special exception.
32
33    This special exception was added by the Free Software Foundation in
34    version 2.2 of Bison.  */
35
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37    simplifying the original so-called "semantic" parser.  */
38
39 /* All symbols defined below should begin with yy or YY, to avoid
40    infringing on user name space.  This should be done even for local
41    variables, as they might otherwise be expanded by user macros.
42    There are some unavoidable exceptions within include files to
43    define necessary library symbols; they are noted "INFRINGES ON
44    USER NAME SPACE" below.  */
45
46 /* Identify Bison output.  */
47 #define YYBISON 1
48
49 /* Bison version.  */
50 #define YYBISON_VERSION "2.3"
51
52 /* Skeleton name.  */
53 #define YYSKELETON_NAME "yacc.c"
54
55 /* Pure parsers.  */
56 #define YYPURE 0
57
58 /* Using locations.  */
59 #define YYLSP_NEEDED 0
60
61
62
63 /* Tokens.  */
64 #ifndef YYTOKENTYPE
65 # define YYTOKENTYPE
66    /* Put the tokens into the symbol table, so that GDB and other debuggers
67       know about them.  */
68    enum yytokentype {
69      MODULE = 258,
70      MAINMODULE = 259,
71      EXTERN = 260,
72      READONLY = 261,
73      INITCALL = 262,
74      INITNODE = 263,
75      INITPROC = 264,
76      PUPABLE = 265,
77      CHARE = 266,
78      MAINCHARE = 267,
79      GROUP = 268,
80      NODEGROUP = 269,
81      ARRAY = 270,
82      MESSAGE = 271,
83      CONDITIONAL = 272,
84      CLASS = 273,
85      INCLUDE = 274,
86      STACKSIZE = 275,
87      THREADED = 276,
88      TEMPLATE = 277,
89      SYNC = 278,
90      IGET = 279,
91      EXCLUSIVE = 280,
92      IMMEDIATE = 281,
93      SKIPSCHED = 282,
94      INLINE = 283,
95      VIRTUAL = 284,
96      MIGRATABLE = 285,
97      CREATEHERE = 286,
98      CREATEHOME = 287,
99      NOKEEP = 288,
100      NOTRACE = 289,
101      VOID = 290,
102      CONST = 291,
103      PACKED = 292,
104      VARSIZE = 293,
105      ENTRY = 294,
106      FOR = 295,
107      FORALL = 296,
108      WHILE = 297,
109      WHEN = 298,
110      OVERLAP = 299,
111      ATOMIC = 300,
112      FORWARD = 301,
113      IF = 302,
114      ELSE = 303,
115      CONNECT = 304,
116      PUBLISHES = 305,
117      PYTHON = 306,
118      LOCAL = 307,
119      NAMESPACE = 308,
120      USING = 309,
121      IDENT = 310,
122      NUMBER = 311,
123      LITERAL = 312,
124      CPROGRAM = 313,
125      HASHIF = 314,
126      HASHIFDEF = 315,
127      INT = 316,
128      LONG = 317,
129      SHORT = 318,
130      CHAR = 319,
131      FLOAT = 320,
132      DOUBLE = 321,
133      UNSIGNED = 322,
134      ACCEL = 323,
135      READWRITE = 324,
136      WRITEONLY = 325,
137      ACCELBLOCK = 326,
138      MEMCRITICAL = 327,
139      REDUCTIONTARGET = 328
140    };
141 #endif
142 /* Tokens.  */
143 #define MODULE 258
144 #define MAINMODULE 259
145 #define EXTERN 260
146 #define READONLY 261
147 #define INITCALL 262
148 #define INITNODE 263
149 #define INITPROC 264
150 #define PUPABLE 265
151 #define CHARE 266
152 #define MAINCHARE 267
153 #define GROUP 268
154 #define NODEGROUP 269
155 #define ARRAY 270
156 #define MESSAGE 271
157 #define CONDITIONAL 272
158 #define CLASS 273
159 #define INCLUDE 274
160 #define STACKSIZE 275
161 #define THREADED 276
162 #define TEMPLATE 277
163 #define SYNC 278
164 #define IGET 279
165 #define EXCLUSIVE 280
166 #define IMMEDIATE 281
167 #define SKIPSCHED 282
168 #define INLINE 283
169 #define VIRTUAL 284
170 #define MIGRATABLE 285
171 #define CREATEHERE 286
172 #define CREATEHOME 287
173 #define NOKEEP 288
174 #define NOTRACE 289
175 #define VOID 290
176 #define CONST 291
177 #define PACKED 292
178 #define VARSIZE 293
179 #define ENTRY 294
180 #define FOR 295
181 #define FORALL 296
182 #define WHILE 297
183 #define WHEN 298
184 #define OVERLAP 299
185 #define ATOMIC 300
186 #define FORWARD 301
187 #define IF 302
188 #define ELSE 303
189 #define CONNECT 304
190 #define PUBLISHES 305
191 #define PYTHON 306
192 #define LOCAL 307
193 #define NAMESPACE 308
194 #define USING 309
195 #define IDENT 310
196 #define NUMBER 311
197 #define LITERAL 312
198 #define CPROGRAM 313
199 #define HASHIF 314
200 #define HASHIFDEF 315
201 #define INT 316
202 #define LONG 317
203 #define SHORT 318
204 #define CHAR 319
205 #define FLOAT 320
206 #define DOUBLE 321
207 #define UNSIGNED 322
208 #define ACCEL 323
209 #define READWRITE 324
210 #define WRITEONLY 325
211 #define ACCELBLOCK 326
212 #define MEMCRITICAL 327
213 #define REDUCTIONTARGET 328
214
215
216
217
218 /* Copy the first part of user declarations.  */
219 #line 2 "xi-grammar.y"
220
221 #include <iostream>
222 #include <string>
223 #include <string.h>
224 #include "xi-symbol.h"
225 #include "EToken.h"
226 using namespace xi;
227 extern int yylex (void) ;
228 extern unsigned char in_comment;
229 void yyerror(const char *);
230 extern unsigned int lineno;
231 extern int in_bracket,in_braces,in_int_expr;
232 extern TList<Entry *> *connectEntries;
233 ModuleList *modlist;
234 namespace xi {
235 extern int macroDefined(const char *str, int istrue);
236 extern const char *python_doc;
237 void splitScopedName(const char* name, const char** scope, const char** basename);
238 }
239
240 // Error handling
241 bool hasSeenConstructor = false;
242 char *lastConstructor;
243
244
245 /* Enabling traces.  */
246 #ifndef YYDEBUG
247 # define YYDEBUG 0
248 #endif
249
250 /* Enabling verbose error messages.  */
251 #ifdef YYERROR_VERBOSE
252 # undef YYERROR_VERBOSE
253 # define YYERROR_VERBOSE 1
254 #else
255 # define YYERROR_VERBOSE 0
256 #endif
257
258 /* Enabling the token table.  */
259 #ifndef YYTOKEN_TABLE
260 # define YYTOKEN_TABLE 0
261 #endif
262
263 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
264 typedef union YYSTYPE
265 #line 27 "xi-grammar.y"
266 {
267   ModuleList *modlist;
268   Module *module;
269   ConstructList *conslist;
270   Construct *construct;
271   TParam *tparam;
272   TParamList *tparlist;
273   Type *type;
274   PtrType *ptype;
275   NamedType *ntype;
276   FuncType *ftype;
277   Readonly *readonly;
278   Message *message;
279   Chare *chare;
280   Entry *entry;
281   EntryList *entrylist;
282   Parameter *pname;
283   ParamList *plist;
284   Template *templat;
285   TypeList *typelist;
286   MemberList *mbrlist;
287   Member *member;
288   TVar *tvar;
289   TVarList *tvarlist;
290   Value *val;
291   ValueList *vallist;
292   MsgVar *mv;
293   MsgVarList *mvlist;
294   PUPableClass *pupable;
295   IncludeFile *includeFile;
296   const char *strval;
297   int intval;
298   Chare::attrib_t cattr;
299   SdagConstruct *sc;
300   XStr* xstrptr;
301   AccelBlock* accelBlock;
302 }
303 /* Line 193 of yacc.c.  */
304 #line 305 "y.tab.c"
305         YYSTYPE;
306 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
307 # define YYSTYPE_IS_DECLARED 1
308 # define YYSTYPE_IS_TRIVIAL 1
309 #endif
310
311
312
313 /* Copy the second part of user declarations.  */
314
315
316 /* Line 216 of yacc.c.  */
317 #line 318 "y.tab.c"
318
319 #ifdef short
320 # undef short
321 #endif
322
323 #ifdef YYTYPE_UINT8
324 typedef YYTYPE_UINT8 yytype_uint8;
325 #else
326 typedef unsigned char yytype_uint8;
327 #endif
328
329 #ifdef YYTYPE_INT8
330 typedef YYTYPE_INT8 yytype_int8;
331 #elif (defined __STDC__ || defined __C99__FUNC__ \
332      || defined __cplusplus || defined _MSC_VER)
333 typedef signed char yytype_int8;
334 #else
335 typedef short int yytype_int8;
336 #endif
337
338 #ifdef YYTYPE_UINT16
339 typedef YYTYPE_UINT16 yytype_uint16;
340 #else
341 typedef unsigned short int yytype_uint16;
342 #endif
343
344 #ifdef YYTYPE_INT16
345 typedef YYTYPE_INT16 yytype_int16;
346 #else
347 typedef short int yytype_int16;
348 #endif
349
350 #ifndef YYSIZE_T
351 # ifdef __SIZE_TYPE__
352 #  define YYSIZE_T __SIZE_TYPE__
353 # elif defined size_t
354 #  define YYSIZE_T size_t
355 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
356      || defined __cplusplus || defined _MSC_VER)
357 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
358 #  define YYSIZE_T size_t
359 # else
360 #  define YYSIZE_T unsigned int
361 # endif
362 #endif
363
364 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
365
366 #ifndef YY_
367 # if defined YYENABLE_NLS && YYENABLE_NLS
368 #  if ENABLE_NLS
369 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
370 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
371 #  endif
372 # endif
373 # ifndef YY_
374 #  define YY_(msgid) msgid
375 # endif
376 #endif
377
378 /* Suppress unused-variable warnings by "using" E.  */
379 #if ! defined lint || defined __GNUC__
380 # define YYUSE(e) ((void) (e))
381 #else
382 # define YYUSE(e) /* empty */
383 #endif
384
385 /* Identity function, used to suppress warnings about constant conditions.  */
386 #ifndef lint
387 # define YYID(n) (n)
388 #else
389 #if (defined __STDC__ || defined __C99__FUNC__ \
390      || defined __cplusplus || defined _MSC_VER)
391 static int
392 YYID (int i)
393 #else
394 static int
395 YYID (i)
396     int i;
397 #endif
398 {
399   return i;
400 }
401 #endif
402
403 #if ! defined yyoverflow || YYERROR_VERBOSE
404
405 /* The parser invokes alloca or malloc; define the necessary symbols.  */
406
407 # ifdef YYSTACK_USE_ALLOCA
408 #  if YYSTACK_USE_ALLOCA
409 #   ifdef __GNUC__
410 #    define YYSTACK_ALLOC __builtin_alloca
411 #   elif defined __BUILTIN_VA_ARG_INCR
412 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
413 #   elif defined _AIX
414 #    define YYSTACK_ALLOC __alloca
415 #   elif defined _MSC_VER
416 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
417 #    define alloca _alloca
418 #   else
419 #    define YYSTACK_ALLOC alloca
420 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
421      || defined __cplusplus || defined _MSC_VER)
422 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
423 #     ifndef _STDLIB_H
424 #      define _STDLIB_H 1
425 #     endif
426 #    endif
427 #   endif
428 #  endif
429 # endif
430
431 # ifdef YYSTACK_ALLOC
432    /* Pacify GCC's `empty if-body' warning.  */
433 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
434 #  ifndef YYSTACK_ALLOC_MAXIMUM
435     /* The OS might guarantee only one guard page at the bottom of the stack,
436        and a page size can be as small as 4096 bytes.  So we cannot safely
437        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
438        to allow for a few compiler-allocated temporary stack slots.  */
439 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
440 #  endif
441 # else
442 #  define YYSTACK_ALLOC YYMALLOC
443 #  define YYSTACK_FREE YYFREE
444 #  ifndef YYSTACK_ALLOC_MAXIMUM
445 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
446 #  endif
447 #  if (defined __cplusplus && ! defined _STDLIB_H \
448        && ! ((defined YYMALLOC || defined malloc) \
449              && (defined YYFREE || defined free)))
450 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
451 #   ifndef _STDLIB_H
452 #    define _STDLIB_H 1
453 #   endif
454 #  endif
455 #  ifndef YYMALLOC
456 #   define YYMALLOC malloc
457 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
458      || defined __cplusplus || defined _MSC_VER)
459 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
460 #   endif
461 #  endif
462 #  ifndef YYFREE
463 #   define YYFREE free
464 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
465      || defined __cplusplus || defined _MSC_VER)
466 void free (void *); /* INFRINGES ON USER NAME SPACE */
467 #   endif
468 #  endif
469 # endif
470 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
471
472
473 #if (! defined yyoverflow \
474      && (! defined __cplusplus \
475          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
476
477 /* A type that is properly aligned for any stack member.  */
478 union yyalloc
479 {
480   yytype_int16 yyss;
481   YYSTYPE yyvs;
482   };
483
484 /* The size of the maximum gap between one aligned stack and the next.  */
485 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
486
487 /* The size of an array large to enough to hold all stacks, each with
488    N elements.  */
489 # define YYSTACK_BYTES(N) \
490      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
491       + YYSTACK_GAP_MAXIMUM)
492
493 /* Copy COUNT objects from FROM to TO.  The source and destination do
494    not overlap.  */
495 # ifndef YYCOPY
496 #  if defined __GNUC__ && 1 < __GNUC__
497 #   define YYCOPY(To, From, Count) \
498       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
499 #  else
500 #   define YYCOPY(To, From, Count)              \
501       do                                        \
502         {                                       \
503           YYSIZE_T yyi;                         \
504           for (yyi = 0; yyi < (Count); yyi++)   \
505             (To)[yyi] = (From)[yyi];            \
506         }                                       \
507       while (YYID (0))
508 #  endif
509 # endif
510
511 /* Relocate STACK from its old location to the new one.  The
512    local variables YYSIZE and YYSTACKSIZE give the old and new number of
513    elements in the stack, and YYPTR gives the new location of the
514    stack.  Advance YYPTR to a properly aligned location for the next
515    stack.  */
516 # define YYSTACK_RELOCATE(Stack)                                        \
517     do                                                                  \
518       {                                                                 \
519         YYSIZE_T yynewbytes;                                            \
520         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
521         Stack = &yyptr->Stack;                                          \
522         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
523         yyptr += yynewbytes / sizeof (*yyptr);                          \
524       }                                                                 \
525     while (YYID (0))
526
527 #endif
528
529 /* YYFINAL -- State number of the termination state.  */
530 #define YYFINAL  9
531 /* YYLAST -- Last index in YYTABLE.  */
532 #define YYLAST   899
533
534 /* YYNTOKENS -- Number of terminals.  */
535 #define YYNTOKENS  90
536 /* YYNNTS -- Number of nonterminals.  */
537 #define YYNNTS  110
538 /* YYNRULES -- Number of rules.  */
539 #define YYNRULES  287
540 /* YYNRULES -- Number of states.  */
541 #define YYNSTATES  602
542
543 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
544 #define YYUNDEFTOK  2
545 #define YYMAXUTOK   328
546
547 #define YYTRANSLATE(YYX)                                                \
548   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
549
550 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
551 static const yytype_uint8 yytranslate[] =
552 {
553        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
554        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
555        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
556        2,     2,     2,     2,     2,     2,     2,     2,    84,     2,
557       82,    83,    81,     2,    78,    88,    89,     2,     2,     2,
558        2,     2,     2,     2,     2,     2,     2,     2,    75,    74,
559       79,    87,    80,     2,     2,     2,     2,     2,     2,     2,
560        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
561        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
562        2,    85,     2,    86,     2,     2,     2,     2,     2,     2,
563        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
564        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
565        2,     2,     2,    76,     2,    77,     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,     2,     2,     2,     2,
577        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
578        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
579        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
580       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
581       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
582       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
583       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
584       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
585       65,    66,    67,    68,    69,    70,    71,    72,    73
586 };
587
588 #if YYDEBUG
589 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
590    YYRHS.  */
591 static const yytype_uint16 yyprhs[] =
592 {
593        0,     0,     3,     5,     6,     9,    10,    12,    13,    15,
594       17,    19,    24,    28,    32,    34,    39,    40,    43,    49,
595       55,    60,    64,    67,    70,    74,    77,    80,    83,    86,
596       89,    98,   100,   102,   104,   106,   108,   110,   112,   114,
597      118,   119,   121,   122,   126,   128,   130,   132,   134,   137,
598      140,   144,   148,   151,   154,   157,   159,   161,   164,   166,
599      169,   172,   174,   176,   179,   182,   185,   194,   196,   198,
600      200,   202,   205,   208,   211,   213,   215,   217,   221,   222,
601      225,   230,   236,   237,   239,   240,   244,   246,   250,   252,
602      254,   255,   259,   261,   265,   266,   268,   270,   271,   275,
603      277,   281,   283,   285,   286,   288,   289,   292,   298,   300,
604      303,   307,   314,   315,   318,   320,   324,   330,   336,   342,
605      348,   353,   357,   364,   371,   377,   383,   389,   395,   401,
606      406,   414,   415,   418,   419,   422,   425,   429,   432,   436,
607      438,   442,   447,   450,   453,   456,   459,   462,   464,   469,
608      470,   473,   476,   479,   482,   485,   489,   493,   497,   501,
609      508,   518,   522,   529,   533,   540,   550,   560,   562,   566,
610      568,   571,   575,   577,   585,   591,   604,   610,   613,   615,
611      617,   618,   622,   624,   626,   630,   632,   634,   636,   638,
612      640,   642,   644,   646,   648,   650,   652,   654,   657,   659,
613      661,   663,   665,   667,   669,   670,   672,   676,   677,   679,
614      685,   691,   697,   702,   706,   708,   710,   712,   716,   721,
615      725,   727,   729,   731,   733,   738,   742,   747,   752,   757,
616      761,   769,   775,   782,   784,   788,   790,   794,   798,   801,
617      805,   808,   809,   813,   814,   816,   820,   822,   825,   827,
618      830,   831,   836,   838,   842,   844,   845,   852,   861,   866,
619      870,   876,   881,   893,   903,   916,   931,   938,   947,   953,
620      961,   965,   969,   971,   972,   975,   980,   982,   986,   988,
621      990,   993,   999,  1001,  1005,  1007,  1009,  1012
622 };
623
624 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
625 static const yytype_int16 yyrhs[] =
626 {
627       91,     0,    -1,    92,    -1,    -1,    97,    92,    -1,    -1,
628        5,    -1,    -1,    74,    -1,    55,    -1,    55,    -1,    96,
629       75,    75,    55,    -1,     3,    95,    98,    -1,     4,    95,
630       98,    -1,    74,    -1,    76,    99,    77,    94,    -1,    -1,
631      100,    99,    -1,    93,    76,    99,    77,    94,    -1,    53,
632       95,    76,    99,    77,    -1,    54,    53,    96,    74,    -1,
633       54,    96,    74,    -1,    93,    97,    -1,    93,   155,    -1,
634       93,   134,    74,    -1,    93,   137,    -1,    93,   138,    -1,
635       93,   139,    -1,    93,   141,    -1,    93,   152,    -1,     5,
636       39,   163,   107,    95,   104,   180,    74,    -1,   198,    -1,
637      199,    -1,   162,    -1,     1,    -1,   113,    -1,    56,    -1,
638       57,    -1,   101,    -1,   101,    78,   102,    -1,    -1,   102,
639       -1,    -1,    79,   103,    80,    -1,    61,    -1,    62,    -1,
640       63,    -1,    64,    -1,    67,    61,    -1,    67,    62,    -1,
641       67,    62,    61,    -1,    67,    62,    62,    -1,    67,    63,
642       -1,    67,    64,    -1,    62,    62,    -1,    65,    -1,    66,
643       -1,    62,    66,    -1,    35,    -1,    95,   104,    -1,    96,
644      104,    -1,   105,    -1,   107,    -1,   108,    81,    -1,   109,
645       81,    -1,   110,    81,    -1,   112,    82,    81,    95,    83,
646       82,   178,    83,    -1,   108,    -1,   109,    -1,   110,    -1,
647      111,    -1,    36,   112,    -1,   112,    36,    -1,   112,    84,
648       -1,   112,    -1,    56,    -1,    96,    -1,    85,   114,    86,
649       -1,    -1,   115,   116,    -1,     6,   113,    96,   116,    -1,
650        6,    16,   108,    81,    95,    -1,    -1,    35,    -1,    -1,
651       85,   121,    86,    -1,   122,    -1,   122,    78,   121,    -1,
652       37,    -1,    38,    -1,    -1,    85,   124,    86,    -1,   129,
653       -1,   129,    78,   124,    -1,    -1,    57,    -1,    51,    -1,
654       -1,    85,   128,    86,    -1,   126,    -1,   126,    78,   128,
655       -1,    30,    -1,    51,    -1,    -1,    17,    -1,    -1,    85,
656       86,    -1,   130,   113,    95,   131,    74,    -1,   132,    -1,
657      132,   133,    -1,    16,   120,   106,    -1,    16,   120,   106,
658       76,   133,    77,    -1,    -1,    75,   136,    -1,   107,    -1,
659      107,    78,   136,    -1,    11,   123,   106,   135,   153,    -1,
660       12,   123,   106,   135,   153,    -1,    13,   123,   106,   135,
661      153,    -1,    14,   123,   106,   135,   153,    -1,    85,    56,
662       95,    86,    -1,    85,    95,    86,    -1,    15,   127,   140,
663      106,   135,   153,    -1,    15,   140,   127,   106,   135,   153,
664       -1,    11,   123,    95,   135,   153,    -1,    12,   123,    95,
665      135,   153,    -1,    13,   123,    95,   135,   153,    -1,    14,
666      123,    95,   135,   153,    -1,    15,   140,    95,   135,   153,
667       -1,    16,   120,    95,    74,    -1,    16,   120,    95,    76,
668      133,    77,    74,    -1,    -1,    87,   113,    -1,    -1,    87,
669       56,    -1,    87,    57,    -1,    18,    95,   147,    -1,   111,
670      148,    -1,   113,    95,   148,    -1,   149,    -1,   149,    78,
671      150,    -1,    22,    79,   150,    80,    -1,   151,   142,    -1,
672      151,   143,    -1,   151,   144,    -1,   151,   145,    -1,   151,
673      146,    -1,    74,    -1,    76,   154,    77,    94,    -1,    -1,
674      160,   154,    -1,   117,    74,    -1,   118,    74,    -1,   157,
675       74,    -1,   156,    74,    -1,    10,   158,    74,    -1,    19,
676      159,    74,    -1,    18,    95,    74,    -1,     8,   119,    96,
677       -1,     8,   119,    96,    82,   119,    83,    -1,     8,   119,
678       96,    79,   102,    80,    82,   119,    83,    -1,     7,   119,
679       96,    -1,     7,   119,    96,    82,   119,    83,    -1,     9,
680      119,    96,    -1,     9,   119,    96,    82,   119,    83,    -1,
681        9,   119,    96,    79,   102,    80,    82,   119,    83,    -1,
682        9,    85,    68,    86,   119,    96,    82,   119,    83,    -1,
683      107,    -1,   107,    78,   158,    -1,    57,    -1,   161,    74,
684       -1,   151,   161,    74,    -1,   155,    -1,    39,   164,   163,
685       95,   180,   182,   183,    -1,    39,   164,    95,   180,   183,
686       -1,    39,    85,    68,    86,    35,    95,   180,   181,   171,
687      169,   172,    95,    -1,    71,   171,   169,   172,    74,    -1,
688       71,    74,    -1,    35,    -1,   109,    -1,    -1,    85,   165,
689       86,    -1,     1,    -1,   166,    -1,   166,    78,   165,    -1,
690       21,    -1,    23,    -1,    24,    -1,    25,    -1,    31,    -1,
691       32,    -1,    33,    -1,    34,    -1,    26,    -1,    27,    -1,
692       28,    -1,    52,    -1,    51,   125,    -1,    72,    -1,    73,
693       -1,     1,    -1,    57,    -1,    56,    -1,    96,    -1,    -1,
694       58,    -1,    58,    78,   168,    -1,    -1,    58,    -1,    58,
695       85,   169,    86,   169,    -1,    58,    76,   169,    77,   169,
696       -1,    58,    82,   168,    83,   169,    -1,    82,   169,    83,
697      169,    -1,   113,    95,    85,    -1,    76,    -1,    77,    -1,
698      113,    -1,   113,    95,   130,    -1,   113,    95,    87,   167,
699       -1,   170,   169,    86,    -1,     6,    -1,    69,    -1,    70,
700       -1,    95,    -1,   175,    88,    80,    95,    -1,   175,    89,
701       95,    -1,   175,    85,   175,    86,    -1,   175,    85,    56,
702       86,    -1,   175,    82,   175,    83,    -1,   170,   169,    86,
703       -1,   174,    75,   113,    95,    79,   175,    80,    -1,   113,
704       95,    79,   175,    80,    -1,   174,    75,   176,    79,   175,
705       80,    -1,   173,    -1,   173,    78,   178,    -1,   177,    -1,
706      177,    78,   179,    -1,    82,   178,    83,    -1,    82,    83,
707       -1,    85,   179,    86,    -1,    85,    86,    -1,    -1,    20,
708       87,    56,    -1,    -1,   189,    -1,    76,   184,    77,    -1,
709      189,    -1,   189,   184,    -1,   189,    -1,   189,   184,    -1,
710       -1,    50,    82,   187,    83,    -1,    55,    -1,    55,    78,
711      187,    -1,    57,    -1,    -1,    45,   188,   171,   169,   172,
712      186,    -1,    49,    82,    55,   180,    83,   171,   169,    77,
713       -1,    43,   195,    76,    77,    -1,    43,   195,   189,    -1,
714       43,   195,    76,   184,    77,    -1,    44,    76,   185,    77,
715       -1,    40,   193,   169,    74,   169,    74,   169,   192,    76,
716      184,    77,    -1,    40,   193,   169,    74,   169,    74,   169,
717      192,   189,    -1,    41,    85,    55,    86,   193,   169,    75,
718      169,    78,   169,   192,   189,    -1,    41,    85,    55,    86,
719      193,   169,    75,   169,    78,   169,   192,    76,   184,    77,
720       -1,    47,   193,   169,   192,   189,   190,    -1,    47,   193,
721      169,   192,    76,   184,    77,   190,    -1,    42,   193,   169,
722      192,   189,    -1,    42,   193,   169,   192,    76,   184,    77,
723       -1,    46,   191,    74,    -1,   171,   169,   172,    -1,     1,
724       -1,    -1,    48,   189,    -1,    48,    76,   184,    77,    -1,
725       55,    -1,    55,    78,   191,    -1,    83,    -1,    82,    -1,
726       55,   180,    -1,    55,   196,   169,   197,   180,    -1,   194,
727       -1,   194,    78,   195,    -1,    85,    -1,    86,    -1,    59,
728       95,    -1,    60,    95,    -1
729 };
730
731 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
732 static const yytype_uint16 yyrline[] =
733 {
734        0,   158,   158,   163,   166,   171,   172,   177,   178,   182,
735      186,   188,   196,   200,   207,   209,   214,   215,   219,   221,
736      223,   225,   227,   229,   231,   233,   235,   237,   239,   241,
737      243,   253,   255,   257,   259,   263,   265,   267,   271,   273,
738      278,   279,   284,   285,   289,   291,   293,   295,   297,   299,
739      301,   303,   305,   307,   309,   311,   313,   315,   317,   321,
740      322,   329,   331,   335,   339,   341,   345,   349,   351,   353,
741      355,   358,   360,   364,   366,   370,   372,   376,   381,   382,
742      386,   390,   395,   396,   401,   402,   412,   414,   418,   420,
743      425,   426,   430,   432,   437,   438,   442,   447,   448,   452,
744      454,   458,   460,   465,   466,   470,   471,   474,   478,   480,
745      484,   486,   491,   492,   496,   498,   502,   506,   512,   518,
746      524,   530,   534,   538,   544,   548,   554,   560,   566,   572,
747      574,   579,   580,   585,   586,   588,   592,   594,   596,   600,
748      602,   606,   610,   612,   614,   616,   618,   622,   624,   629,
749      647,   651,   653,   655,   656,   658,   660,   662,   666,   668,
750      670,   676,   679,   684,   686,   688,   694,   702,   704,   707,
751      711,   713,   718,   722,   730,   754,   772,   774,   778,   780,
752      785,   786,   788,   792,   794,   798,   800,   802,   804,   806,
753      808,   810,   812,   814,   816,   818,   820,   822,   824,   826,
754      828,   832,   834,   836,   841,   842,   844,   853,   854,   856,
755      862,   868,   874,   882,   889,   897,   904,   906,   908,   910,
756      917,   918,   919,   922,   923,   924,   925,   932,   938,   947,
757      954,   960,   966,   974,   976,   980,   982,   986,   988,   992,
758      994,   999,  1000,  1005,  1006,  1008,  1012,  1014,  1018,  1020,
759     1025,  1026,  1030,  1032,  1036,  1039,  1042,  1046,  1060,  1062,
760     1064,  1066,  1068,  1071,  1074,  1077,  1080,  1082,  1084,  1086,
761     1088,  1090,  1092,  1099,  1100,  1102,  1105,  1107,  1111,  1115,
762     1119,  1121,  1125,  1127,  1131,  1134,  1138,  1142
763 };
764 #endif
765
766 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
767 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
768    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
769 static const char *const yytname[] =
770 {
771   "$end", "error", "$undefined", "MODULE", "MAINMODULE", "EXTERN",
772   "READONLY", "INITCALL", "INITNODE", "INITPROC", "PUPABLE", "CHARE",
773   "MAINCHARE", "GROUP", "NODEGROUP", "ARRAY", "MESSAGE", "CONDITIONAL",
774   "CLASS", "INCLUDE", "STACKSIZE", "THREADED", "TEMPLATE", "SYNC", "IGET",
775   "EXCLUSIVE", "IMMEDIATE", "SKIPSCHED", "INLINE", "VIRTUAL", "MIGRATABLE",
776   "CREATEHERE", "CREATEHOME", "NOKEEP", "NOTRACE", "VOID", "CONST",
777   "PACKED", "VARSIZE", "ENTRY", "FOR", "FORALL", "WHILE", "WHEN",
778   "OVERLAP", "ATOMIC", "FORWARD", "IF", "ELSE", "CONNECT", "PUBLISHES",
779   "PYTHON", "LOCAL", "NAMESPACE", "USING", "IDENT", "NUMBER", "LITERAL",
780   "CPROGRAM", "HASHIF", "HASHIFDEF", "INT", "LONG", "SHORT", "CHAR",
781   "FLOAT", "DOUBLE", "UNSIGNED", "ACCEL", "READWRITE", "WRITEONLY",
782   "ACCELBLOCK", "MEMCRITICAL", "REDUCTIONTARGET", "';'", "':'", "'{'",
783   "'}'", "','", "'<'", "'>'", "'*'", "'('", "')'", "'&'", "'['", "']'",
784   "'='", "'-'", "'.'", "$accept", "File", "ModuleEList", "OptExtern",
785   "OptSemiColon", "Name", "QualName", "Module", "ConstructEList",
786   "ConstructList", "Construct", "TParam", "TParamList", "TParamEList",
787   "OptTParams", "BuiltinType", "NamedType", "QualNamedType", "SimpleType",
788   "OnePtrType", "PtrType", "FuncType", "BaseType", "Type", "ArrayDim",
789   "Dim", "DimList", "Readonly", "ReadonlyMsg", "OptVoid", "MAttribs",
790   "MAttribList", "MAttrib", "CAttribs", "CAttribList", "PythonOptions",
791   "ArrayAttrib", "ArrayAttribs", "ArrayAttribList", "CAttrib",
792   "OptConditional", "MsgArray", "Var", "VarList", "Message", "OptBaseList",
793   "BaseList", "Chare", "Group", "NodeGroup", "ArrayIndexType", "Array",
794   "TChare", "TGroup", "TNodeGroup", "TArray", "TMessage", "OptTypeInit",
795   "OptNameInit", "TVar", "TVarList", "TemplateSpec", "Template",
796   "MemberEList", "MemberList", "NonEntryMember", "InitNode", "InitProc",
797   "PUPableClass", "IncludeFile", "Member", "Entry", "AccelBlock",
798   "EReturn", "EAttribs", "EAttribList", "EAttrib", "DefaultParameter",
799   "CPROGRAM_List", "CCode", "ParamBracketStart", "ParamBraceStart",
800   "ParamBraceEnd", "Parameter", "AccelBufferType", "AccelInstName",
801   "AccelArrayParam", "AccelParameter", "ParamList", "AccelParamList",
802   "EParameters", "AccelEParameters", "OptStackSize", "OptSdagCode",
803   "Slist", "Olist", "OptPubList", "PublishesList", "OptTraceName",
804   "SingleConstruct", "HasElse", "ForwardList", "EndIntExpr",
805   "StartIntExpr", "SEntry", "SEntryList", "SParamBracketStart",
806   "SParamBracketEnd", "HashIFComment", "HashIFDefComment", 0
807 };
808 #endif
809
810 # ifdef YYPRINT
811 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
812    token YYLEX-NUM.  */
813 static const yytype_uint16 yytoknum[] =
814 {
815        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
816      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
817      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
818      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
819      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
820      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
821      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
822      325,   326,   327,   328,    59,    58,   123,   125,    44,    60,
823       62,    42,    40,    41,    38,    91,    93,    61,    45,    46
824 };
825 # endif
826
827 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
828 static const yytype_uint8 yyr1[] =
829 {
830        0,    90,    91,    92,    92,    93,    93,    94,    94,    95,
831       96,    96,    97,    97,    98,    98,    99,    99,   100,   100,
832      100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
833      100,   100,   100,   100,   100,   101,   101,   101,   102,   102,
834      103,   103,   104,   104,   105,   105,   105,   105,   105,   105,
835      105,   105,   105,   105,   105,   105,   105,   105,   105,   106,
836      107,   108,   108,   109,   110,   110,   111,   112,   112,   112,
837      112,   112,   112,   113,   113,   114,   114,   115,   116,   116,
838      117,   118,   119,   119,   120,   120,   121,   121,   122,   122,
839      123,   123,   124,   124,   125,   125,   126,   127,   127,   128,
840      128,   129,   129,   130,   130,   131,   131,   132,   133,   133,
841      134,   134,   135,   135,   136,   136,   137,   137,   138,   139,
842      140,   140,   141,   141,   142,   142,   143,   144,   145,   146,
843      146,   147,   147,   148,   148,   148,   149,   149,   149,   150,
844      150,   151,   152,   152,   152,   152,   152,   153,   153,   154,
845      154,   155,   155,   155,   155,   155,   155,   155,   156,   156,
846      156,   156,   156,   157,   157,   157,   157,   158,   158,   159,
847      160,   160,   160,   161,   161,   161,   162,   162,   163,   163,
848      164,   164,   164,   165,   165,   166,   166,   166,   166,   166,
849      166,   166,   166,   166,   166,   166,   166,   166,   166,   166,
850      166,   167,   167,   167,   168,   168,   168,   169,   169,   169,
851      169,   169,   169,   170,   171,   172,   173,   173,   173,   173,
852      174,   174,   174,   175,   175,   175,   175,   175,   175,   176,
853      177,   177,   177,   178,   178,   179,   179,   180,   180,   181,
854      181,   182,   182,   183,   183,   183,   184,   184,   185,   185,
855      186,   186,   187,   187,   188,   188,   189,   189,   189,   189,
856      189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
857      189,   189,   189,   190,   190,   190,   191,   191,   192,   193,
858      194,   194,   195,   195,   196,   197,   198,   199
859 };
860
861 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
862 static const yytype_uint8 yyr2[] =
863 {
864        0,     2,     1,     0,     2,     0,     1,     0,     1,     1,
865        1,     4,     3,     3,     1,     4,     0,     2,     5,     5,
866        4,     3,     2,     2,     3,     2,     2,     2,     2,     2,
867        8,     1,     1,     1,     1,     1,     1,     1,     1,     3,
868        0,     1,     0,     3,     1,     1,     1,     1,     2,     2,
869        3,     3,     2,     2,     2,     1,     1,     2,     1,     2,
870        2,     1,     1,     2,     2,     2,     8,     1,     1,     1,
871        1,     2,     2,     2,     1,     1,     1,     3,     0,     2,
872        4,     5,     0,     1,     0,     3,     1,     3,     1,     1,
873        0,     3,     1,     3,     0,     1,     1,     0,     3,     1,
874        3,     1,     1,     0,     1,     0,     2,     5,     1,     2,
875        3,     6,     0,     2,     1,     3,     5,     5,     5,     5,
876        4,     3,     6,     6,     5,     5,     5,     5,     5,     4,
877        7,     0,     2,     0,     2,     2,     3,     2,     3,     1,
878        3,     4,     2,     2,     2,     2,     2,     1,     4,     0,
879        2,     2,     2,     2,     2,     3,     3,     3,     3,     6,
880        9,     3,     6,     3,     6,     9,     9,     1,     3,     1,
881        2,     3,     1,     7,     5,    12,     5,     2,     1,     1,
882        0,     3,     1,     1,     3,     1,     1,     1,     1,     1,
883        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
884        1,     1,     1,     1,     0,     1,     3,     0,     1,     5,
885        5,     5,     4,     3,     1,     1,     1,     3,     4,     3,
886        1,     1,     1,     1,     4,     3,     4,     4,     4,     3,
887        7,     5,     6,     1,     3,     1,     3,     3,     2,     3,
888        2,     0,     3,     0,     1,     3,     1,     2,     1,     2,
889        0,     4,     1,     3,     1,     0,     6,     8,     4,     3,
890        5,     4,    11,     9,    12,    14,     6,     8,     5,     7,
891        3,     3,     1,     0,     2,     4,     1,     3,     1,     1,
892        2,     5,     1,     3,     1,     1,     2,     2
893 };
894
895 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
896    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
897    means the default is an error.  */
898 static const yytype_uint16 yydefact[] =
899 {
900        3,     0,     0,     0,     2,     3,     9,     0,     0,     1,
901        4,    14,     0,    12,    13,    34,     6,     0,     0,     0,
902        0,     0,     0,     0,     0,    33,    31,    32,     0,     0,
903        0,    10,     0,   286,   287,   177,   214,   207,     0,    82,
904       82,    82,     0,    90,    90,    90,    90,     0,    84,     0,
905        0,     0,     0,    22,     0,     0,     0,    25,    26,    27,
906       28,     0,    29,    23,     0,     0,     7,    17,    58,    44,
907       45,    46,    47,    55,    56,     0,    42,    61,    62,     0,
908      179,     0,     0,     0,    21,     0,   208,   207,     0,     0,
909       58,     0,    67,    68,    69,    70,    74,     0,    83,     0,
910        0,     0,     0,   167,     0,     0,     0,     0,     0,     0,
911        0,     0,    97,     0,     0,     0,   169,     0,     0,     0,
912      151,   152,    24,    90,    90,    90,    90,     0,    84,   142,
913      143,   144,   145,   146,   154,   153,     8,    15,    54,    57,
914       48,    49,    52,    53,    40,    60,    63,     0,     0,    20,
915        0,   207,   204,   207,     0,   215,     0,     0,    71,    64,
916       65,    72,     0,    73,    78,   161,   158,     0,   163,     0,
917      155,   101,   102,     0,    92,    42,   112,   112,   112,   112,
918       96,     0,     0,    99,     0,     0,     0,     0,     0,    88,
919       89,     0,    86,   110,   157,   156,     0,    70,     0,   139,
920        0,     7,     0,     0,     0,     0,     0,     0,    50,    51,
921       36,    37,    38,    41,     0,    35,    42,    19,    11,     0,
922      205,     0,     0,   207,   176,     0,     0,     0,    78,    80,
923       82,     0,    82,    82,     0,    82,   168,    91,     0,    59,
924        0,     0,     0,     0,     0,     0,   121,     0,    98,   112,
925      112,    85,     0,   103,   131,     0,   137,   133,     0,   141,
926       18,   112,   112,   112,   112,   112,     0,     0,    43,     0,
927      207,   204,   207,   207,   212,    81,     0,    75,    76,     0,
928       79,     0,     0,     0,     0,     0,     0,    93,   114,   113,
929      147,   149,   116,   117,   118,   119,   120,   100,     0,     0,
930       87,   104,     0,   103,     0,     0,   136,   134,   135,   138,
931      140,     0,     0,     0,     0,     0,   129,   103,    39,     0,
932        0,   210,   206,   211,   209,     0,    77,   162,     0,   159,
933        0,     0,   164,     0,     0,     0,     0,   172,   149,     0,
934      122,   123,     0,   109,   111,   132,   124,   125,   126,   127,
935      128,     0,   238,   216,   207,   233,     0,    30,     0,    82,
936       82,    82,   115,   182,     0,     0,     0,     7,   150,   170,
937      105,     0,   103,     0,     0,   237,     0,     0,     0,     0,
938      200,   185,   186,   187,   188,   193,   194,   195,   189,   190,
939      191,   192,    94,   196,     0,   198,   199,     0,   183,    10,
940        0,     0,   171,   148,     0,     0,   130,   213,     0,   217,
941      219,   234,    66,   160,   166,   165,    95,   197,     0,   181,
942        0,     0,     0,   106,   107,   202,   201,   203,   218,     0,
943      184,   272,     0,     0,     0,     0,     0,   255,     0,     0,
944        0,     0,   207,   174,   244,   241,     0,   279,   207,     0,
945      207,     0,   282,     0,     0,   254,     0,   276,     0,   207,
946        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
947      284,   280,   207,     0,     0,   259,     0,     0,   207,     0,
948      270,     0,     0,   245,   247,   271,     0,   173,     0,     0,
949      207,     0,   278,     0,     0,   283,   258,     0,   261,   249,
950        0,   277,     0,     0,   242,   220,   221,   222,   240,     0,
951        0,   235,     0,   207,     0,   207,     0,   268,   285,     0,
952      260,   250,     0,   273,     0,     0,     0,     0,   239,     0,
953      207,     0,     0,   281,     0,   256,     0,     0,   266,   207,
954        0,     0,   207,     0,   236,     0,     0,   207,   269,     0,
955      273,     0,   274,     0,   223,     0,     0,     0,     0,   175,
956        0,     0,   252,     0,   267,     0,   257,   231,     0,     0,
957        0,     0,     0,   229,     0,     0,   263,   207,     0,   251,
958      275,     0,     0,     0,     0,   225,     0,   232,     0,     0,
959      253,   228,   227,   226,   224,   230,   262,     0,     0,   264,
960        0,   265
961 };
962
963 /* YYDEFGOTO[NTERM-NUM].  */
964 static const yytype_int16 yydefgoto[] =
965 {
966       -1,     3,     4,    22,   137,   175,    76,     5,    13,    23,
967       24,   212,   213,   214,   145,    77,   176,    78,    92,    93,
968       94,    95,    96,   215,   279,   228,   229,    54,    55,    99,
969      114,   191,   192,   106,   173,   417,   183,   111,   184,   174,
970      302,   405,   303,   304,    56,   241,   289,    57,    58,    59,
971      112,    60,   129,   130,   131,   132,   133,   306,   256,   199,
972      200,   335,    62,   292,   336,   337,    64,    65,   104,   117,
973      338,   339,    25,    81,   365,   397,   398,   428,   221,    88,
974      354,   442,   156,   355,   510,   555,   543,   511,   356,   512,
975      320,   489,   465,   443,   461,   476,   535,   563,   456,   462,
976      538,   458,   493,   448,   452,   453,   472,   519,    26,    27
977 };
978
979 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
980    STATE-NUM.  */
981 #define YYPACT_NINF -471
982 static const yytype_int16 yypact[] =
983 {
984       57,   -18,   -18,    82,  -471,    57,  -471,    42,    42,  -471,
985     -471,  -471,   407,  -471,  -471,  -471,    60,   -18,   138,   -18,
986      -18,    71,   680,    36,   407,  -471,  -471,  -471,   612,    84,
987      115,  -471,   191,  -471,  -471,  -471,  -471,   -28,   723,   140,
988      140,   -13,   115,    93,    93,    93,    93,    96,   101,   -18,
989      137,   131,   407,  -471,   148,   156,   173,  -471,  -471,  -471,
990     -471,   342,  -471,  -471,   176,   180,   205,  -471,   165,  -471,
991       72,  -471,  -471,  -471,  -471,   287,   117,  -471,  -471,   206,
992     -471,   115,   407,   194,  -471,   221,    51,   -28,   223,   811,
993     -471,   798,   206,   222,   224,  -471,   -15,   115,  -471,   115,
994      115,   236,   115,   229,   246,    12,   -18,   -18,   -18,   -18,
995      200,   255,   259,   235,   -18,   254,  -471,   286,   761,   284,
996     -471,  -471,  -471,    93,    93,    93,    93,   255,   101,  -471,
997     -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,
998     -471,   216,  -471,  -471,   775,  -471,  -471,   -18,   285,  -471,
999      308,   -28,   320,   -28,   283,  -471,   305,   299,    -2,  -471,
1000     -471,  -471,   300,  -471,     0,     4,    75,   296,    77,   115,
1001     -471,  -471,  -471,   297,   306,   307,   310,   310,   310,   310,
1002     -471,   -18,   301,   312,   302,   230,   -18,   340,   -18,  -471,
1003     -471,   311,   314,   317,  -471,  -471,   -18,    61,   -18,   316,
1004      319,   205,   -18,   -18,   -18,   -18,   -18,   -18,  -471,  -471,
1005     -471,  -471,   318,  -471,   321,  -471,   307,  -471,  -471,   325,
1006      331,   323,   338,   -28,  -471,   -18,   -18,   243,   346,  -471,
1007      140,   775,   140,   140,   775,   140,  -471,  -471,    12,  -471,
1008      115,   133,   133,   133,   133,   341,  -471,   340,  -471,   310,
1009      310,  -471,   235,   386,   347,   270,  -471,   348,   761,  -471,
1010     -471,   310,   310,   310,   310,   310,   153,   775,  -471,   351,
1011      -28,   320,   -28,   -28,  -471,  -471,   353,  -471,   368,   358,
1012     -471,   362,   366,   365,   115,   369,   372,  -471,   374,  -471,
1013     -471,   432,  -471,  -471,  -471,  -471,  -471,  -471,   133,   133,
1014     -471,  -471,   798,    -3,   380,   798,  -471,  -471,  -471,  -471,
1015     -471,   133,   133,   133,   133,   133,  -471,   386,  -471,   197,
1016      388,  -471,  -471,  -471,  -471,   381,  -471,  -471,   383,  -471,
1017       33,   387,  -471,   115,   100,   429,   396,  -471,   432,   400,
1018     -471,  -471,   -18,  -471,  -471,  -471,  -471,  -471,  -471,  -471,
1019     -471,   398,  -471,   -18,   -28,   399,   393,  -471,   798,   140,
1020      140,   140,  -471,  -471,   696,   832,   405,   205,  -471,  -471,
1021      395,   408,    11,   401,   798,  -471,   402,   403,   406,   410,
1022     -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,
1023     -471,  -471,   424,  -471,   404,  -471,  -471,   409,   418,   425,
1024      351,   -18,  -471,  -471,   423,   414,  -471,  -471,   181,  -471,
1025     -471,  -471,  -471,  -471,  -471,  -471,  -471,  -471,   484,  -471,
1026      710,   471,   351,  -471,  -471,  -471,  -471,   368,  -471,   -18,
1027     -471,  -471,   439,   437,   439,   468,   448,   469,   470,   439,
1028      445,   199,   -28,  -471,  -471,   508,   351,  -471,   -28,   474,
1029      -28,    15,   452,   509,   535,  -471,   455,   454,   461,   -28,
1030      482,   464,   328,   223,   451,   471,   458,   472,   456,   477,
1031     -471,  -471,   -28,   468,   248,  -471,   485,   457,   -28,   470,
1032     -471,   477,   351,  -471,  -471,  -471,   505,  -471,   247,   455,
1033      -28,   439,  -471,   547,   478,  -471,  -471,   486,  -471,  -471,
1034      223,  -471,   558,   483,  -471,  -471,  -471,  -471,  -471,   -18,
1035      490,   491,   488,   -28,   498,   -28,   199,  -471,  -471,   351,
1036     -471,   536,   199,   560,   455,   516,   798,   739,  -471,   223,
1037      -28,   531,   532,  -471,   538,  -471,   545,   572,  -471,   -28,
1038      -18,   -18,   -28,   546,  -471,   -18,   477,   -28,  -471,   569,
1039      560,   199,  -471,   549,  -471,    32,    92,   541,   -18,  -471,
1040      596,   550,   551,   548,  -471,   553,  -471,  -471,   -18,   280,
1041      552,   -18,   -18,  -471,    94,   199,  -471,   -28,   569,  -471,
1042     -471,   249,   571,   233,   -18,  -471,   146,  -471,   556,   477,
1043     -471,  -471,  -471,  -471,  -471,  -471,  -471,   609,   199,  -471,
1044      567,  -471
1045 };
1046
1047 /* YYPGOTO[NTERM-NUM].  */
1048 static const yytype_int16 yypgoto[] =
1049 {
1050     -471,  -471,   630,  -471,  -194,    -1,   -10,   624,   651,    -9,
1051     -471,  -471,  -176,  -471,  -122,  -471,   -57,   -32,   -23,   -22,
1052     -471,  -109,   570,   -35,  -471,  -471,   434,  -471,  -471,   -14,
1053      537,   411,  -471,   -21,   422,  -471,  -471,   554,   417,  -471,
1054      298,  -471,  -471,  -270,  -471,  -139,   335,  -471,  -471,  -471,
1055      -65,  -471,  -471,  -471,  -471,  -471,  -471,  -471,   412,  -471,
1056      413,   658,  -471,  -100,   343,   660,  -471,  -471,   534,  -471,
1057     -471,   370,  -471,   336,  -471,   288,  -471,  -471,   433,   -83,
1058      174,   -19,  -422,  -471,  -471,  -400,  -471,  -471,  -293,   179,
1059     -387,  -471,  -471,   242,  -445,  -471,  -471,   132,  -471,  -409,
1060      159,   234,  -470,  -403,  -471,   239,  -471,  -471,  -471,  -471
1061 };
1062
1063 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1064    positive, shift that token.  If negative, reduce the rule which
1065    number is the opposite.  If zero, do what YYDEFACT says.
1066    If YYTABLE_NINF, syntax error.  */
1067 #define YYTABLE_NINF -249
1068 static const yytype_int16 yytable[] =
1069 {
1070        7,     8,    37,    97,   154,    79,    80,   260,    32,   197,
1071      103,   502,   444,   421,   301,    67,    29,   484,    33,    34,
1072       83,   161,    98,   107,   108,   109,   100,   102,   301,   497,
1073       86,   450,   499,   343,   161,   445,   459,     6,   242,   243,
1074      244,   485,   171,   119,   475,   477,   186,   351,   115,   147,
1075      177,   178,   179,   239,    87,   282,   444,   193,   285,   466,
1076        1,     2,   206,   172,   471,   376,   157,   162,   219,   163,
1077      222,   532,   101,   148,  -108,    85,   560,   536,   521,    85,
1078      162,   411,     9,   198,   517,   227,   230,   164,   515,   165,
1079      166,   318,   168,   523,   269,   503,   407,   319,   408,    28,
1080      470,   363,   202,   203,   204,   205,   565,   545,    85,   182,
1081      298,   299,   567,    66,   568,   360,    11,   569,    12,   597,
1082      570,   571,   311,   312,   313,   314,   315,   151,   552,   249,
1083      588,   250,   533,   152,   138,  -180,   153,   103,   139,  -133,
1084      274,  -133,   293,   294,   295,    35,   216,    36,   255,   197,
1085       85,   576,    85,   600,   231,  -180,   234,   232,   574,   235,
1086       82,  -180,  -180,  -180,  -180,  -180,  -180,  -180,   581,   583,
1087       31,   572,   586,   403,   587,    98,   568,   407,   105,   569,
1088      245,   110,   570,   571,   182,   364,   113,   321,   599,   323,
1089      324,    30,    85,    31,   116,   254,   144,   257,   340,   341,
1090      431,   261,   262,   263,   264,   265,   266,   290,   288,   291,
1091      118,   346,   347,   348,   349,   350,   281,   278,   283,   284,
1092     -178,   286,   120,   198,   275,   276,   595,   316,   568,   317,
1093      121,   569,    90,    91,   570,   571,    31,   425,   426,   432,
1094      433,   434,   435,   436,   437,   438,   439,   122,   440,   431,
1095      134,   180,    31,   505,   135,     6,   181,  -214,    69,    70,
1096       71,    72,    73,    74,    75,    84,    85,   342,   149,    85,
1097      345,   373,   189,   190,   330,    36,  -214,   208,   209,   136,
1098      352,  -214,    90,    91,   353,     6,   181,   146,   432,   433,
1099      434,   435,   436,   437,   438,   439,   150,   440,    31,   277,
1100      155,   288,    31,   159,   167,   160,  -214,   169,    69,    70,
1101       71,    72,    73,    74,    75,   568,   506,   507,   569,   593,
1102      170,   570,   571,   353,    36,   496,   307,   308,   194,   431,
1103     -214,   568,   591,   508,   569,     6,   582,   570,   571,   353,
1104      185,   370,    79,    80,   187,   377,   378,   379,   140,   141,
1105      142,   143,   372,   123,   124,   125,   126,   127,   128,   463,
1106      195,   201,   217,   218,   400,   467,   223,   469,   432,   433,
1107      434,   435,   436,   437,   438,   439,   481,   440,   220,   224,
1108      225,   226,   233,   237,   238,   240,   144,   246,   248,   494,
1109      247,   180,   252,   253,   258,   500,   267,   251,   427,   259,
1110      422,   268,   270,   301,    36,  -246,   272,   514,    15,   271,
1111       -5,    -5,    16,    -5,    -5,    -5,    -5,    -5,    -5,    -5,
1112       -5,    -5,    -5,    -5,   273,    -5,    -5,   296,   446,    -5,
1113      529,   227,   531,   319,   305,   255,   325,   478,    38,    39,
1114       40,    41,    42,    85,   326,   327,   328,   546,   329,   331,
1115       49,    50,   333,   509,    51,   332,   553,   344,   431,   557,
1116       17,    18,   357,   358,   561,   359,    19,    20,   334,   361,
1117      513,   334,   431,   367,   369,   371,   375,   374,    21,   402,
1118      404,   416,   406,    -5,   -16,   412,   413,   410,   424,   414,
1119      418,   541,   509,   415,   589,   419,   420,   432,   433,   434,
1120      435,   436,   437,   438,   439,   539,   440,    -9,   525,   423,
1121      431,   432,   433,   434,   435,   436,   437,   438,   439,   429,
1122      440,   447,   449,   451,   454,   457,   455,   460,   464,   468,
1123      473,    36,   479,    36,  -248,   480,   431,   482,   486,   554,
1124      556,   483,   491,   488,   559,  -243,   490,   441,   431,   432,
1125      433,   434,   435,   436,   437,   438,   439,   554,   440,   431,
1126      492,   504,   498,   520,   518,   526,   524,   554,   554,   527,
1127      585,   554,   530,   431,   528,   432,   433,   434,   435,   436,
1128      437,   438,   439,   594,   440,   474,   534,   432,   433,   434,
1129      435,   436,   437,   438,   439,   540,   440,   431,   432,   433,
1130      434,   435,   436,   437,   438,   439,   547,   440,   537,   548,
1131      431,    36,   432,   433,   434,   435,   436,   437,   438,   439,
1132      549,   440,   550,   516,   562,   558,   566,   573,   577,   578,
1133      580,   579,   584,   596,   522,    10,   432,   433,   434,   435,
1134      436,   437,   438,   439,   601,   440,    53,    68,   551,   432,
1135      433,   434,   435,   436,   437,   438,   439,   592,   440,    14,
1136      287,   158,   280,   300,   297,   207,   188,    31,   362,   309,
1137      409,   310,   575,    69,    70,    71,    72,    73,    74,    75,
1138       61,   368,    63,     1,     2,   598,    38,    39,    40,    41,
1139       42,    43,    44,    45,    46,    47,    48,   380,    49,    50,
1140      542,   401,    51,   236,   322,   366,   544,   487,   430,   564,
1141      590,   380,   495,   501,     0,     0,     0,   381,     0,   382,
1142      383,   384,   385,   386,   387,     0,     0,   388,   389,   390,
1143      391,   381,     0,   382,   383,   384,   385,   386,   387,    89,
1144        0,   388,   389,   390,   391,   505,     0,   392,   393,     0,
1145        0,     0,     0,     0,     0,     0,    52,     0,    90,    91,
1146        0,   392,   393,     0,   394,     0,     0,     0,   395,   396,
1147        0,     0,     0,     0,    90,    91,     0,     0,    31,   196,
1148        0,     0,   395,   396,    69,    70,    71,    72,    73,    74,
1149       75,     0,     0,     0,    31,     0,    90,    91,     0,     0,
1150       69,    70,    71,    72,    73,    74,    75,     0,   506,   507,
1151       90,    91,     0,     0,     0,     0,    31,     0,     0,     0,
1152        0,     0,    69,    70,    71,    72,    73,    74,    75,     0,
1153       31,   210,   211,    90,    91,     0,    69,    70,    71,    72,
1154       73,    74,    75,     0,     0,     0,    90,     0,     0,     0,
1155        0,     0,     0,    31,     0,     0,     0,     0,     0,    69,
1156       70,    71,    72,    73,    74,    75,    31,    68,     0,     0,
1157        0,     0,    69,    70,    71,    72,    73,    74,    75,     0,
1158        0,     0,     0,     0,     0,     0,     0,   399,     0,     0,
1159        0,     0,     0,    69,    70,    71,    72,    73,    74,    75
1160 };
1161
1162 static const yytype_int16 yycheck[] =
1163 {
1164        1,     2,    21,    38,    87,    28,    28,   201,    18,   118,
1165       42,   481,   421,   400,    17,    24,    17,   462,    19,    20,
1166       30,    36,    35,    44,    45,    46,    40,    41,    17,   474,
1167       58,   434,   477,   303,    36,   422,   439,    55,   177,   178,
1168      179,   463,    30,    52,   453,   454,   111,   317,    49,    81,
1169      107,   108,   109,   175,    82,   231,   465,   114,   234,   446,
1170        3,     4,   127,    51,   451,   358,    89,    82,   151,    84,
1171      153,   516,    85,    82,    77,    75,   546,   522,   500,    75,
1172       82,   374,     0,   118,   493,    85,    82,    97,   491,    99,
1173      100,   267,   102,   502,   216,   482,    85,    82,    87,    39,
1174       85,     1,   123,   124,   125,   126,   551,   529,    75,   110,
1175      249,   250,    80,    77,    82,    82,    74,    85,    76,   589,
1176       88,    89,   261,   262,   263,   264,   265,    76,   537,   186,
1177      575,   188,   519,    82,    62,    35,    85,   169,    66,    78,
1178      223,    80,   242,   243,   244,    74,   147,    76,    87,   258,
1179       75,   560,    75,   598,    79,    55,    79,    82,   558,    82,
1180       76,    61,    62,    63,    64,    65,    66,    67,   568,   569,
1181       55,    79,   572,   367,    80,    35,    82,    85,    85,    85,
1182      181,    85,    88,    89,   185,    85,    85,   270,   597,   272,
1183      273,    53,    75,    55,    57,   196,    79,   198,   298,   299,
1184        1,   202,   203,   204,   205,   206,   207,    74,   240,    76,
1185       79,   311,   312,   313,   314,   315,   230,   227,   232,   233,
1186       55,   235,    74,   258,   225,   226,    80,    74,    82,    76,
1187       74,    85,    35,    36,    88,    89,    55,    56,    57,    40,
1188       41,    42,    43,    44,    45,    46,    47,    74,    49,     1,
1189       74,    51,    55,     6,    74,    55,    56,    58,    61,    62,
1190       63,    64,    65,    66,    67,    74,    75,   302,    74,    75,
1191      305,   354,    37,    38,   284,    76,    77,    61,    62,    74,
1192       83,    82,    35,    36,   319,    55,    56,    81,    40,    41,
1193       42,    43,    44,    45,    46,    47,    75,    49,    55,    56,
1194       77,   333,    55,    81,    68,    81,    58,    78,    61,    62,
1195       63,    64,    65,    66,    67,    82,    69,    70,    85,    86,
1196       74,    88,    89,   358,    76,    77,    56,    57,    74,     1,
1197       82,    82,    83,    86,    85,    55,    56,    88,    89,   374,
1198       85,   342,   365,   365,    85,   359,   360,   361,    61,    62,
1199       63,    64,   353,    11,    12,    13,    14,    15,    16,   442,
1200       74,    77,    77,    55,   365,   448,    83,   450,    40,    41,
1201       42,    43,    44,    45,    46,    47,   459,    49,    58,    74,
1202       81,    81,    86,    86,    78,    75,    79,    86,    86,   472,
1203       78,    51,    78,    76,    78,   478,    78,    86,   408,    80,
1204      401,    80,    77,    17,    76,    77,    83,   490,     1,    78,
1205        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
1206       13,    14,    15,    16,    86,    18,    19,    86,   429,    22,
1207      513,    85,   515,    82,    87,    87,    83,   456,     6,     7,
1208        8,     9,    10,    75,    86,    83,    80,   530,    83,    80,
1209       18,    19,    78,   488,    22,    83,   539,    77,     1,   542,
1210       53,    54,    74,    82,   547,    82,    59,    60,    39,    82,
1211      489,    39,     1,    77,    74,    77,    83,    78,    71,    74,
1212       85,    57,    74,    76,    77,    83,    83,    86,    74,    83,
1213       86,   526,   527,    83,   577,    86,    78,    40,    41,    42,
1214       43,    44,    45,    46,    47,   524,    49,    82,   509,    86,
1215        1,    40,    41,    42,    43,    44,    45,    46,    47,    35,
1216       49,    82,    85,    55,    76,    55,    57,    82,    20,    55,
1217       78,    76,    78,    76,    77,    74,     1,    55,    87,   540,
1218      541,    77,    86,    85,   545,    74,    74,    76,     1,    40,
1219       41,    42,    43,    44,    45,    46,    47,   558,    49,     1,
1220       83,    56,    77,    77,    86,    75,    83,   568,   569,    78,
1221      571,   572,    74,     1,    86,    40,    41,    42,    43,    44,
1222       45,    46,    47,   584,    49,    76,    50,    40,    41,    42,
1223       43,    44,    45,    46,    47,    79,    49,     1,    40,    41,
1224       42,    43,    44,    45,    46,    47,    75,    49,    48,    77,
1225        1,    76,    40,    41,    42,    43,    44,    45,    46,    47,
1226       82,    49,    77,    76,    55,    79,    77,    86,    78,    78,
1227       77,    83,    80,    77,    76,     5,    40,    41,    42,    43,
1228       44,    45,    46,    47,    77,    49,    22,    35,    76,    40,
1229       41,    42,    43,    44,    45,    46,    47,    86,    49,     8,
1230      238,    91,   228,   252,   247,   128,   112,    55,   333,   257,
1231      372,   258,    76,    61,    62,    63,    64,    65,    66,    67,
1232       22,   338,    22,     3,     4,    76,     6,     7,     8,     9,
1233       10,    11,    12,    13,    14,    15,    16,     1,    18,    19,
1234      526,   365,    22,   169,   271,   335,   527,   465,   420,   550,
1235      578,     1,   473,   479,    -1,    -1,    -1,    21,    -1,    23,
1236       24,    25,    26,    27,    28,    -1,    -1,    31,    32,    33,
1237       34,    21,    -1,    23,    24,    25,    26,    27,    28,    16,
1238       -1,    31,    32,    33,    34,     6,    -1,    51,    52,    -1,
1239       -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    35,    36,
1240       -1,    51,    52,    -1,    68,    -1,    -1,    -1,    72,    73,
1241       -1,    -1,    -1,    -1,    35,    36,    -1,    -1,    55,    18,
1242       -1,    -1,    72,    73,    61,    62,    63,    64,    65,    66,
1243       67,    -1,    -1,    -1,    55,    -1,    35,    36,    -1,    -1,
1244       61,    62,    63,    64,    65,    66,    67,    -1,    69,    70,
1245       35,    36,    -1,    -1,    -1,    -1,    55,    -1,    -1,    -1,
1246       -1,    -1,    61,    62,    63,    64,    65,    66,    67,    -1,
1247       55,    56,    57,    35,    36,    -1,    61,    62,    63,    64,
1248       65,    66,    67,    -1,    -1,    -1,    35,    -1,    -1,    -1,
1249       -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
1250       62,    63,    64,    65,    66,    67,    55,    35,    -1,    -1,
1251       -1,    -1,    61,    62,    63,    64,    65,    66,    67,    -1,
1252       -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,
1253       -1,    -1,    -1,    61,    62,    63,    64,    65,    66,    67
1254 };
1255
1256 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1257    symbol of state STATE-NUM.  */
1258 static const yytype_uint8 yystos[] =
1259 {
1260        0,     3,     4,    91,    92,    97,    55,    95,    95,     0,
1261       92,    74,    76,    98,    98,     1,     5,    53,    54,    59,
1262       60,    71,    93,    99,   100,   162,   198,   199,    39,    95,
1263       53,    55,    96,    95,    95,    74,    76,   171,     6,     7,
1264        8,     9,    10,    11,    12,    13,    14,    15,    16,    18,
1265       19,    22,    76,    97,   117,   118,   134,   137,   138,   139,
1266      141,   151,   152,   155,   156,   157,    77,    99,    35,    61,
1267       62,    63,    64,    65,    66,    67,    96,   105,   107,   108,
1268      109,   163,    76,    96,    74,    75,    58,    82,   169,    16,
1269       35,    36,   108,   109,   110,   111,   112,   113,    35,   119,
1270      119,    85,   119,   107,   158,    85,   123,   123,   123,   123,
1271       85,   127,   140,    85,   120,    95,    57,   159,    79,    99,
1272       74,    74,    74,    11,    12,    13,    14,    15,    16,   142,
1273      143,   144,   145,   146,    74,    74,    74,    94,    62,    66,
1274       61,    62,    63,    64,    79,   104,    81,   107,    99,    74,
1275       75,    76,    82,    85,   169,    77,   172,   108,   112,    81,
1276       81,    36,    82,    84,    96,    96,    96,    68,    96,    78,
1277       74,    30,    51,   124,   129,    95,   106,   106,   106,   106,
1278       51,    56,    95,   126,   128,    85,   140,    85,   127,    37,
1279       38,   121,   122,   106,    74,    74,    18,   111,   113,   149,
1280      150,    77,   123,   123,   123,   123,   140,   120,    61,    62,
1281       56,    57,   101,   102,   103,   113,    95,    77,    55,   169,
1282       58,   168,   169,    83,    74,    81,    81,    85,   115,   116,
1283       82,    79,    82,    86,    79,    82,   158,    86,    78,   104,
1284       75,   135,   135,   135,   135,    95,    86,    78,    86,   106,
1285      106,    86,    78,    76,    95,    87,   148,    95,    78,    80,
1286       94,    95,    95,    95,    95,    95,    95,    78,    80,   104,
1287       77,    78,    83,    86,   169,    95,    95,    56,    96,   114,
1288      116,   119,   102,   119,   119,   102,   119,   124,   107,   136,
1289       74,    76,   153,   153,   153,   153,    86,   128,   135,   135,
1290      121,    17,   130,   132,   133,    87,   147,    56,    57,   148,
1291      150,   135,   135,   135,   135,   135,    74,    76,   102,    82,
1292      180,   169,   168,   169,   169,    83,    86,    83,    80,    83,
1293       96,    80,    83,    78,    39,   151,   154,   155,   160,   161,
1294      153,   153,   113,   133,    77,   113,   153,   153,   153,   153,
1295      153,   133,    83,   113,   170,   173,   178,    74,    82,    82,
1296       82,    82,   136,     1,    85,   164,   161,    77,   154,    74,
1297       95,    77,    95,   169,    78,    83,   178,   119,   119,   119,
1298        1,    21,    23,    24,    25,    26,    27,    28,    31,    32,
1299       33,    34,    51,    52,    68,    72,    73,   165,   166,    55,
1300       95,   163,    74,    94,    85,   131,    74,    85,    87,   130,
1301       86,   178,    83,    83,    83,    83,    57,   125,    86,    86,
1302       78,   180,    95,    86,    74,    56,    57,    96,   167,    35,
1303      165,     1,    40,    41,    42,    43,    44,    45,    46,    47,
1304       49,    76,   171,   183,   189,   180,    95,    82,   193,    85,
1305      193,    55,   194,   195,    76,    57,   188,    55,   191,   193,
1306       82,   184,   189,   169,    20,   182,   180,   169,    55,   169,
1307       85,   180,   196,    78,    76,   189,   185,   189,   171,    78,
1308       74,   169,    55,    77,   184,   172,    87,   183,    85,   181,
1309       74,    86,    83,   192,   169,   195,    77,   184,    77,   184,
1310      169,   191,   192,   180,    56,     6,    69,    70,    86,   113,
1311      174,   177,   179,   171,   169,   193,    76,   189,    86,   197,
1312       77,   172,    76,   189,    83,    95,    75,    78,    86,   169,
1313       74,   169,   184,   180,    50,   186,   184,    48,   190,   171,
1314       79,   113,   170,   176,   179,   172,   169,    75,    77,    82,
1315       77,    76,   189,   169,    95,   175,    95,   169,    79,    95,
1316      192,   169,    55,   187,   190,   184,    77,    80,    82,    85,
1317       88,    89,    79,    86,   175,    76,   189,    78,    78,    83,
1318       77,   175,    56,   175,    80,    95,   175,    80,   184,   169,
1319      187,    83,    86,    86,    95,    80,    77,   192,    76,   189,
1320      184,    77
1321 };
1322
1323 #define yyerrok         (yyerrstatus = 0)
1324 #define yyclearin       (yychar = YYEMPTY)
1325 #define YYEMPTY         (-2)
1326 #define YYEOF           0
1327
1328 #define YYACCEPT        goto yyacceptlab
1329 #define YYABORT         goto yyabortlab
1330 #define YYERROR         goto yyerrorlab
1331
1332
1333 /* Like YYERROR except do call yyerror.  This remains here temporarily
1334    to ease the transition to the new meaning of YYERROR, for GCC.
1335    Once GCC version 2 has supplanted version 1, this can go.  */
1336
1337 #define YYFAIL          goto yyerrlab
1338
1339 #define YYRECOVERING()  (!!yyerrstatus)
1340
1341 #define YYBACKUP(Token, Value)                                  \
1342 do                                                              \
1343   if (yychar == YYEMPTY && yylen == 1)                          \
1344     {                                                           \
1345       yychar = (Token);                                         \
1346       yylval = (Value);                                         \
1347       yytoken = YYTRANSLATE (yychar);                           \
1348       YYPOPSTACK (1);                                           \
1349       goto yybackup;                                            \
1350     }                                                           \
1351   else                                                          \
1352     {                                                           \
1353       yyerror (YY_("syntax error: cannot back up")); \
1354       YYERROR;                                                  \
1355     }                                                           \
1356 while (YYID (0))
1357
1358
1359 #define YYTERROR        1
1360 #define YYERRCODE       256
1361
1362
1363 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1364    If N is 0, then set CURRENT to the empty location which ends
1365    the previous symbol: RHS[0] (always defined).  */
1366
1367 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1368 #ifndef YYLLOC_DEFAULT
1369 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
1370     do                                                                  \
1371       if (YYID (N))                                                    \
1372         {                                                               \
1373           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
1374           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
1375           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
1376           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
1377         }                                                               \
1378       else                                                              \
1379         {                                                               \
1380           (Current).first_line   = (Current).last_line   =              \
1381             YYRHSLOC (Rhs, 0).last_line;                                \
1382           (Current).first_column = (Current).last_column =              \
1383             YYRHSLOC (Rhs, 0).last_column;                              \
1384         }                                                               \
1385     while (YYID (0))
1386 #endif
1387
1388
1389 /* YY_LOCATION_PRINT -- Print the location on the stream.
1390    This macro was not mandated originally: define only if we know
1391    we won't break user code: when these are the locations we know.  */
1392
1393 #ifndef YY_LOCATION_PRINT
1394 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1395 #  define YY_LOCATION_PRINT(File, Loc)                  \
1396      fprintf (File, "%d.%d-%d.%d",                      \
1397               (Loc).first_line, (Loc).first_column,     \
1398               (Loc).last_line,  (Loc).last_column)
1399 # else
1400 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1401 # endif
1402 #endif
1403
1404
1405 /* YYLEX -- calling `yylex' with the right arguments.  */
1406
1407 #ifdef YYLEX_PARAM
1408 # define YYLEX yylex (YYLEX_PARAM)
1409 #else
1410 # define YYLEX yylex ()
1411 #endif
1412
1413 /* Enable debugging if requested.  */
1414 #if YYDEBUG
1415
1416 # ifndef YYFPRINTF
1417 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1418 #  define YYFPRINTF fprintf
1419 # endif
1420
1421 # define YYDPRINTF(Args)                        \
1422 do {                                            \
1423   if (yydebug)                                  \
1424     YYFPRINTF Args;                             \
1425 } while (YYID (0))
1426
1427 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1428 do {                                                                      \
1429   if (yydebug)                                                            \
1430     {                                                                     \
1431       YYFPRINTF (stderr, "%s ", Title);                                   \
1432       yy_symbol_print (stderr,                                            \
1433                   Type, Value); \
1434       YYFPRINTF (stderr, "\n");                                           \
1435     }                                                                     \
1436 } while (YYID (0))
1437
1438
1439 /*--------------------------------.
1440 | Print this symbol on YYOUTPUT.  |
1441 `--------------------------------*/
1442
1443 /*ARGSUSED*/
1444 #if (defined __STDC__ || defined __C99__FUNC__ \
1445      || defined __cplusplus || defined _MSC_VER)
1446 static void
1447 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1448 #else
1449 static void
1450 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1451     FILE *yyoutput;
1452     int yytype;
1453     YYSTYPE const * const yyvaluep;
1454 #endif
1455 {
1456   if (!yyvaluep)
1457     return;
1458 # ifdef YYPRINT
1459   if (yytype < YYNTOKENS)
1460     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1461 # else
1462   YYUSE (yyoutput);
1463 # endif
1464   switch (yytype)
1465     {
1466       default:
1467         break;
1468     }
1469 }
1470
1471
1472 /*--------------------------------.
1473 | Print this symbol on YYOUTPUT.  |
1474 `--------------------------------*/
1475
1476 #if (defined __STDC__ || defined __C99__FUNC__ \
1477      || defined __cplusplus || defined _MSC_VER)
1478 static void
1479 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1480 #else
1481 static void
1482 yy_symbol_print (yyoutput, yytype, yyvaluep)
1483     FILE *yyoutput;
1484     int yytype;
1485     YYSTYPE const * const yyvaluep;
1486 #endif
1487 {
1488   if (yytype < YYNTOKENS)
1489     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1490   else
1491     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1492
1493   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1494   YYFPRINTF (yyoutput, ")");
1495 }
1496
1497 /*------------------------------------------------------------------.
1498 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1499 | TOP (included).                                                   |
1500 `------------------------------------------------------------------*/
1501
1502 #if (defined __STDC__ || defined __C99__FUNC__ \
1503      || defined __cplusplus || defined _MSC_VER)
1504 static void
1505 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1506 #else
1507 static void
1508 yy_stack_print (bottom, top)
1509     yytype_int16 *bottom;
1510     yytype_int16 *top;
1511 #endif
1512 {
1513   YYFPRINTF (stderr, "Stack now");
1514   for (; bottom <= top; ++bottom)
1515     YYFPRINTF (stderr, " %d", *bottom);
1516   YYFPRINTF (stderr, "\n");
1517 }
1518
1519 # define YY_STACK_PRINT(Bottom, Top)                            \
1520 do {                                                            \
1521   if (yydebug)                                                  \
1522     yy_stack_print ((Bottom), (Top));                           \
1523 } while (YYID (0))
1524
1525
1526 /*------------------------------------------------.
1527 | Report that the YYRULE is going to be reduced.  |
1528 `------------------------------------------------*/
1529
1530 #if (defined __STDC__ || defined __C99__FUNC__ \
1531      || defined __cplusplus || defined _MSC_VER)
1532 static void
1533 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1534 #else
1535 static void
1536 yy_reduce_print (yyvsp, yyrule)
1537     YYSTYPE *yyvsp;
1538     int yyrule;
1539 #endif
1540 {
1541   int yynrhs = yyr2[yyrule];
1542   int yyi;
1543   unsigned long int yylno = yyrline[yyrule];
1544   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1545              yyrule - 1, yylno);
1546   /* The symbols being reduced.  */
1547   for (yyi = 0; yyi < yynrhs; yyi++)
1548     {
1549       fprintf (stderr, "   $%d = ", yyi + 1);
1550       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1551                        &(yyvsp[(yyi + 1) - (yynrhs)])
1552                                        );
1553       fprintf (stderr, "\n");
1554     }
1555 }
1556
1557 # define YY_REDUCE_PRINT(Rule)          \
1558 do {                                    \
1559   if (yydebug)                          \
1560     yy_reduce_print (yyvsp, Rule); \
1561 } while (YYID (0))
1562
1563 /* Nonzero means print parse trace.  It is left uninitialized so that
1564    multiple parsers can coexist.  */
1565 int yydebug;
1566 #else /* !YYDEBUG */
1567 # define YYDPRINTF(Args)
1568 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1569 # define YY_STACK_PRINT(Bottom, Top)
1570 # define YY_REDUCE_PRINT(Rule)
1571 #endif /* !YYDEBUG */
1572
1573
1574 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1575 #ifndef YYINITDEPTH
1576 # define YYINITDEPTH 200
1577 #endif
1578
1579 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1580    if the built-in stack extension method is used).
1581
1582    Do not make this value too large; the results are undefined if
1583    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1584    evaluated with infinite-precision integer arithmetic.  */
1585
1586 #ifndef YYMAXDEPTH
1587 # define YYMAXDEPTH 10000
1588 #endif
1589
1590 \f
1591
1592 #if YYERROR_VERBOSE
1593
1594 # ifndef yystrlen
1595 #  if defined __GLIBC__ && defined _STRING_H
1596 #   define yystrlen strlen
1597 #  else
1598 /* Return the length of YYSTR.  */
1599 #if (defined __STDC__ || defined __C99__FUNC__ \
1600      || defined __cplusplus || defined _MSC_VER)
1601 static YYSIZE_T
1602 yystrlen (const char *yystr)
1603 #else
1604 static YYSIZE_T
1605 yystrlen (yystr)
1606     const char *yystr;
1607 #endif
1608 {
1609   YYSIZE_T yylen;
1610   for (yylen = 0; yystr[yylen]; yylen++)
1611     continue;
1612   return yylen;
1613 }
1614 #  endif
1615 # endif
1616
1617 # ifndef yystpcpy
1618 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1619 #   define yystpcpy stpcpy
1620 #  else
1621 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1622    YYDEST.  */
1623 #if (defined __STDC__ || defined __C99__FUNC__ \
1624      || defined __cplusplus || defined _MSC_VER)
1625 static char *
1626 yystpcpy (char *yydest, const char *yysrc)
1627 #else
1628 static char *
1629 yystpcpy (yydest, yysrc)
1630     char *yydest;
1631     const char *yysrc;
1632 #endif
1633 {
1634   char *yyd = yydest;
1635   const char *yys = yysrc;
1636
1637   while ((*yyd++ = *yys++) != '\0')
1638     continue;
1639
1640   return yyd - 1;
1641 }
1642 #  endif
1643 # endif
1644
1645 # ifndef yytnamerr
1646 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1647    quotes and backslashes, so that it's suitable for yyerror.  The
1648    heuristic is that double-quoting is unnecessary unless the string
1649    contains an apostrophe, a comma, or backslash (other than
1650    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1651    null, do not copy; instead, return the length of what the result
1652    would have been.  */
1653 static YYSIZE_T
1654 yytnamerr (char *yyres, const char *yystr)
1655 {
1656   if (*yystr == '"')
1657     {
1658       YYSIZE_T yyn = 0;
1659       char const *yyp = yystr;
1660
1661       for (;;)
1662         switch (*++yyp)
1663           {
1664           case '\'':
1665           case ',':
1666             goto do_not_strip_quotes;
1667
1668           case '\\':
1669             if (*++yyp != '\\')
1670               goto do_not_strip_quotes;
1671             /* Fall through.  */
1672           default:
1673             if (yyres)
1674               yyres[yyn] = *yyp;
1675             yyn++;
1676             break;
1677
1678           case '"':
1679             if (yyres)
1680               yyres[yyn] = '\0';
1681             return yyn;
1682           }
1683     do_not_strip_quotes: ;
1684     }
1685
1686   if (! yyres)
1687     return yystrlen (yystr);
1688
1689   return yystpcpy (yyres, yystr) - yyres;
1690 }
1691 # endif
1692
1693 /* Copy into YYRESULT an error message about the unexpected token
1694    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1695    including the terminating null byte.  If YYRESULT is null, do not
1696    copy anything; just return the number of bytes that would be
1697    copied.  As a special case, return 0 if an ordinary "syntax error"
1698    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1699    size calculation.  */
1700 static YYSIZE_T
1701 yysyntax_error (char *yyresult, int yystate, int yychar)
1702 {
1703   int yyn = yypact[yystate];
1704
1705   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1706     return 0;
1707   else
1708     {
1709       int yytype = YYTRANSLATE (yychar);
1710       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1711       YYSIZE_T yysize = yysize0;
1712       YYSIZE_T yysize1;
1713       int yysize_overflow = 0;
1714       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1715       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1716       int yyx;
1717
1718 # if 0
1719       /* This is so xgettext sees the translatable formats that are
1720          constructed on the fly.  */
1721       YY_("syntax error, unexpected %s");
1722       YY_("syntax error, unexpected %s, expecting %s");
1723       YY_("syntax error, unexpected %s, expecting %s or %s");
1724       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1725       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1726 # endif
1727       char *yyfmt;
1728       char const *yyf;
1729       static char const yyunexpected[] = "syntax error, unexpected %s";
1730       static char const yyexpecting[] = ", expecting %s";
1731       static char const yyor[] = " or %s";
1732       char yyformat[sizeof yyunexpected
1733                     + sizeof yyexpecting - 1
1734                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1735                        * (sizeof yyor - 1))];
1736       char const *yyprefix = yyexpecting;
1737
1738       /* Start YYX at -YYN if negative to avoid negative indexes in
1739          YYCHECK.  */
1740       int yyxbegin = yyn < 0 ? -yyn : 0;
1741
1742       /* Stay within bounds of both yycheck and yytname.  */
1743       int yychecklim = YYLAST - yyn + 1;
1744       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1745       int yycount = 1;
1746
1747       yyarg[0] = yytname[yytype];
1748       yyfmt = yystpcpy (yyformat, yyunexpected);
1749
1750       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1751         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1752           {
1753             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1754               {
1755                 yycount = 1;
1756                 yysize = yysize0;
1757                 yyformat[sizeof yyunexpected - 1] = '\0';
1758                 break;
1759               }
1760             yyarg[yycount++] = yytname[yyx];
1761             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1762             yysize_overflow |= (yysize1 < yysize);
1763             yysize = yysize1;
1764             yyfmt = yystpcpy (yyfmt, yyprefix);
1765             yyprefix = yyor;
1766           }
1767
1768       yyf = YY_(yyformat);
1769       yysize1 = yysize + yystrlen (yyf);
1770       yysize_overflow |= (yysize1 < yysize);
1771       yysize = yysize1;
1772
1773       if (yysize_overflow)
1774         return YYSIZE_MAXIMUM;
1775
1776       if (yyresult)
1777         {
1778           /* Avoid sprintf, as that infringes on the user's name space.
1779              Don't have undefined behavior even if the translation
1780              produced a string with the wrong number of "%s"s.  */
1781           char *yyp = yyresult;
1782           int yyi = 0;
1783           while ((*yyp = *yyf) != '\0')
1784             {
1785               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1786                 {
1787                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1788                   yyf += 2;
1789                 }
1790               else
1791                 {
1792                   yyp++;
1793                   yyf++;
1794                 }
1795             }
1796         }
1797       return yysize;
1798     }
1799 }
1800 #endif /* YYERROR_VERBOSE */
1801 \f
1802
1803 /*-----------------------------------------------.
1804 | Release the memory associated to this symbol.  |
1805 `-----------------------------------------------*/
1806
1807 /*ARGSUSED*/
1808 #if (defined __STDC__ || defined __C99__FUNC__ \
1809      || defined __cplusplus || defined _MSC_VER)
1810 static void
1811 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1812 #else
1813 static void
1814 yydestruct (yymsg, yytype, yyvaluep)
1815     const char *yymsg;
1816     int yytype;
1817     YYSTYPE *yyvaluep;
1818 #endif
1819 {
1820   YYUSE (yyvaluep);
1821
1822   if (!yymsg)
1823     yymsg = "Deleting";
1824   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1825
1826   switch (yytype)
1827     {
1828
1829       default:
1830         break;
1831     }
1832 }
1833 \f
1834
1835 /* Prevent warnings from -Wmissing-prototypes.  */
1836
1837 #ifdef YYPARSE_PARAM
1838 #if defined __STDC__ || defined __cplusplus
1839 int yyparse (void *YYPARSE_PARAM);
1840 #else
1841 int yyparse ();
1842 #endif
1843 #else /* ! YYPARSE_PARAM */
1844 #if defined __STDC__ || defined __cplusplus
1845 int yyparse (void);
1846 #else
1847 int yyparse ();
1848 #endif
1849 #endif /* ! YYPARSE_PARAM */
1850
1851
1852
1853 /* The look-ahead symbol.  */
1854 int yychar;
1855
1856 /* The semantic value of the look-ahead symbol.  */
1857 YYSTYPE yylval;
1858
1859 /* Number of syntax errors so far.  */
1860 int yynerrs;
1861
1862
1863
1864 /*----------.
1865 | yyparse.  |
1866 `----------*/
1867
1868 #ifdef YYPARSE_PARAM
1869 #if (defined __STDC__ || defined __C99__FUNC__ \
1870      || defined __cplusplus || defined _MSC_VER)
1871 int
1872 yyparse (void *YYPARSE_PARAM)
1873 #else
1874 int
1875 yyparse (YYPARSE_PARAM)
1876     void *YYPARSE_PARAM;
1877 #endif
1878 #else /* ! YYPARSE_PARAM */
1879 #if (defined __STDC__ || defined __C99__FUNC__ \
1880      || defined __cplusplus || defined _MSC_VER)
1881 int
1882 yyparse (void)
1883 #else
1884 int
1885 yyparse ()
1886
1887 #endif
1888 #endif
1889 {
1890   
1891   int yystate;
1892   int yyn;
1893   int yyresult;
1894   /* Number of tokens to shift before error messages enabled.  */
1895   int yyerrstatus;
1896   /* Look-ahead token as an internal (translated) token number.  */
1897   int yytoken = 0;
1898 #if YYERROR_VERBOSE
1899   /* Buffer for error messages, and its allocated size.  */
1900   char yymsgbuf[128];
1901   char *yymsg = yymsgbuf;
1902   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1903 #endif
1904
1905   /* Three stacks and their tools:
1906      `yyss': related to states,
1907      `yyvs': related to semantic values,
1908      `yyls': related to locations.
1909
1910      Refer to the stacks thru separate pointers, to allow yyoverflow
1911      to reallocate them elsewhere.  */
1912
1913   /* The state stack.  */
1914   yytype_int16 yyssa[YYINITDEPTH];
1915   yytype_int16 *yyss = yyssa;
1916   yytype_int16 *yyssp;
1917
1918   /* The semantic value stack.  */
1919   YYSTYPE yyvsa[YYINITDEPTH];
1920   YYSTYPE *yyvs = yyvsa;
1921   YYSTYPE *yyvsp;
1922
1923
1924
1925 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1926
1927   YYSIZE_T yystacksize = YYINITDEPTH;
1928
1929   /* The variables used to return semantic value and location from the
1930      action routines.  */
1931   YYSTYPE yyval;
1932
1933
1934   /* The number of symbols on the RHS of the reduced rule.
1935      Keep to zero when no symbol should be popped.  */
1936   int yylen = 0;
1937
1938   YYDPRINTF ((stderr, "Starting parse\n"));
1939
1940   yystate = 0;
1941   yyerrstatus = 0;
1942   yynerrs = 0;
1943   yychar = YYEMPTY;             /* Cause a token to be read.  */
1944
1945   /* Initialize stack pointers.
1946      Waste one element of value and location stack
1947      so that they stay on the same level as the state stack.
1948      The wasted elements are never initialized.  */
1949
1950   yyssp = yyss;
1951   yyvsp = yyvs;
1952
1953   goto yysetstate;
1954
1955 /*------------------------------------------------------------.
1956 | yynewstate -- Push a new state, which is found in yystate.  |
1957 `------------------------------------------------------------*/
1958  yynewstate:
1959   /* In all cases, when you get here, the value and location stacks
1960      have just been pushed.  So pushing a state here evens the stacks.  */
1961   yyssp++;
1962
1963  yysetstate:
1964   *yyssp = yystate;
1965
1966   if (yyss + yystacksize - 1 <= yyssp)
1967     {
1968       /* Get the current used size of the three stacks, in elements.  */
1969       YYSIZE_T yysize = yyssp - yyss + 1;
1970
1971 #ifdef yyoverflow
1972       {
1973         /* Give user a chance to reallocate the stack.  Use copies of
1974            these so that the &'s don't force the real ones into
1975            memory.  */
1976         YYSTYPE *yyvs1 = yyvs;
1977         yytype_int16 *yyss1 = yyss;
1978
1979
1980         /* Each stack pointer address is followed by the size of the
1981            data in use in that stack, in bytes.  This used to be a
1982            conditional around just the two extra args, but that might
1983            be undefined if yyoverflow is a macro.  */
1984         yyoverflow (YY_("memory exhausted"),
1985                     &yyss1, yysize * sizeof (*yyssp),
1986                     &yyvs1, yysize * sizeof (*yyvsp),
1987
1988                     &yystacksize);
1989
1990         yyss = yyss1;
1991         yyvs = yyvs1;
1992       }
1993 #else /* no yyoverflow */
1994 # ifndef YYSTACK_RELOCATE
1995       goto yyexhaustedlab;
1996 # else
1997       /* Extend the stack our own way.  */
1998       if (YYMAXDEPTH <= yystacksize)
1999         goto yyexhaustedlab;
2000       yystacksize *= 2;
2001       if (YYMAXDEPTH < yystacksize)
2002         yystacksize = YYMAXDEPTH;
2003
2004       {
2005         yytype_int16 *yyss1 = yyss;
2006         union yyalloc *yyptr =
2007           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2008         if (! yyptr)
2009           goto yyexhaustedlab;
2010         YYSTACK_RELOCATE (yyss);
2011         YYSTACK_RELOCATE (yyvs);
2012
2013 #  undef YYSTACK_RELOCATE
2014         if (yyss1 != yyssa)
2015           YYSTACK_FREE (yyss1);
2016       }
2017 # endif
2018 #endif /* no yyoverflow */
2019
2020       yyssp = yyss + yysize - 1;
2021       yyvsp = yyvs + yysize - 1;
2022
2023
2024       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2025                   (unsigned long int) yystacksize));
2026
2027       if (yyss + yystacksize - 1 <= yyssp)
2028         YYABORT;
2029     }
2030
2031   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2032
2033   goto yybackup;
2034
2035 /*-----------.
2036 | yybackup.  |
2037 `-----------*/
2038 yybackup:
2039
2040   /* Do appropriate processing given the current state.  Read a
2041      look-ahead token if we need one and don't already have one.  */
2042
2043   /* First try to decide what to do without reference to look-ahead token.  */
2044   yyn = yypact[yystate];
2045   if (yyn == YYPACT_NINF)
2046     goto yydefault;
2047
2048   /* Not known => get a look-ahead token if don't already have one.  */
2049
2050   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
2051   if (yychar == YYEMPTY)
2052     {
2053       YYDPRINTF ((stderr, "Reading a token: "));
2054       yychar = YYLEX;
2055     }
2056
2057   if (yychar <= YYEOF)
2058     {
2059       yychar = yytoken = YYEOF;
2060       YYDPRINTF ((stderr, "Now at end of input.\n"));
2061     }
2062   else
2063     {
2064       yytoken = YYTRANSLATE (yychar);
2065       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2066     }
2067
2068   /* If the proper action on seeing token YYTOKEN is to reduce or to
2069      detect an error, take that action.  */
2070   yyn += yytoken;
2071   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2072     goto yydefault;
2073   yyn = yytable[yyn];
2074   if (yyn <= 0)
2075     {
2076       if (yyn == 0 || yyn == YYTABLE_NINF)
2077         goto yyerrlab;
2078       yyn = -yyn;
2079       goto yyreduce;
2080     }
2081
2082   if (yyn == YYFINAL)
2083     YYACCEPT;
2084
2085   /* Count tokens shifted since error; after three, turn off error
2086      status.  */
2087   if (yyerrstatus)
2088     yyerrstatus--;
2089
2090   /* Shift the look-ahead token.  */
2091   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2092
2093   /* Discard the shifted token unless it is eof.  */
2094   if (yychar != YYEOF)
2095     yychar = YYEMPTY;
2096
2097   yystate = yyn;
2098   *++yyvsp = yylval;
2099
2100   goto yynewstate;
2101
2102
2103 /*-----------------------------------------------------------.
2104 | yydefault -- do the default action for the current state.  |
2105 `-----------------------------------------------------------*/
2106 yydefault:
2107   yyn = yydefact[yystate];
2108   if (yyn == 0)
2109     goto yyerrlab;
2110   goto yyreduce;
2111
2112
2113 /*-----------------------------.
2114 | yyreduce -- Do a reduction.  |
2115 `-----------------------------*/
2116 yyreduce:
2117   /* yyn is the number of a rule to reduce with.  */
2118   yylen = yyr2[yyn];
2119
2120   /* If YYLEN is nonzero, implement the default value of the action:
2121      `$$ = $1'.
2122
2123      Otherwise, the following line sets YYVAL to garbage.
2124      This behavior is undocumented and Bison
2125      users should not rely upon it.  Assigning to YYVAL
2126      unconditionally makes the parser a bit smaller, and it avoids a
2127      GCC warning that YYVAL may be used uninitialized.  */
2128   yyval = yyvsp[1-yylen];
2129
2130
2131   YY_REDUCE_PRINT (yyn);
2132   switch (yyn)
2133     {
2134         case 2:
2135 #line 159 "xi-grammar.y"
2136     { (yyval.modlist) = (yyvsp[(1) - (1)].modlist); modlist = (yyvsp[(1) - (1)].modlist); }
2137     break;
2138
2139   case 3:
2140 #line 163 "xi-grammar.y"
2141     { 
2142                   (yyval.modlist) = 0; 
2143                 }
2144     break;
2145
2146   case 4:
2147 #line 167 "xi-grammar.y"
2148     { (yyval.modlist) = new ModuleList(lineno, (yyvsp[(1) - (2)].module), (yyvsp[(2) - (2)].modlist)); }
2149     break;
2150
2151   case 5:
2152 #line 171 "xi-grammar.y"
2153     { (yyval.intval) = 0; }
2154     break;
2155
2156   case 6:
2157 #line 173 "xi-grammar.y"
2158     { (yyval.intval) = 1; }
2159     break;
2160
2161   case 7:
2162 #line 177 "xi-grammar.y"
2163     { (yyval.intval) = 0; }
2164     break;
2165
2166   case 8:
2167 #line 179 "xi-grammar.y"
2168     { (yyval.intval) = 1; }
2169     break;
2170
2171   case 9:
2172 #line 183 "xi-grammar.y"
2173     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
2174     break;
2175
2176   case 10:
2177 #line 187 "xi-grammar.y"
2178     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
2179     break;
2180
2181   case 11:
2182 #line 189 "xi-grammar.y"
2183     {
2184                   char *tmp = new char[strlen((yyvsp[(1) - (4)].strval))+strlen((yyvsp[(4) - (4)].strval))+3];
2185                   sprintf(tmp,"%s::%s", (yyvsp[(1) - (4)].strval), (yyvsp[(4) - (4)].strval));
2186                   (yyval.strval) = tmp;
2187                 }
2188     break;
2189
2190   case 12:
2191 #line 197 "xi-grammar.y"
2192     { 
2193                     (yyval.module) = new Module(lineno, (yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].conslist)); 
2194                 }
2195     break;
2196
2197   case 13:
2198 #line 201 "xi-grammar.y"
2199     {  
2200                     (yyval.module) = new Module(lineno, (yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].conslist)); 
2201                     (yyval.module)->setMain();
2202                 }
2203     break;
2204
2205   case 14:
2206 #line 208 "xi-grammar.y"
2207     { (yyval.conslist) = 0; }
2208     break;
2209
2210   case 15:
2211 #line 210 "xi-grammar.y"
2212     { (yyval.conslist) = (yyvsp[(2) - (4)].conslist); }
2213     break;
2214
2215   case 16:
2216 #line 214 "xi-grammar.y"
2217     { (yyval.conslist) = 0; }
2218     break;
2219
2220   case 17:
2221 #line 216 "xi-grammar.y"
2222     { (yyval.conslist) = new ConstructList(lineno, (yyvsp[(1) - (2)].construct), (yyvsp[(2) - (2)].conslist)); }
2223     break;
2224
2225   case 18:
2226 #line 220 "xi-grammar.y"
2227     { if((yyvsp[(3) - (5)].conslist)) (yyvsp[(3) - (5)].conslist)->setExtern((yyvsp[(1) - (5)].intval)); (yyval.construct) = (yyvsp[(3) - (5)].conslist); }
2228     break;
2229
2230   case 19:
2231 #line 222 "xi-grammar.y"
2232     { (yyval.construct) = new Scope((yyvsp[(2) - (5)].strval), (yyvsp[(4) - (5)].conslist)); }
2233     break;
2234
2235   case 20:
2236 #line 224 "xi-grammar.y"
2237     { (yyval.construct) = new UsingScope((yyvsp[(3) - (4)].strval), false); }
2238     break;
2239
2240   case 21:
2241 #line 226 "xi-grammar.y"
2242     { (yyval.construct) = new UsingScope((yyvsp[(2) - (3)].strval), true); }
2243     break;
2244
2245   case 22:
2246 #line 228 "xi-grammar.y"
2247     { (yyvsp[(2) - (2)].module)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].module); }
2248     break;
2249
2250   case 23:
2251 #line 230 "xi-grammar.y"
2252     { (yyvsp[(2) - (2)].member)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].member); }
2253     break;
2254
2255   case 24:
2256 #line 232 "xi-grammar.y"
2257     { (yyvsp[(2) - (3)].message)->setExtern((yyvsp[(1) - (3)].intval)); (yyval.construct) = (yyvsp[(2) - (3)].message); }
2258     break;
2259
2260   case 25:
2261 #line 234 "xi-grammar.y"
2262     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
2263     break;
2264
2265   case 26:
2266 #line 236 "xi-grammar.y"
2267     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
2268     break;
2269
2270   case 27:
2271 #line 238 "xi-grammar.y"
2272     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
2273     break;
2274
2275   case 28:
2276 #line 240 "xi-grammar.y"
2277     { (yyvsp[(2) - (2)].chare)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].chare); }
2278     break;
2279
2280   case 29:
2281 #line 242 "xi-grammar.y"
2282     { (yyvsp[(2) - (2)].templat)->setExtern((yyvsp[(1) - (2)].intval)); (yyval.construct) = (yyvsp[(2) - (2)].templat); }
2283     break;
2284
2285   case 30:
2286 #line 244 "xi-grammar.y"
2287     {
2288           Entry *e = new Entry(lineno, 0, (yyvsp[(3) - (8)].type), (yyvsp[(5) - (8)].strval), (yyvsp[(7) - (8)].plist), 0, 0, 0, 0, 0);
2289           int isExtern = 1;
2290           e->setExtern(isExtern);
2291           e->targs = (yyvsp[(6) - (8)].tparlist);
2292           e->label = new XStr;
2293           (yyvsp[(4) - (8)].ntype)->print(*e->label);
2294           (yyval.construct) = e;
2295         }
2296     break;
2297
2298   case 31:
2299 #line 254 "xi-grammar.y"
2300     { (yyval.construct) = NULL; }
2301     break;
2302
2303   case 32:
2304 #line 256 "xi-grammar.y"
2305     { (yyval.construct) = NULL; }
2306     break;
2307
2308   case 33:
2309 #line 258 "xi-grammar.y"
2310     { (yyval.construct) = (yyvsp[(1) - (1)].accelBlock); }
2311     break;
2312
2313   case 34:
2314 #line 260 "xi-grammar.y"
2315     { printf("Invalid construct\n"); YYABORT; }
2316     break;
2317
2318   case 35:
2319 #line 264 "xi-grammar.y"
2320     { (yyval.tparam) = new TParamType((yyvsp[(1) - (1)].type)); }
2321     break;
2322
2323   case 36:
2324 #line 266 "xi-grammar.y"
2325     { (yyval.tparam) = new TParamVal((yyvsp[(1) - (1)].strval)); }
2326     break;
2327
2328   case 37:
2329 #line 268 "xi-grammar.y"
2330     { (yyval.tparam) = new TParamVal((yyvsp[(1) - (1)].strval)); }
2331     break;
2332
2333   case 38:
2334 #line 272 "xi-grammar.y"
2335     { (yyval.tparlist) = new TParamList((yyvsp[(1) - (1)].tparam)); }
2336     break;
2337
2338   case 39:
2339 #line 274 "xi-grammar.y"
2340     { (yyval.tparlist) = new TParamList((yyvsp[(1) - (3)].tparam), (yyvsp[(3) - (3)].tparlist)); }
2341     break;
2342
2343   case 40:
2344 #line 278 "xi-grammar.y"
2345     { (yyval.tparlist) = 0; }
2346     break;
2347
2348   case 41:
2349 #line 280 "xi-grammar.y"
2350     { (yyval.tparlist) = (yyvsp[(1) - (1)].tparlist); }
2351     break;
2352
2353   case 42:
2354 #line 284 "xi-grammar.y"
2355     { (yyval.tparlist) = 0; }
2356     break;
2357
2358   case 43:
2359 #line 286 "xi-grammar.y"
2360     { (yyval.tparlist) = (yyvsp[(2) - (3)].tparlist); }
2361     break;
2362
2363   case 44:
2364 #line 290 "xi-grammar.y"
2365     { (yyval.type) = new BuiltinType("int"); }
2366     break;
2367
2368   case 45:
2369 #line 292 "xi-grammar.y"
2370     { (yyval.type) = new BuiltinType("long"); }
2371     break;
2372
2373   case 46:
2374 #line 294 "xi-grammar.y"
2375     { (yyval.type) = new BuiltinType("short"); }
2376     break;
2377
2378   case 47:
2379 #line 296 "xi-grammar.y"
2380     { (yyval.type) = new BuiltinType("char"); }
2381     break;
2382
2383   case 48:
2384 #line 298 "xi-grammar.y"
2385     { (yyval.type) = new BuiltinType("unsigned int"); }
2386     break;
2387
2388   case 49:
2389 #line 300 "xi-grammar.y"
2390     { (yyval.type) = new BuiltinType("unsigned long"); }
2391     break;
2392
2393   case 50:
2394 #line 302 "xi-grammar.y"
2395     { (yyval.type) = new BuiltinType("unsigned long"); }
2396     break;
2397
2398   case 51:
2399 #line 304 "xi-grammar.y"
2400     { (yyval.type) = new BuiltinType("unsigned long long"); }
2401     break;
2402
2403   case 52:
2404 #line 306 "xi-grammar.y"
2405     { (yyval.type) = new BuiltinType("unsigned short"); }
2406     break;
2407
2408   case 53:
2409 #line 308 "xi-grammar.y"
2410     { (yyval.type) = new BuiltinType("unsigned char"); }
2411     break;
2412
2413   case 54:
2414 #line 310 "xi-grammar.y"
2415     { (yyval.type) = new BuiltinType("long long"); }
2416     break;
2417
2418   case 55:
2419 #line 312 "xi-grammar.y"
2420     { (yyval.type) = new BuiltinType("float"); }
2421     break;
2422
2423   case 56:
2424 #line 314 "xi-grammar.y"
2425     { (yyval.type) = new BuiltinType("double"); }
2426     break;
2427
2428   case 57:
2429 #line 316 "xi-grammar.y"
2430     { (yyval.type) = new BuiltinType("long double"); }
2431     break;
2432
2433   case 58:
2434 #line 318 "xi-grammar.y"
2435     { (yyval.type) = new BuiltinType("void"); }
2436     break;
2437
2438   case 59:
2439 #line 321 "xi-grammar.y"
2440     { (yyval.ntype) = new NamedType((yyvsp[(1) - (2)].strval),(yyvsp[(2) - (2)].tparlist)); }
2441     break;
2442
2443   case 60:
2444 #line 322 "xi-grammar.y"
2445     { 
2446                     const char* basename, *scope;
2447                     splitScopedName((yyvsp[(1) - (2)].strval), &scope, &basename);
2448                     (yyval.ntype) = new NamedType(basename, (yyvsp[(2) - (2)].tparlist), scope);
2449                 }
2450     break;
2451
2452   case 61:
2453 #line 330 "xi-grammar.y"
2454     { (yyval.type) = (yyvsp[(1) - (1)].type); }
2455     break;
2456
2457   case 62:
2458 #line 332 "xi-grammar.y"
2459     { (yyval.type) = (yyvsp[(1) - (1)].ntype); }
2460     break;
2461
2462   case 63:
2463 #line 336 "xi-grammar.y"
2464     { (yyval.ptype) = new PtrType((yyvsp[(1) - (2)].type)); }
2465     break;
2466
2467   case 64:
2468 #line 340 "xi-grammar.y"
2469     { (yyvsp[(1) - (2)].ptype)->indirect(); (yyval.ptype) = (yyvsp[(1) - (2)].ptype); }
2470     break;
2471
2472   case 65:
2473 #line 342 "xi-grammar.y"
2474     { (yyvsp[(1) - (2)].ptype)->indirect(); (yyval.ptype) = (yyvsp[(1) - (2)].ptype); }
2475     break;
2476
2477   case 66:
2478 #line 346 "xi-grammar.y"
2479     { (yyval.ftype) = new FuncType((yyvsp[(1) - (8)].type), (yyvsp[(4) - (8)].strval), (yyvsp[(7) - (8)].plist)); }
2480     break;
2481
2482   case 67:
2483 #line 350 "xi-grammar.y"
2484     { (yyval.type) = (yyvsp[(1) - (1)].type); }
2485     break;
2486
2487   case 68:
2488 #line 352 "xi-grammar.y"
2489     { (yyval.type) = (yyvsp[(1) - (1)].ptype); }
2490     break;
2491
2492   case 69:
2493 #line 354 "xi-grammar.y"
2494     { (yyval.type) = (yyvsp[(1) - (1)].ptype); }
2495     break;
2496
2497   case 70:
2498 #line 356 "xi-grammar.y"
2499     { (yyval.type) = (yyvsp[(1) - (1)].ftype); }
2500     break;
2501
2502   case 71:
2503 #line 359 "xi-grammar.y"
2504     { (yyval.type) = (yyvsp[(2) - (2)].type); }
2505     break;
2506
2507   case 72:
2508 #line 361 "xi-grammar.y"
2509     { (yyval.type) = (yyvsp[(1) - (2)].type); }
2510     break;
2511
2512   case 73:
2513 #line 365 "xi-grammar.y"
2514     { (yyval.type) = new ReferenceType((yyvsp[(1) - (2)].type)); }
2515     break;
2516
2517   case 74:
2518 #line 367 "xi-grammar.y"
2519     { (yyval.type) = (yyvsp[(1) - (1)].type); }
2520     break;
2521
2522   case 75:
2523 #line 371 "xi-grammar.y"
2524     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
2525     break;
2526
2527   case 76:
2528 #line 373 "xi-grammar.y"
2529     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
2530     break;
2531
2532   case 77:
2533 #line 377 "xi-grammar.y"
2534     { (yyval.val) = (yyvsp[(2) - (3)].val); }
2535     break;
2536
2537   case 78:
2538 #line 381 "xi-grammar.y"
2539     { (yyval.vallist) = 0; }
2540     break;
2541
2542   case 79:
2543 #line 383 "xi-grammar.y"
2544     { (yyval.vallist) = new ValueList((yyvsp[(1) - (2)].val), (yyvsp[(2) - (2)].vallist)); }
2545     break;
2546
2547   case 80:
2548 #line 387 "xi-grammar.y"
2549     { (yyval.readonly) = new Readonly(lineno, (yyvsp[(2) - (4)].type), (yyvsp[(3) - (4)].strval), (yyvsp[(4) - (4)].vallist)); }
2550     break;
2551
2552   case 81:
2553 #line 391 "xi-grammar.y"
2554     { (yyval.readonly) = new Readonly(lineno, (yyvsp[(3) - (5)].type), (yyvsp[(5) - (5)].strval), 0, 1); }
2555     break;
2556
2557   case 82:
2558 #line 395 "xi-grammar.y"
2559     { (yyval.intval) = 0;}
2560     break;
2561
2562   case 83:
2563 #line 397 "xi-grammar.y"
2564     { (yyval.intval) = 0;}
2565     break;
2566
2567   case 84:
2568 #line 401 "xi-grammar.y"
2569     { (yyval.intval) = 0; }
2570     break;
2571
2572   case 85:
2573 #line 403 "xi-grammar.y"
2574     { 
2575                   /*
2576                   printf("Warning: Message attributes are being phased out.\n");
2577                   printf("Warning: Please remove them from interface files.\n");
2578                   */
2579                   (yyval.intval) = (yyvsp[(2) - (3)].intval); 
2580                 }
2581     break;
2582
2583   case 86:
2584 #line 413 "xi-grammar.y"
2585     { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
2586     break;
2587
2588   case 87:
2589 #line 415 "xi-grammar.y"
2590     { (yyval.intval) = (yyvsp[(1) - (3)].intval) | (yyvsp[(3) - (3)].intval); }
2591     break;
2592
2593   case 88:
2594 #line 419 "xi-grammar.y"
2595     { (yyval.intval) = 0; }
2596     break;
2597
2598   case 89:
2599 #line 421 "xi-grammar.y"
2600     { (yyval.intval) = 0; }
2601     break;
2602
2603   case 90:
2604 #line 425 "xi-grammar.y"
2605     { (yyval.cattr) = 0; }
2606     break;
2607
2608   case 91:
2609 #line 427 "xi-grammar.y"
2610     { (yyval.cattr) = (yyvsp[(2) - (3)].cattr); }
2611     break;
2612
2613   case 92:
2614 #line 431 "xi-grammar.y"
2615     { (yyval.cattr) = (yyvsp[(1) - (1)].cattr); }
2616     break;
2617
2618   case 93:
2619 #line 433 "xi-grammar.y"
2620     { (yyval.cattr) = (yyvsp[(1) - (3)].cattr) | (yyvsp[(3) - (3)].cattr); }
2621     break;
2622
2623   case 94:
2624 #line 437 "xi-grammar.y"
2625     { python_doc = NULL; (yyval.intval) = 0; }
2626     break;
2627
2628   case 95:
2629 #line 439 "xi-grammar.y"
2630     { python_doc = (yyvsp[(1) - (1)].strval); (yyval.intval) = 0; }
2631     break;
2632
2633   case 96:
2634 #line 443 "xi-grammar.y"
2635     { (yyval.cattr) = Chare::CPYTHON; }
2636     break;
2637
2638   case 97:
2639 #line 447 "xi-grammar.y"
2640     { (yyval.cattr) = 0; }
2641     break;
2642
2643   case 98:
2644 #line 449 "xi-grammar.y"
2645     { (yyval.cattr) = (yyvsp[(2) - (3)].cattr); }
2646     break;
2647
2648   case 99:
2649 #line 453 "xi-grammar.y"
2650     { (yyval.cattr) = (yyvsp[(1) - (1)].cattr); }
2651     break;
2652
2653   case 100:
2654 #line 455 "xi-grammar.y"
2655     { (yyval.cattr) = (yyvsp[(1) - (3)].cattr) | (yyvsp[(3) - (3)].cattr); }
2656     break;
2657
2658   case 101:
2659 #line 459 "xi-grammar.y"
2660     { (yyval.cattr) = Chare::CMIGRATABLE; }
2661     break;
2662
2663   case 102:
2664 #line 461 "xi-grammar.y"
2665     { (yyval.cattr) = Chare::CPYTHON; }
2666     break;
2667
2668   case 103:
2669 #line 465 "xi-grammar.y"
2670     { (yyval.intval) = 0; }
2671     break;
2672
2673   case 104:
2674 #line 467 "xi-grammar.y"
2675     { (yyval.intval) = 1; }
2676     break;
2677
2678   case 105:
2679 #line 470 "xi-grammar.y"
2680     { (yyval.intval) = 0; }
2681     break;
2682
2683   case 106:
2684 #line 472 "xi-grammar.y"
2685     { (yyval.intval) = 1; }
2686     break;
2687
2688   case 107:
2689 #line 475 "xi-grammar.y"
2690     { (yyval.mv) = new MsgVar((yyvsp[(2) - (5)].type), (yyvsp[(3) - (5)].strval), (yyvsp[(1) - (5)].intval), (yyvsp[(4) - (5)].intval)); }
2691     break;
2692
2693   case 108:
2694 #line 479 "xi-grammar.y"
2695     { (yyval.mvlist) = new MsgVarList((yyvsp[(1) - (1)].mv)); }
2696     break;
2697
2698   case 109:
2699 #line 481 "xi-grammar.y"
2700     { (yyval.mvlist) = new MsgVarList((yyvsp[(1) - (2)].mv), (yyvsp[(2) - (2)].mvlist)); }
2701     break;
2702
2703   case 110:
2704 #line 485 "xi-grammar.y"
2705     { (yyval.message) = new Message(lineno, (yyvsp[(3) - (3)].ntype)); }
2706     break;
2707
2708   case 111:
2709 #line 487 "xi-grammar.y"
2710     { (yyval.message) = new Message(lineno, (yyvsp[(3) - (6)].ntype), (yyvsp[(5) - (6)].mvlist)); }
2711     break;
2712
2713   case 112:
2714 #line 491 "xi-grammar.y"
2715     { (yyval.typelist) = 0; }
2716     break;
2717
2718   case 113:
2719 #line 493 "xi-grammar.y"
2720     { (yyval.typelist) = (yyvsp[(2) - (2)].typelist); }
2721     break;
2722
2723   case 114:
2724 #line 497 "xi-grammar.y"
2725     { (yyval.typelist) = new TypeList((yyvsp[(1) - (1)].ntype)); }
2726     break;
2727
2728   case 115:
2729 #line 499 "xi-grammar.y"
2730     { (yyval.typelist) = new TypeList((yyvsp[(1) - (3)].ntype), (yyvsp[(3) - (3)].typelist)); }
2731     break;
2732
2733   case 116:
2734 #line 503 "xi-grammar.y"
2735     { (yyval.chare) = new Chare(lineno, (yyvsp[(2) - (5)].cattr)|Chare::CCHARE, (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2736           hasSeenConstructor = false;
2737         }
2738     break;
2739
2740   case 117:
2741 #line 507 "xi-grammar.y"
2742     { (yyval.chare) = new MainChare(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2743           hasSeenConstructor = false;
2744         }
2745     break;
2746
2747   case 118:
2748 #line 513 "xi-grammar.y"
2749     { (yyval.chare) = new Group(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2750           hasSeenConstructor = false;
2751         }
2752     break;
2753
2754   case 119:
2755 #line 519 "xi-grammar.y"
2756     { (yyval.chare) = new NodeGroup(lineno, (yyvsp[(2) - (5)].cattr), (yyvsp[(3) - (5)].ntype), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2757           hasSeenConstructor = false;
2758         }
2759     break;
2760
2761   case 120:
2762 #line 525 "xi-grammar.y"
2763     {/*Stupid special case for [1D] indices*/
2764                         char *buf=new char[40];
2765                         sprintf(buf,"%sD",(yyvsp[(2) - (4)].strval));
2766                         (yyval.ntype) = new NamedType(buf); 
2767                 }
2768     break;
2769
2770   case 121:
2771 #line 531 "xi-grammar.y"
2772     { (yyval.ntype) = new NamedType((yyvsp[(2) - (3)].strval)); }
2773     break;
2774
2775   case 122:
2776 #line 535 "xi-grammar.y"
2777     {  (yyval.chare) = new Array(lineno, (yyvsp[(2) - (6)].cattr), (yyvsp[(3) - (6)].ntype), (yyvsp[(4) - (6)].ntype), (yyvsp[(5) - (6)].typelist), (yyvsp[(6) - (6)].mbrlist));
2778           hasSeenConstructor = false;
2779         }
2780     break;
2781
2782   case 123:
2783 #line 539 "xi-grammar.y"
2784     {  (yyval.chare) = new Array(lineno, (yyvsp[(3) - (6)].cattr), (yyvsp[(2) - (6)].ntype), (yyvsp[(4) - (6)].ntype), (yyvsp[(5) - (6)].typelist), (yyvsp[(6) - (6)].mbrlist));
2785           hasSeenConstructor = false;
2786         }
2787     break;
2788
2789   case 124:
2790 #line 545 "xi-grammar.y"
2791     { (yyval.chare) = new Chare(lineno, (yyvsp[(2) - (5)].cattr)|Chare::CCHARE, new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2792           hasSeenConstructor = false;
2793         }
2794     break;
2795
2796   case 125:
2797 #line 549 "xi-grammar.y"
2798     { (yyval.chare) = new MainChare(lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2799           hasSeenConstructor = false;
2800         }
2801     break;
2802
2803   case 126:
2804 #line 555 "xi-grammar.y"
2805     { (yyval.chare) = new Group(lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2806           hasSeenConstructor = false;
2807         }
2808     break;
2809
2810   case 127:
2811 #line 561 "xi-grammar.y"
2812     { (yyval.chare) = new NodeGroup( lineno, (yyvsp[(2) - (5)].cattr), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2813           hasSeenConstructor = false;
2814         }
2815     break;
2816
2817   case 128:
2818 #line 567 "xi-grammar.y"
2819     { (yyval.chare) = new Array( lineno, 0, (yyvsp[(2) - (5)].ntype), new NamedType((yyvsp[(3) - (5)].strval)), (yyvsp[(4) - (5)].typelist), (yyvsp[(5) - (5)].mbrlist));
2820           hasSeenConstructor = false;
2821         }
2822     break;
2823
2824   case 129:
2825 #line 573 "xi-grammar.y"
2826     { (yyval.message) = new Message(lineno, new NamedType((yyvsp[(3) - (4)].strval))); }
2827     break;
2828
2829   case 130:
2830 #line 575 "xi-grammar.y"
2831     { (yyval.message) = new Message(lineno, new NamedType((yyvsp[(3) - (7)].strval)), (yyvsp[(5) - (7)].mvlist)); }
2832     break;
2833
2834   case 131:
2835 #line 579 "xi-grammar.y"
2836     { (yyval.type) = 0; }
2837     break;
2838
2839   case 132:
2840 #line 581 "xi-grammar.y"
2841     { (yyval.type) = (yyvsp[(2) - (2)].type); }
2842     break;
2843
2844   case 133:
2845 #line 585 "xi-grammar.y"
2846     { (yyval.strval) = 0; }
2847     break;
2848
2849   case 134:
2850 #line 587 "xi-grammar.y"
2851     { (yyval.strval) = (yyvsp[(2) - (2)].strval); }
2852     break;
2853
2854   case 135:
2855 #line 589 "xi-grammar.y"
2856     { (yyval.strval) = (yyvsp[(2) - (2)].strval); }
2857     break;
2858
2859   case 136:
2860 #line 593 "xi-grammar.y"
2861     { (yyval.tvar) = new TType(new NamedType((yyvsp[(2) - (3)].strval)), (yyvsp[(3) - (3)].type)); }
2862     break;
2863
2864   case 137:
2865 #line 595 "xi-grammar.y"
2866     { (yyval.tvar) = new TFunc((yyvsp[(1) - (2)].ftype), (yyvsp[(2) - (2)].strval)); }
2867     break;
2868
2869   case 138:
2870 #line 597 "xi-grammar.y"
2871     { (yyval.tvar) = new TName((yyvsp[(1) - (3)].type), (yyvsp[(2) - (3)].strval), (yyvsp[(3) - (3)].strval)); }
2872     break;
2873
2874   case 139:
2875 #line 601 "xi-grammar.y"
2876     { (yyval.tvarlist) = new TVarList((yyvsp[(1) - (1)].tvar)); }
2877     break;
2878
2879   case 140:
2880 #line 603 "xi-grammar.y"
2881     { (yyval.tvarlist) = new TVarList((yyvsp[(1) - (3)].tvar), (yyvsp[(3) - (3)].tvarlist)); }
2882     break;
2883
2884   case 141:
2885 #line 607 "xi-grammar.y"
2886     { (yyval.tvarlist) = (yyvsp[(3) - (4)].tvarlist); }
2887     break;
2888
2889   case 142:
2890 #line 611 "xi-grammar.y"
2891     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
2892     break;
2893
2894   case 143:
2895 #line 613 "xi-grammar.y"
2896     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
2897     break;
2898
2899   case 144:
2900 #line 615 "xi-grammar.y"
2901     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
2902     break;
2903
2904   case 145:
2905 #line 617 "xi-grammar.y"
2906     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].chare)); (yyvsp[(2) - (2)].chare)->setTemplate((yyval.templat)); }
2907     break;
2908
2909   case 146:
2910 #line 619 "xi-grammar.y"
2911     { (yyval.templat) = new Template((yyvsp[(1) - (2)].tvarlist), (yyvsp[(2) - (2)].message)); (yyvsp[(2) - (2)].message)->setTemplate((yyval.templat)); }
2912     break;
2913
2914   case 147:
2915 #line 623 "xi-grammar.y"
2916     { (yyval.mbrlist) = 0; }
2917     break;
2918
2919   case 148:
2920 #line 625 "xi-grammar.y"
2921     { (yyval.mbrlist) = (yyvsp[(2) - (4)].mbrlist); }
2922     break;
2923
2924   case 149:
2925 #line 629 "xi-grammar.y"
2926     { 
2927                   Entry *tempEntry;
2928                   if (!connectEntries->empty()) {
2929                     tempEntry = connectEntries->begin();
2930                     MemberList *ml;
2931                     ml = new MemberList(tempEntry, 0);
2932                     tempEntry = connectEntries->next();
2933                     for(; !connectEntries->end(); tempEntry = connectEntries->next()) {
2934                       ml->appendMember(tempEntry); 
2935                     }
2936                     while (!connectEntries->empty())
2937                       connectEntries->pop();
2938                     (yyval.mbrlist) = ml; 
2939                   }
2940                   else {
2941                     (yyval.mbrlist) = 0; 
2942                   }
2943                 }
2944     break;
2945
2946   case 150:
2947 #line 648 "xi-grammar.y"
2948     { (yyval.mbrlist) = new MemberList((yyvsp[(1) - (2)].member), (yyvsp[(2) - (2)].mbrlist)); }
2949     break;
2950
2951   case 151:
2952 #line 652 "xi-grammar.y"
2953     { (yyval.member) = (yyvsp[(1) - (2)].readonly); }
2954     break;
2955
2956   case 152:
2957 #line 654 "xi-grammar.y"
2958     { (yyval.member) = (yyvsp[(1) - (2)].readonly); }
2959     break;
2960
2961   case 154:
2962 #line 657 "xi-grammar.y"
2963     { (yyval.member) = (yyvsp[(1) - (2)].member); }
2964     break;
2965
2966   case 155:
2967 #line 659 "xi-grammar.y"
2968     { (yyval.member) = (yyvsp[(2) - (3)].pupable); }
2969     break;
2970
2971   case 156:
2972 #line 661 "xi-grammar.y"
2973     { (yyval.member) = (yyvsp[(2) - (3)].includeFile); }
2974     break;
2975
2976   case 157:
2977 #line 663 "xi-grammar.y"
2978     { (yyval.member) = new ClassDeclaration(lineno,(yyvsp[(2) - (3)].strval)); }
2979     break;
2980
2981   case 158:
2982 #line 667 "xi-grammar.y"
2983     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (3)].strval), 1); }
2984     break;
2985
2986   case 159:
2987 #line 669 "xi-grammar.y"
2988     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (6)].strval), 1); }
2989     break;
2990
2991   case 160:
2992 #line 671 "xi-grammar.y"
2993     { (yyval.member) = new InitCall(lineno,
2994                                     strdup((std::string((yyvsp[(3) - (9)].strval)) + '<' +
2995                                             ((yyvsp[(5) - (9)].tparlist))->to_string() + '>').c_str()),
2996                                     1);
2997                 }
2998     break;
2999
3000   case 161:
3001 #line 677 "xi-grammar.y"
3002     { printf("Warning: deprecated use of initcall. Use initnode or initproc instead.\n"); 
3003                   (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (3)].strval), 1); }
3004     break;
3005
3006   case 162:
3007 #line 680 "xi-grammar.y"
3008     { printf("Warning: deprecated use of initcall. Use initnode or initproc instead.\n");
3009                   (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (6)].strval), 1); }
3010     break;
3011
3012   case 163:
3013 #line 685 "xi-grammar.y"
3014     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (3)].strval), 0); }
3015     break;
3016
3017   case 164:
3018 #line 687 "xi-grammar.y"
3019     { (yyval.member) = new InitCall(lineno, (yyvsp[(3) - (6)].strval), 0); }
3020     break;
3021
3022   case 165:
3023 #line 689 "xi-grammar.y"
3024     { (yyval.member) = new InitCall(lineno,
3025                                     strdup((std::string((yyvsp[(3) - (9)].strval)) + '<' +
3026                                             ((yyvsp[(5) - (9)].tparlist))->to_string() + '>').c_str()),
3027                                     0);
3028                 }
3029     break;
3030
3031   case 166:
3032 #line 695 "xi-grammar.y"
3033     {
3034                   InitCall* rtn = new InitCall(lineno, (yyvsp[(6) - (9)].strval), 0);
3035                   rtn->setAccel();
3036                   (yyval.member) = rtn;
3037                 }
3038     break;
3039
3040   case 167:
3041 #line 703 "xi-grammar.y"
3042     { (yyval.pupable) = new PUPableClass(lineno,(yyvsp[(1) - (1)].ntype),0); }
3043     break;
3044
3045   case 168:
3046 #line 705 "xi-grammar.y"
3047     { (yyval.pupable) = new PUPableClass(lineno,(yyvsp[(1) - (3)].ntype),(yyvsp[(3) - (3)].pupable)); }
3048     break;
3049
3050   case 169:
3051 #line 708 "xi-grammar.y"
3052     { (yyval.includeFile) = new IncludeFile(lineno,(yyvsp[(1) - (1)].strval)); }
3053     break;
3054
3055   case 170:
3056 #line 712 "xi-grammar.y"
3057     { (yyval.member) = (yyvsp[(1) - (2)].entry); }
3058     break;
3059
3060   case 171:
3061 #line 714 "xi-grammar.y"
3062     {
3063                   (yyvsp[(2) - (3)].entry)->tspec = (yyvsp[(1) - (3)].tvarlist);
3064                   (yyval.member) = (yyvsp[(2) - (3)].entry);
3065                 }
3066     break;
3067
3068   case 172:
3069 #line 719 "xi-grammar.y"
3070     { (yyval.member) = (yyvsp[(1) - (1)].member); }
3071     break;
3072
3073   case 173:
3074 #line 723 "xi-grammar.y"
3075     { 
3076                   if ((yyvsp[(7) - (7)].sc) != 0) { 
3077                     (yyvsp[(7) - (7)].sc)->con1 = new SdagConstruct(SIDENT, (yyvsp[(4) - (7)].strval));
3078                     (yyvsp[(7) - (7)].sc)->param = new ParamList((yyvsp[(5) - (7)].plist));
3079                   }
3080                   (yyval.entry) = new Entry(lineno, (yyvsp[(2) - (7)].intval), (yyvsp[(3) - (7)].type), (yyvsp[(4) - (7)].strval), (yyvsp[(5) - (7)].plist), (yyvsp[(6) - (7)].val), (yyvsp[(7) - (7)].sc), 0, 0); 
3081                 }
3082     break;
3083
3084   case 174:
3085 #line 731 "xi-grammar.y"
3086     { 
3087           if (hasSeenConstructor && strcmp(lastConstructor, (yyvsp[(3) - (5)].strval)) != 0) {
3088             yyerror("Entry method has no return type and we've seen a constructor already\n");
3089           } else {
3090             // If we see another method without a return type, it should better be an overloaded constructor!
3091             if (!lastConstructor) free(lastConstructor);
3092             lastConstructor = (char *) malloc(strlen((yyvsp[(3) - (5)].strval)) + 1);
3093             strcpy(lastConstructor, (yyvsp[(3) - (5)].strval));
3094             hasSeenConstructor = true;
3095
3096             if ((yyvsp[(5) - (5)].sc) != 0) {
3097               (yyvsp[(5) - (5)].sc)->con1 = new SdagConstruct(SIDENT, (yyvsp[(3) - (5)].strval));
3098               (yyvsp[(5) - (5)].sc)->param = new ParamList((yyvsp[(4) - (5)].plist));
3099             }
3100             Entry *e = new Entry(lineno, (yyvsp[(2) - (5)].intval), 0, (yyvsp[(3) - (5)].strval), (yyvsp[(4) - (5)].plist), 0, (yyvsp[(5) - (5)].sc), 0, 0);
3101             if (e->param && e->param->isCkMigMsgPtr()) {
3102               yyerror("Charm++ generates a CkMigrateMsg chare constructor implicitly, but continuing anyway");
3103               (yyval.entry) = NULL;
3104             } else {
3105               (yyval.entry) = e;
3106             }
3107           }
3108                 }
3109     break;
3110
3111   case 175:
3112 #line 755 "xi-grammar.y"
3113     {
3114           int attribs = SACCEL;
3115           const char* name = (yyvsp[(6) - (12)].strval);
3116           ParamList* paramList = (yyvsp[(7) - (12)].plist);
3117           ParamList* accelParamList = (yyvsp[(8) - (12)].plist);
3118           XStr* codeBody = new XStr((yyvsp[(10) - (12)].strval));
3119           const char* callbackName = (yyvsp[(12) - (12)].strval);
3120
3121           (yyval.entry) = new Entry(lineno, attribs, new BuiltinType("void"), name, paramList,
3122                          0, 0, 0, 0, 0
3123                         );
3124           (yyval.entry)->setAccelParam(accelParamList);
3125           (yyval.entry)->setAccelCodeBody(codeBody);
3126           (yyval.entry)->setAccelCallbackName(new XStr(callbackName));
3127         }
3128     break;
3129
3130   case 176:
3131 #line 773 "xi-grammar.y"
3132     { (yyval.accelBlock) = new AccelBlock(lineno, new XStr((yyvsp[(3) - (5)].strval))); }
3133     break;
3134
3135   case 177:
3136 #line 775 "xi-grammar.y"
3137     { (yyval.accelBlock) = new AccelBlock(lineno, NULL); }
3138     break;
3139
3140   case 178:
3141 #line 779 "xi-grammar.y"
3142     { (yyval.type) = new BuiltinType("void"); }
3143     break;
3144
3145   case 179:
3146 #line 781 "xi-grammar.y"
3147     { (yyval.type) = (yyvsp[(1) - (1)].ptype); }
3148     break;
3149
3150   case 180:
3151 #line 785 "xi-grammar.y"
3152     { (yyval.intval) = 0; }
3153     break;
3154
3155   case 181:
3156 #line 787 "xi-grammar.y"
3157     { (yyval.intval) = (yyvsp[(2) - (3)].intval); }
3158     break;
3159
3160   case 182:
3161 #line 789 "xi-grammar.y"
3162     { printf("Invalid entry method attribute list\n"); YYABORT; }
3163     break;
3164
3165   case 183:
3166 #line 793 "xi-grammar.y"
3167     { (yyval.intval) = (yyvsp[(1) - (1)].intval); }
3168     break;
3169
3170   case 184:
3171 #line 795 "xi-grammar.y"
3172     { (yyval.intval) = (yyvsp[(1) - (3)].intval) | (yyvsp[(3) - (3)].intval); }
3173     break;
3174
3175   case 185:
3176 #line 799 "xi-grammar.y"
3177     { (yyval.intval) = STHREADED; }
3178     break;
3179
3180   case 186:
3181 #line 801 "xi-grammar.y"
3182     { (yyval.intval) = SSYNC; }
3183     break;
3184
3185   case 187:
3186 #line 803 "xi-grammar.y"
3187     { (yyval.intval) = SIGET; }
3188     break;
3189
3190   case 188:
3191 #line 805 "xi-grammar.y"
3192     { (yyval.intval) = SLOCKED; }
3193     break;
3194
3195   case 189:
3196 #line 807 "xi-grammar.y"
3197     { (yyval.intval) = SCREATEHERE; }
3198     break;
3199
3200   case 190:
3201 #line 809 "xi-grammar.y"
3202     { (yyval.intval) = SCREATEHOME; }
3203     break;
3204
3205   case 191:
3206 #line 811 "xi-grammar.y"
3207     { (yyval.intval) = SNOKEEP; }
3208     break;
3209
3210   case 192:
3211 #line 813 "xi-grammar.y"
3212     { (yyval.intval) = SNOTRACE; }
3213     break;
3214
3215   case 193:
3216 #line 815 "xi-grammar.y"
3217     { (yyval.intval) = SIMMEDIATE; }
3218     break;
3219
3220   case 194:
3221 #line 817 "xi-grammar.y"
3222     { (yyval.intval) = SSKIPSCHED; }
3223     break;
3224
3225   case 195:
3226 #line 819 "xi-grammar.y"
3227     { (yyval.intval) = SINLINE; }
3228     break;
3229
3230   case 196:
3231 #line 821 "xi-grammar.y"
3232     { (yyval.intval) = SLOCAL; }
3233     break;
3234
3235   case 197:
3236 #line 823 "xi-grammar.y"
3237     { (yyval.intval) = SPYTHON; }
3238     break;
3239
3240   case 198:
3241 #line 825 "xi-grammar.y"
3242     { (yyval.intval) = SMEM; }
3243     break;
3244
3245   case 199:
3246 #line 827 "xi-grammar.y"
3247     { (yyval.intval) = SREDUCE; }
3248     break;
3249
3250   case 200:
3251 #line 829 "xi-grammar.y"
3252     { printf("Invalid entry method attribute: %s\n", yylval); YYABORT; }
3253     break;
3254
3255   case 201:
3256 #line 833 "xi-grammar.y"
3257     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
3258     break;
3259
3260   case 202:
3261 #line 835 "xi-grammar.y"
3262     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
3263     break;
3264
3265   case 203:
3266 #line 837 "xi-grammar.y"
3267     { (yyval.val) = new Value((yyvsp[(1) - (1)].strval)); }
3268     break;
3269
3270   case 204:
3271 #line 841 "xi-grammar.y"
3272     { (yyval.strval) = ""; }
3273     break;
3274
3275   case 205:
3276 #line 843 "xi-grammar.y"
3277     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
3278     break;
3279
3280   case 206:
3281 #line 845 "xi-grammar.y"
3282     {  /*Returned only when in_bracket*/
3283                         char *tmp = new char[strlen((yyvsp[(1) - (3)].strval))+strlen((yyvsp[(3) - (3)].strval))+3];
3284                         sprintf(tmp,"%s, %s", (yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval));
3285                         (yyval.strval) = tmp;
3286                 }
3287     break;
3288
3289   case 207:
3290 #line 853 "xi-grammar.y"
3291     { (yyval.strval) = ""; }
3292     break;
3293
3294   case 208:
3295 #line 855 "xi-grammar.y"
3296     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
3297     break;
3298
3299   case 209:
3300 #line 857 "xi-grammar.y"
3301     {  /*Returned only when in_bracket*/
3302                         char *tmp = new char[strlen((yyvsp[(1) - (5)].strval))+strlen((yyvsp[(3) - (5)].strval))+strlen((yyvsp[(5) - (5)].strval))+3];
3303                         sprintf(tmp,"%s[%s]%s", (yyvsp[(1) - (5)].strval), (yyvsp[(3) - (5)].strval), (yyvsp[(5) - (5)].strval));
3304                         (yyval.strval) = tmp;
3305                 }
3306     break;
3307
3308   case 210:
3309 #line 863 "xi-grammar.y"
3310     { /*Returned only when in_braces*/
3311                         char *tmp = new char[strlen((yyvsp[(1) - (5)].strval))+strlen((yyvsp[(3) - (5)].strval))+strlen((yyvsp[(5) - (5)].strval))+3];
3312                         sprintf(tmp,"%s{%s}%s", (yyvsp[(1) - (5)].strval), (yyvsp[(3) - (5)].strval), (yyvsp[(5) - (5)].strval));
3313                         (yyval.strval) = tmp;
3314                 }
3315     break;
3316
3317   case 211:
3318 #line 869 "xi-grammar.y"
3319     { /*Returned only when in_braces*/
3320                         char *tmp = new char[strlen((yyvsp[(1) - (5)].strval))+strlen((yyvsp[(3) - (5)].strval))+strlen((yyvsp[(5) - (5)].strval))+3];
3321                         sprintf(tmp,"%s(%s)%s", (yyvsp[(1) - (5)].strval), (yyvsp[(3) - (5)].strval), (yyvsp[(5) - (5)].strval));
3322                         (yyval.strval) = tmp;
3323                 }
3324     break;
3325
3326   case 212:
3327 #line 875 "xi-grammar.y"
3328     { /*Returned only when in_braces*/
3329                         char *tmp = new char[strlen((yyvsp[(2) - (4)].strval))+strlen((yyvsp[(4) - (4)].strval))+3];
3330                         sprintf(tmp,"(%s)%s", (yyvsp[(2) - (4)].strval), (yyvsp[(4) - (4)].strval));
3331                         (yyval.strval) = tmp;
3332                 }
3333     break;
3334
3335   case 213:
3336 #line 883 "xi-grammar.y"
3337     {  /*Start grabbing CPROGRAM segments*/
3338                         in_bracket=1;
3339                         (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].type),(yyvsp[(2) - (3)].strval));
3340                 }
3341     break;
3342
3343   case 214:
3344 #line 890 "xi-grammar.y"
3345     { 
3346                    /*Start grabbing CPROGRAM segments*/
3347                         in_braces=1;
3348                         (yyval.intval) = 0;
3349                 }
3350     break;
3351
3352   case 215:
3353 #line 898 "xi-grammar.y"
3354     { 
3355                         in_braces=0;
3356                         (yyval.intval) = 0;
3357                 }
3358     break;
3359
3360   case 216:
3361 #line 905 "xi-grammar.y"
3362     { (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (1)].type));}
3363     break;
3364
3365   case 217:
3366 #line 907 "xi-grammar.y"
3367     { (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].type),(yyvsp[(2) - (3)].strval)); (yyval.pname)->setConditional((yyvsp[(3) - (3)].intval)); }
3368     break;
3369
3370   case 218:
3371 #line 909 "xi-grammar.y"
3372     { (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (4)].type),(yyvsp[(2) - (4)].strval),0,(yyvsp[(4) - (4)].val));}
3373     break;
3374
3375   case 219:
3376 #line 911 "xi-grammar.y"
3377     { /*Stop grabbing CPROGRAM segments*/
3378                         in_bracket=0;
3379                         (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].pname)->getType(), (yyvsp[(1) - (3)].pname)->getName() ,(yyvsp[(2) - (3)].strval));
3380                 }
3381     break;
3382
3383   case 220:
3384 #line 917 "xi-grammar.y"
3385     { (yyval.intval) = Parameter::ACCEL_BUFFER_TYPE_READONLY; }
3386     break;
3387
3388   case 221:
3389 #line 918 "xi-grammar.y"
3390     { (yyval.intval) = Parameter::ACCEL_BUFFER_TYPE_READWRITE; }
3391     break;
3392
3393   case 222:
3394 #line 919 "xi-grammar.y"
3395     { (yyval.intval) = Parameter::ACCEL_BUFFER_TYPE_WRITEONLY; }
3396     break;
3397
3398   case 223:
3399 #line 922 "xi-grammar.y"
3400     { (yyval.xstrptr) = new XStr((yyvsp[(1) - (1)].strval)); }
3401     break;
3402
3403   case 224:
3404 #line 923 "xi-grammar.y"
3405     { (yyval.xstrptr) = new XStr(""); *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "->" << (yyvsp[(4) - (4)].strval); }
3406     break;
3407
3408   case 225:
3409 #line 924 "xi-grammar.y"
3410     { (yyval.xstrptr) = new XStr(""); *((yyval.xstrptr)) << *((yyvsp[(1) - (3)].xstrptr)) << "." << (yyvsp[(3) - (3)].strval); }
3411     break;
3412
3413   case 226:
3414 #line 926 "xi-grammar.y"
3415     {
3416                   (yyval.xstrptr) = new XStr("");
3417                   *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "[" << *((yyvsp[(3) - (4)].xstrptr)) << "]";
3418                   delete (yyvsp[(1) - (4)].xstrptr);
3419                   delete (yyvsp[(3) - (4)].xstrptr);
3420                 }
3421     break;
3422
3423   case 227:
3424 #line 933 "xi-grammar.y"
3425     {
3426                   (yyval.xstrptr) = new XStr("");
3427                   *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "[" << (yyvsp[(3) - (4)].strval) << "]";
3428                   delete (yyvsp[(1) - (4)].xstrptr);
3429                 }
3430     break;
3431
3432   case 228:
3433 #line 939 "xi-grammar.y"
3434     {
3435                   (yyval.xstrptr) = new XStr("");
3436                   *((yyval.xstrptr)) << *((yyvsp[(1) - (4)].xstrptr)) << "(" << *((yyvsp[(3) - (4)].xstrptr)) << ")";
3437                   delete (yyvsp[(1) - (4)].xstrptr);
3438                   delete (yyvsp[(3) - (4)].xstrptr);
3439                 }
3440     break;
3441
3442   case 229:
3443 #line 948 "xi-grammar.y"
3444     {
3445                   in_bracket = 0;
3446                   (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (3)].pname)->getType(), (yyvsp[(1) - (3)].pname)->getName(), (yyvsp[(2) - (3)].strval));
3447                 }
3448     break;
3449
3450   case 230:
3451 #line 955 "xi-grammar.y"
3452     {
3453                   (yyval.pname) = new Parameter(lineno, (yyvsp[(3) - (7)].type), (yyvsp[(4) - (7)].strval));
3454                   (yyval.pname)->setAccelInstName((yyvsp[(6) - (7)].xstrptr));
3455                   (yyval.pname)->setAccelBufferType((yyvsp[(1) - (7)].intval));
3456                 }
3457     break;
3458
3459   case 231:
3460 #line 961 "xi-grammar.y"
3461     {
3462                   (yyval.pname) = new Parameter(lineno, (yyvsp[(1) - (5)].type), (yyvsp[(2) - (5)].strval));
3463                   (yyval.pname)->setAccelInstName((yyvsp[(4) - (5)].xstrptr));
3464                   (yyval.pname)->setAccelBufferType(Parameter::ACCEL_BUFFER_TYPE_READWRITE);
3465                 }
3466     break;
3467
3468   case 232:
3469 #line 967 "xi-grammar.y"
3470     {
3471                   (yyval.pname) = (yyvsp[(3) - (6)].pname);
3472                   (yyval.pname)->setAccelInstName((yyvsp[(5) - (6)].xstrptr));
3473                   (yyval.pname)->setAccelBufferType((yyvsp[(1) - (6)].intval));
3474                 }
3475     break;
3476
3477   case 233:
3478 #line 975 "xi-grammar.y"
3479     { (yyval.plist) = new ParamList((yyvsp[(1) - (1)].pname)); }
3480     break;
3481
3482   case 234:
3483 #line 977 "xi-grammar.y"
3484     { (yyval.plist) = new ParamList((yyvsp[(1) - (3)].pname),(yyvsp[(3) - (3)].plist)); }
3485     break;
3486
3487   case 235:
3488 #line 981 "xi-grammar.y"
3489     { (yyval.plist) = new ParamList((yyvsp[(1) - (1)].pname)); }
3490     break;
3491
3492   case 236:
3493 #line 983 "xi-grammar.y"
3494     { (yyval.plist) = new ParamList((yyvsp[(1) - (3)].pname),(yyvsp[(3) - (3)].plist)); }
3495     break;
3496
3497   case 237:
3498 #line 987 "xi-grammar.y"
3499     { (yyval.plist) = (yyvsp[(2) - (3)].plist); }
3500     break;
3501
3502   case 238:
3503 #line 989 "xi-grammar.y"
3504     { (yyval.plist) = new ParamList(new Parameter(0, new BuiltinType("void"))); }
3505     break;
3506
3507   case 239:
3508 #line 993 "xi-grammar.y"
3509     { (yyval.plist) = (yyvsp[(2) - (3)].plist); }
3510     break;
3511
3512   case 240:
3513 #line 995 "xi-grammar.y"
3514     { (yyval.plist) = 0; }
3515     break;
3516
3517   case 241:
3518 #line 999 "xi-grammar.y"
3519     { (yyval.val) = 0; }
3520     break;
3521
3522   case 242:
3523 #line 1001 "xi-grammar.y"
3524     { (yyval.val) = new Value((yyvsp[(3) - (3)].strval)); }
3525     break;
3526
3527   case 243:
3528 #line 1005 "xi-grammar.y"
3529     { (yyval.sc) = 0; }
3530     break;
3531
3532   case 244:
3533 #line 1007 "xi-grammar.y"
3534     { (yyval.sc) = new SdagConstruct(SSDAGENTRY, (yyvsp[(1) - (1)].sc)); }
3535     break;
3536
3537   case 245:
3538 #line 1009 "xi-grammar.y"
3539     { (yyval.sc) = new SdagConstruct(SSDAGENTRY, (yyvsp[(2) - (3)].sc)); }
3540     break;
3541
3542   case 246:
3543 #line 1013 "xi-grammar.y"
3544     { (yyval.sc) = new SdagConstruct(SSLIST, (yyvsp[(1) - (1)].sc)); }
3545     break;
3546
3547   case 247:
3548 #line 1015 "xi-grammar.y"
3549     { (yyval.sc) = new SdagConstruct(SSLIST, (yyvsp[(1) - (2)].sc), (yyvsp[(2) - (2)].sc));  }
3550     break;
3551
3552   case 248:
3553 #line 1019 "xi-grammar.y"
3554     { (yyval.sc) = new SdagConstruct(SOLIST, (yyvsp[(1) - (1)].sc)); }
3555     break;
3556
3557   case 249:
3558 #line 1021 "xi-grammar.y"
3559     { (yyval.sc) = new SdagConstruct(SOLIST, (yyvsp[(1) - (2)].sc), (yyvsp[(2) - (2)].sc)); }
3560     break;
3561
3562   case 250:
3563 #line 1025 "xi-grammar.y"
3564     { (yyval.sc) = 0; }
3565     break;
3566
3567   case 251:
3568 #line 1027 "xi-grammar.y"
3569     { (yyval.sc) = (yyvsp[(3) - (4)].sc); }
3570     break;
3571
3572   case 252:
3573 #line 1031 "xi-grammar.y"
3574     { (yyval.sc) = new SdagConstruct(SPUBLISHES, new SdagConstruct(SIDENT, (yyvsp[(1) - (1)].strval))); }
3575     break;
3576
3577   case 253:
3578 #line 1033 "xi-grammar.y"
3579     { (yyval.sc) = new SdagConstruct(SPUBLISHES, new SdagConstruct(SIDENT, (yyvsp[(1) - (3)].strval)), (yyvsp[(3) - (3)].sc));  }
3580     break;
3581
3582   case 254:
3583 #line 1037 "xi-grammar.y"
3584     { (yyval.strval) = (yyvsp[(1) - (1)].strval); }
3585     break;
3586
3587   case 255:
3588 #line 1039 "xi-grammar.y"
3589     { (yyval.strval) = 0; }
3590     break;
3591
3592   case 256:
3593 #line 1043 "xi-grammar.y"
3594     {
3595                    (yyval.sc) = buildAtomic((yyvsp[(4) - (6)].strval), (yyvsp[(6) - (6)].sc), (yyvsp[(2) - (6)].strval));
3596                  }
3597     break;
3598
3599   case 257:
3600 #line 1047 "xi-grammar.y"
3601     {  
3602                    in_braces = 0;
3603                    if (((yyvsp[(4) - (8)].plist)->isVoid() == 0) && ((yyvsp[(4) - (8)].plist)->isMessage() == 0))
3604                    {
3605                       connectEntries->append(new Entry(0, 0, new BuiltinType("void"), (yyvsp[(3) - (8)].strval), 
3606                                         new ParamList(new Parameter(lineno, new PtrType( 
3607                                         new NamedType("CkMarshallMsg")), "_msg")), 0, 0, 0, 1, (yyvsp[(4) - (8)].plist)));
3608                    }
3609                    else  {
3610                       connectEntries->append(new Entry(0, 0, new BuiltinType("void"), (yyvsp[(3) - (8)].strval), (yyvsp[(4) - (8)].plist), 0, 0, 0, 1, (yyvsp[(4) - (8)].plist)));
3611                    }
3612                    (yyval.sc) = new SdagConstruct(SCONNECT, (yyvsp[(3) - (8)].strval), (yyvsp[(7) - (8)].strval), (yyvsp[(4) - (8)].plist));
3613                 }
3614     break;
3615
3616   case 258:
3617 #line 1061 "xi-grammar.y"
3618     { (yyval.sc) = new SdagConstruct(SWHEN, 0, 0, 0,0,0, 0,  (yyvsp[(2) - (4)].entrylist)); }
3619     break;
3620
3621   case 259:
3622 #line 1063 "xi-grammar.y"
3623     { (yyval.sc) = new SdagConstruct(SWHEN, 0, 0, 0,0,0, (yyvsp[(3) - (3)].sc), (yyvsp[(2) - (3)].entrylist)); }
3624     break;
3625
3626   case 260:
3627 #line 1065 "xi-grammar.y"
3628     { (yyval.sc) = new SdagConstruct(SWHEN, 0, 0, 0,0,0, (yyvsp[(4) - (5)].sc), (yyvsp[(2) - (5)].entrylist)); }
3629     break;
3630
3631   case 261:
3632 #line 1067 "xi-grammar.y"
3633     { (yyval.sc) = new SdagConstruct(SOVERLAP,0, 0,0,0,0,(yyvsp[(3) - (4)].sc), 0); }
3634     break;
3635
3636   case 262:
3637 #line 1069 "xi-grammar.y"
3638     { (yyval.sc) = new SdagConstruct(SFOR, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (11)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(5) - (11)].strval)),
3639                              new SdagConstruct(SINT_EXPR, (yyvsp[(7) - (11)].strval)), 0, (yyvsp[(10) - (11)].sc), 0); }
3640     break;
3641
3642   case 263:
3643 #line 1072 "xi-grammar.y"
3644     { (yyval.sc) = new SdagConstruct(SFOR, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (9)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(5) - (9)].strval)), 
3645                          new SdagConstruct(SINT_EXPR, (yyvsp[(7) - (9)].strval)), 0, (yyvsp[(9) - (9)].sc), 0); }
3646     break;
3647
3648   case 264:
3649 #line 1075 "xi-grammar.y"
3650     { (yyval.sc) = new SdagConstruct(SFORALL, 0, new SdagConstruct(SIDENT, (yyvsp[(3) - (12)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(6) - (12)].strval)), 
3651                              new SdagConstruct(SINT_EXPR, (yyvsp[(8) - (12)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(10) - (12)].strval)), (yyvsp[(12) - (12)].sc), 0); }
3652     break;
3653
3654   case 265:
3655 #line 1078 "xi-grammar.y"
3656     { (yyval.sc) = new SdagConstruct(SFORALL, 0, new SdagConstruct(SIDENT, (yyvsp[(3) - (14)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(6) - (14)].strval)), 
3657                                  new SdagConstruct(SINT_EXPR, (yyvsp[(8) - (14)].strval)), new SdagConstruct(SINT_EXPR, (yyvsp[(10) - (14)].strval)), (yyvsp[(13) - (14)].sc), 0); }
3658     break;
3659
3660   case 266:
3661 #line 1081 "xi-grammar.y"
3662     { (yyval.sc) = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (6)].strval)), (yyvsp[(6) - (6)].sc),0,0,(yyvsp[(5) - (6)].sc),0); }
3663     break;
3664
3665   case 267:
3666 #line 1083 "xi-grammar.y"
3667     { (yyval.sc) = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (8)].strval)), (yyvsp[(8) - (8)].sc),0,0,(yyvsp[(6) - (8)].sc),0); }
3668     break;
3669
3670   case 268:
3671 #line 1085 "xi-grammar.y"
3672     { (yyval.sc) = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (5)].strval)), 0,0,0,(yyvsp[(5) - (5)].sc),0); }
3673     break;
3674
3675   case 269:
3676 #line 1087 "xi-grammar.y"
3677     { (yyval.sc) = new SdagConstruct(SWHILE, 0, new SdagConstruct(SINT_EXPR, (yyvsp[(3) - (7)].strval)), 0,0,0,(yyvsp[(6) - (7)].sc),0); }
3678     break;
3679
3680   case 270:
3681 #line 1089 "xi-grammar.y"
3682     { (yyval.sc) = (yyvsp[(2) - (3)].sc); }
3683     break;
3684
3685   case 271:
3686 #line 1091 "xi-grammar.y"
3687     { (yyval.sc) = buildAtomic((yyvsp[(2) - (3)].strval), NULL, NULL); }
3688     break;
3689
3690   case 272:
3691 #line 1093 "xi-grammar.y"
3692     { printf("Unknown SDAG construct or malformed entry method definition.\n"
3693                  "You may have forgotten to terminate an entry method definition with a"
3694                  " semicolon or forgotten to mark a block of sequential SDAG code as 'atomic'\n"); YYABORT; }
3695     break;
3696
3697   case 273:
3698 #line 1099 "xi-grammar.y"
3699     { (yyval.sc) = 0; }
3700     break;
3701
3702   case 274:
3703 #line 1101 "xi-grammar.y"
3704     { (yyval.sc) = new SdagConstruct(SELSE, 0,0,0,0,0, (yyvsp[(2) - (2)].sc),0); }
3705     break;
3706
3707   case 275:
3708 #line 1103 "xi-grammar.y"
3709     { (yyval.sc) = new SdagConstruct(SELSE, 0,0,0,0,0, (yyvsp[(3) - (4)].sc),0); }
3710     break;
3711
3712   case 276:
3713 #line 1106 "xi-grammar.y"
3714     { (yyval.sc) = new SdagConstruct(SFORWARD, new SdagConstruct(SIDENT, (yyvsp[(1) - (1)].strval))); }
3715     break;
3716
3717   case 277:
3718 #line 1108 "xi-grammar.y"
3719     { (yyval.sc) = new SdagConstruct(SFORWARD, new SdagConstruct(SIDENT, (yyvsp[(1) - (3)].strval)), (yyvsp[(3) - (3)].sc));  }
3720     break;
3721
3722   case 278:
3723 #line 1112 "xi-grammar.y"
3724     { in_int_expr = 0; (yyval.intval) = 0; }
3725     break;
3726
3727   case 279:
3728 #line 1116 "xi-grammar.y"
3729     { in_int_expr = 1; (yyval.intval) = 0; }
3730     break;
3731
3732   case 280:
3733 #line 1120 "xi-grammar.y"
3734     { (yyval.entry) = new Entry(lineno, 0, 0, (yyvsp[(1) - (2)].strval), (yyvsp[(2) - (2)].plist), 0, 0, 0, 0); }
3735     break;
3736
3737   case 281:
3738 #line 1122 "xi-grammar.y"
3739     { (yyval.entry) = new Entry(lineno, 0, 0, (yyvsp[(1) - (5)].strval), (yyvsp[(5) - (5)].plist), 0, 0, (yyvsp[(3) - (5)].strval), 0); }
3740     break;
3741
3742   case 282:
3743 #line 1126 "xi-grammar.y"
3744     { (yyval.entrylist) = new EntryList((yyvsp[(1) - (1)].entry)); }
3745     break;
3746
3747   case 283:
3748 #line 1128 "xi-grammar.y"
3749     { (yyval.entrylist) = new EntryList((yyvsp[(1) - (3)].entry),(yyvsp[(3) - (3)].entrylist)); }
3750     break;
3751
3752   case 284:
3753 #line 1132 "xi-grammar.y"
3754     { in_bracket=1; }
3755     break;
3756
3757   case 285:
3758 #line 1135 "xi-grammar.y"
3759     { in_bracket=0; }
3760     break;
3761