set CCHARE bit when it is template chare.
[charm.git] / src / xlat-i / xi-grammar.tab.C
1 #define YY_parse_h_included
2 /*#define YY_USE_CLASS 
3 */
4 /*  A Bison++ parser, made from xi-grammar.y  */
5
6  /* with Bison++ version bison++ Version 1.21.9-1, adapted from GNU bison by coetmeur@icdc.fr
7 Maintained by Magnus Ekdahl <magnus@debian.org>
8   */
9
10
11 #line 1 "/usr/share/bison++/bison.cc"
12 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
13 /* Skeleton output parser for bison,
14    Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
15
16    This program is free software; you can redistribute it and/or modify
17    it under the terms of the GNU General Public License as published by
18    the Free Software Foundation; either version 1, or (at your option)
19    any later version.
20
21    This program is distributed in the hope that it will be useful,
22    but WITHOUT ANY WARRANTY; without even the implied warranty of
23    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24    GNU General Public License for more details.
25
26    You should have received a copy of the GNU General Public License
27    along with this program; if not, write to the Free Software
28    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  
29
30    As a special exception, when this file is copied by Bison++ into a
31    Bison++ output file, you may use that output file without restriction.
32    This special exception was added by the Free Software Foundation
33    in version 1.24 of Bison, and has been in Bison++ since 1.21.9.  
34
35 */
36
37 /* HEADER SECTION */
38 #if defined( _MSDOS ) || defined(MSDOS) || defined(__MSDOS__) 
39  #define __MSDOS_AND_ALIKE
40 #endif
41
42 #if defined(_WINDOWS) && defined(_MSC_VER)
43  #define __HAVE_NO_ALLOCA
44  #define __MSDOS_AND_ALIKE
45 #endif
46
47 #ifndef alloca
48  #if defined( __GNUC__)
49   #define alloca __builtin_alloca
50
51  #elif (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc)  || defined (__sgi)
52   #include <alloca.h>
53
54  #elif defined (__MSDOS_AND_ALIKE)
55   #include <malloc.h>
56   #ifndef __TURBOC__
57    /* MS C runtime lib */
58    #define alloca _alloca
59   #endif
60
61  #elif defined(_AIX)
62   /* pragma must be put before any C/C++ instruction !! */
63   #pragma alloca
64   #include <malloc.h>
65
66  #elif defined(__hpux)
67   #ifdef __cplusplus
68    extern "C" {
69      void *alloca (unsigned int);
70    };
71   #else /* not __cplusplus */
72    void *alloca ();
73   #endif /* not __cplusplus */
74
75  #endif /* not _AIX  not MSDOS, or __TURBOC__ or _AIX, not sparc.  */
76 #endif /* alloca not defined.  */
77
78 #ifdef c_plusplus
79  #ifndef __cplusplus
80   #define __cplusplus
81  #endif
82 #endif
83
84 #ifdef __cplusplus
85  #ifndef YY_USE_CLASS
86 /*#warning "For C++ its recomended to use bison++, otherwise classes won't be generated"*/
87  #endif
88 #else
89  #ifndef __STDC__
90   #define const
91  #endif
92  #ifdef YY_USE_CLASS
93   #error "This is a C++ header generated by bison++, please use a C++ compiler!"
94  #endif
95 #endif
96
97 #include <stdio.h>
98 #define YYBISON 1  
99
100  #line 88 "/usr/share/bison++/bison.cc"
101 #line 2 "xi-grammar.y"
102
103 #include <iostream>
104 #include "xi-symbol.h"
105 #include "EToken.h"
106 using namespace xi;
107 extern int yylex (void) ;
108 extern unsigned char in_comment;
109 void yyerror(const char *);
110 extern unsigned int lineno;
111 extern int in_bracket,in_braces,in_int_expr;
112 extern TList<Entry *> *connectEntries;
113 ModuleList *modlist;
114 namespace xi {
115 extern int macroDefined(const char *str, int istrue);
116 extern const char *python_doc;
117 void splitScopedName(const char* name, const char** scope, const char** basename);
118 }
119
120 #line 21 "xi-grammar.y"
121 typedef union {
122   ModuleList *modlist;
123   Module *module;
124   ConstructList *conslist;
125   Construct *construct;
126   TParam *tparam;
127   TParamList *tparlist;
128   Type *type;
129   PtrType *ptype;
130   NamedType *ntype;
131   FuncType *ftype;
132   Readonly *readonly;
133   Message *message;
134   Chare *chare;
135   Entry *entry;
136   EntryList *entrylist;
137   Parameter *pname;
138   ParamList *plist;
139   Template *templat;
140   TypeList *typelist;
141   MemberList *mbrlist;
142   Member *member;
143   TVar *tvar;
144   TVarList *tvarlist;
145   Value *val;
146   ValueList *vallist;
147   MsgVar *mv;
148   MsgVarList *mvlist;
149   PUPableClass *pupable;
150   IncludeFile *includeFile;
151   const char *strval;
152   int intval;
153   Chare::attrib_t cattr;
154   SdagConstruct *sc;
155   XStr* xstrptr;
156   AccelBlock* accelBlock;
157 } yy_parse_stype;
158 #define YY_parse_STYPE yy_parse_stype
159 #ifndef YY_USE_CLASS
160 #define YYSTYPE yy_parse_stype
161 #endif
162
163 #line 88 "/usr/share/bison++/bison.cc"
164 /* %{ and %header{ and %union, during decl */
165 #define YY_parse_BISON 1
166
167 #ifndef YY_parse_COMPATIBILITY
168  #ifndef YY_USE_CLASS
169   #define  YY_parse_COMPATIBILITY 1
170  #else
171   #define  YY_parse_COMPATIBILITY 0
172  #endif
173 #endif
174
175 #if YY_parse_COMPATIBILITY != 0
176  /* backward compatibility */
177  #ifdef YYLTYPE
178   #ifndef YY_parse_LTYPE
179    #define YY_parse_LTYPE YYLTYPE
180   #endif
181  #endif
182 /* Testing alternative bison solution
183    /#ifdef YYSTYPE*/
184 #ifndef YY_parse_STYPE 
185    #define YY_parse_STYPE YYSTYPE
186 #endif
187 /*#endif*/
188  #ifdef YYDEBUG
189   #ifndef YY_parse_DEBUG
190    #define  YY_parse_DEBUG YYDEBUG
191   #endif
192  #endif
193  
194  /* use goto to be compatible */
195  #ifndef YY_parse_USE_GOTO
196   #define YY_parse_USE_GOTO 1
197  #endif
198 #endif
199
200 /* use no goto to be clean in C++ */
201 #ifndef YY_parse_USE_GOTO
202  #define YY_parse_USE_GOTO 0
203 #endif
204
205 #ifndef YY_parse_PURE
206
207  #line 130 "/usr/share/bison++/bison.cc"
208
209 #line 130 "/usr/share/bison++/bison.cc"
210 /*  YY_parse_PURE */
211 #endif
212
213 /* section apres lecture def, avant lecture grammaire S2 */
214
215  #line 134 "/usr/share/bison++/bison.cc"
216
217 #line 134 "/usr/share/bison++/bison.cc"
218 /* prefix */
219 #ifndef YY_parse_DEBUG
220
221  #line 136 "/usr/share/bison++/bison.cc"
222
223 #line 136 "/usr/share/bison++/bison.cc"
224 /* YY_parse_DEBUG */
225 #endif
226
227
228 #ifndef YY_parse_LSP_NEEDED
229
230  #line 141 "/usr/share/bison++/bison.cc"
231
232 #line 141 "/usr/share/bison++/bison.cc"
233  /* YY_parse_LSP_NEEDED*/
234 #endif
235
236
237
238 /* DEFAULT LTYPE*/
239 #ifdef YY_parse_LSP_NEEDED
240 #ifndef YY_parse_LTYPE
241 #ifndef BISON_YYLTYPE_ISDECLARED
242 #define BISON_YYLTYPE_ISDECLARED
243 typedef
244   struct yyltype
245     {
246       int timestamp;
247       int first_line;
248       int first_column;
249       int last_line;
250       int last_column;
251       char *text;
252    }
253   yyltype;
254
255 #endif
256 #define YY_parse_LTYPE yyltype
257 #endif
258 #endif
259 /* DEFAULT STYPE*/
260       /* We used to use `unsigned long' as YY_parse_STYPE on MSDOS,
261          but it seems better to be consistent.
262          Most programs should declare their own type anyway.  */
263
264 #ifndef YY_parse_STYPE
265 #define YY_parse_STYPE int
266 #endif
267 /* DEFAULT MISCELANEOUS */
268 #ifndef YY_parse_PARSE
269 #define YY_parse_PARSE yyparse
270 #endif
271 #ifndef YY_parse_LEX
272 #define YY_parse_LEX yylex
273 #endif
274 #ifndef YY_parse_LVAL
275 #define YY_parse_LVAL yylval
276 #endif
277 #ifndef YY_parse_LLOC
278 #define YY_parse_LLOC yylloc
279 #endif
280 #ifndef YY_parse_CHAR
281 #define YY_parse_CHAR yychar
282 #endif
283 #ifndef YY_parse_NERRS
284 #define YY_parse_NERRS yynerrs
285 #endif
286 #ifndef YY_parse_DEBUG_FLAG
287 #define YY_parse_DEBUG_FLAG yydebug
288 #endif
289 #ifndef YY_parse_ERROR
290 #define YY_parse_ERROR yyerror
291 #endif
292
293 #ifndef YY_parse_PARSE_PARAM
294  #ifndef YY_USE_CLASS
295   #ifdef YYPARSE_PARAM
296    #define YY_parse_PARSE_PARAM void* YYPARSE_PARAM 
297   #else
298    #ifndef __STDC__
299     #ifndef __cplusplus
300      #define YY_parse_PARSE_PARAM
301     #endif
302    #endif
303   #endif
304  #endif
305  #ifndef YY_parse_PARSE_PARAM
306   #define YY_parse_PARSE_PARAM void
307  #endif
308 #endif
309
310 #if YY_parse_COMPATIBILITY != 0
311 /* backward compatibility */
312 #ifdef YY_parse_LTYPE
313 #ifndef YYLTYPE
314 #define YYLTYPE YY_parse_LTYPE
315 #else
316 /* WARNING obsolete !!! user defined YYLTYPE not reported into generated header */
317 #endif
318 #endif
319
320 /* Removed due to bison compabilityproblems
321 /#ifndef YYSTYPE
322 /#define YYSTYPE YY_parse_STYPE
323 /#else*/
324 /* WARNING obsolete !!! user defined YYSTYPE not reported into generated header */
325 /*#endif*/
326
327 #ifdef YY_parse_PURE
328 #  ifndef YYPURE
329 #    define YYPURE YY_parse_PURE
330 #  endif
331 #endif
332
333 #ifdef YY_parse_DEBUG
334 #  ifndef YYDEBUG
335 #    define YYDEBUG YY_parse_DEBUG 
336 #  endif
337 #endif
338
339 #ifndef YY_parse_ERROR_VERBOSE
340  #ifdef YYERROR_VERBOSE
341   #define YY_parse_ERROR_VERBOSE YYERROR_VERBOSE
342  #endif
343 #endif
344
345 #ifndef YY_parse_LSP_NEEDED
346 #  ifdef YYLSP_NEEDED
347 #    define YY_parse_LSP_NEEDED YYLSP_NEEDED
348 #  endif
349 #endif
350
351 #endif
352
353 #ifndef YY_USE_CLASS
354 /* TOKEN C */
355
356  #line 263 "/usr/share/bison++/bison.cc"
357 #define MODULE  258
358 #define MAINMODULE      259
359 #define EXTERN  260
360 #define READONLY        261
361 #define INITCALL        262
362 #define INITNODE        263
363 #define INITPROC        264
364 #define PUPABLE 265
365 #define CHARE   266
366 #define MAINCHARE       267
367 #define GROUP   268
368 #define NODEGROUP       269
369 #define ARRAY   270
370 #define MESSAGE 271
371 #define CONDITIONAL     272
372 #define CLASS   273
373 #define INCLUDE 274
374 #define STACKSIZE       275
375 #define THREADED        276
376 #define TEMPLATE        277
377 #define SYNC    278
378 #define IGET    279
379 #define EXCLUSIVE       280
380 #define IMMEDIATE       281
381 #define SKIPSCHED       282
382 #define INLINE  283
383 #define VIRTUAL 284
384 #define MIGRATABLE      285
385 #define CREATEHERE      286
386 #define CREATEHOME      287
387 #define NOKEEP  288
388 #define NOTRACE 289
389 #define VOID    290
390 #define CONST   291
391 #define PACKED  292
392 #define VARSIZE 293
393 #define ENTRY   294
394 #define FOR     295
395 #define FORALL  296
396 #define WHILE   297
397 #define WHEN    298
398 #define OVERLAP 299
399 #define ATOMIC  300
400 #define FORWARD 301
401 #define IF      302
402 #define ELSE    303
403 #define CONNECT 304
404 #define PUBLISHES       305
405 #define PYTHON  306
406 #define LOCAL   307
407 #define NAMESPACE       308
408 #define USING   309
409 #define IDENT   310
410 #define NUMBER  311
411 #define LITERAL 312
412 #define CPROGRAM        313
413 #define HASHIF  314
414 #define HASHIFDEF       315
415 #define INT     316
416 #define LONG    317
417 #define SHORT   318
418 #define CHAR    319
419 #define FLOAT   320
420 #define DOUBLE  321
421 #define UNSIGNED        322
422 #define ACCEL   323
423 #define READWRITE       324
424 #define WRITEONLY       325
425 #define ACCELBLOCK      326
426 #define MEMCRITICAL     327
427
428
429 #line 263 "/usr/share/bison++/bison.cc"
430  /* #defines tokens */
431 #else
432 /* CLASS */
433 #ifndef YY_parse_CLASS
434 #define YY_parse_CLASS parse
435 #endif
436 #ifndef YY_parse_INHERIT
437 #define YY_parse_INHERIT
438 #endif
439 #ifndef YY_parse_MEMBERS
440 #define YY_parse_MEMBERS 
441 #endif
442 #ifndef YY_parse_LEX_BODY
443 #define YY_parse_LEX_BODY  
444 #endif
445 #ifndef YY_parse_ERROR_BODY
446 #define YY_parse_ERROR_BODY  
447 #endif
448 #ifndef YY_parse_CONSTRUCTOR_PARAM
449 #define YY_parse_CONSTRUCTOR_PARAM
450 #endif
451 #ifndef YY_parse_CONSTRUCTOR_CODE
452 #define YY_parse_CONSTRUCTOR_CODE
453 #endif
454 #ifndef YY_parse_CONSTRUCTOR_INIT
455 #define YY_parse_CONSTRUCTOR_INIT
456 #endif
457 /* choose between enum and const */
458 #ifndef YY_parse_USE_CONST_TOKEN
459 #define YY_parse_USE_CONST_TOKEN 0
460 /* yes enum is more compatible with flex,  */
461 /* so by default we use it */ 
462 #endif
463 #if YY_parse_USE_CONST_TOKEN != 0
464 #ifndef YY_parse_ENUM_TOKEN
465 #define YY_parse_ENUM_TOKEN yy_parse_enum_token
466 #endif
467 #endif
468
469 class YY_parse_CLASS YY_parse_INHERIT
470 {
471 public: 
472 #if YY_parse_USE_CONST_TOKEN != 0
473 /* static const int token ... */
474
475  #line 307 "/usr/share/bison++/bison.cc"
476 static const int MODULE;
477 static const int MAINMODULE;
478 static const int EXTERN;
479 static const int READONLY;
480 static const int INITCALL;
481 static const int INITNODE;
482 static const int INITPROC;
483 static const int PUPABLE;
484 static const int CHARE;
485 static const int MAINCHARE;
486 static const int GROUP;
487 static const int NODEGROUP;
488 static const int ARRAY;
489 static const int MESSAGE;
490 static const int CONDITIONAL;
491 static const int CLASS;
492 static const int INCLUDE;
493 static const int STACKSIZE;
494 static const int THREADED;
495 static const int TEMPLATE;
496 static const int SYNC;
497 static const int IGET;
498 static const int EXCLUSIVE;
499 static const int IMMEDIATE;
500 static const int SKIPSCHED;
501 static const int INLINE;
502 static const int VIRTUAL;
503 static const int MIGRATABLE;
504 static const int CREATEHERE;
505 static const int CREATEHOME;
506 static const int NOKEEP;
507 static const int NOTRACE;
508 static const int VOID;
509 static const int CONST;
510 static const int PACKED;
511 static const int VARSIZE;
512 static const int ENTRY;
513 static const int FOR;
514 static const int FORALL;
515 static const int WHILE;
516 static const int WHEN;
517 static const int OVERLAP;
518 static const int ATOMIC;
519 static const int FORWARD;
520 static const int IF;
521 static const int ELSE;
522 static const int CONNECT;
523 static const int PUBLISHES;
524 static const int PYTHON;
525 static const int LOCAL;
526 static const int NAMESPACE;
527 static const int USING;
528 static const int IDENT;
529 static const int NUMBER;
530 static const int LITERAL;
531 static const int CPROGRAM;
532 static const int HASHIF;
533 static const int HASHIFDEF;
534 static const int INT;
535 static const int LONG;
536 static const int SHORT;
537 static const int CHAR;
538 static const int FLOAT;
539 static const int DOUBLE;
540 static const int UNSIGNED;
541 static const int ACCEL;
542 static const int READWRITE;
543 static const int WRITEONLY;
544 static const int ACCELBLOCK;
545 static const int MEMCRITICAL;
546
547
548 #line 307 "/usr/share/bison++/bison.cc"
549  /* decl const */
550 #else
551 enum YY_parse_ENUM_TOKEN { YY_parse_NULL_TOKEN=0
552
553  #line 310 "/usr/share/bison++/bison.cc"
554         ,MODULE=258
555         ,MAINMODULE=259
556         ,EXTERN=260
557         ,READONLY=261
558         ,INITCALL=262
559         ,INITNODE=263
560         ,INITPROC=264
561         ,PUPABLE=265
562         ,CHARE=266
563         ,MAINCHARE=267
564         ,GROUP=268
565         ,NODEGROUP=269
566         ,ARRAY=270
567         ,MESSAGE=271
568         ,CONDITIONAL=272
569         ,CLASS=273
570         ,INCLUDE=274
571         ,STACKSIZE=275
572         ,THREADED=276
573         ,TEMPLATE=277
574         ,SYNC=278
575         ,IGET=279
576         ,EXCLUSIVE=280
577         ,IMMEDIATE=281
578         ,SKIPSCHED=282
579         ,INLINE=283
580         ,VIRTUAL=284
581         ,MIGRATABLE=285
582         ,CREATEHERE=286
583         ,CREATEHOME=287
584         ,NOKEEP=288
585         ,NOTRACE=289
586         ,VOID=290
587         ,CONST=291
588         ,PACKED=292
589         ,VARSIZE=293
590         ,ENTRY=294
591         ,FOR=295
592         ,FORALL=296
593         ,WHILE=297
594         ,WHEN=298
595         ,OVERLAP=299
596         ,ATOMIC=300
597         ,FORWARD=301
598         ,IF=302
599         ,ELSE=303
600         ,CONNECT=304
601         ,PUBLISHES=305
602         ,PYTHON=306
603         ,LOCAL=307
604         ,NAMESPACE=308
605         ,USING=309
606         ,IDENT=310
607         ,NUMBER=311
608         ,LITERAL=312
609         ,CPROGRAM=313
610         ,HASHIF=314
611         ,HASHIFDEF=315
612         ,INT=316
613         ,LONG=317
614         ,SHORT=318
615         ,CHAR=319
616         ,FLOAT=320
617         ,DOUBLE=321
618         ,UNSIGNED=322
619         ,ACCEL=323
620         ,READWRITE=324
621         ,WRITEONLY=325
622         ,ACCELBLOCK=326
623         ,MEMCRITICAL=327
624
625
626 #line 310 "/usr/share/bison++/bison.cc"
627  /* enum token */
628      }; /* end of enum declaration */
629 #endif
630 public:
631  int YY_parse_PARSE (YY_parse_PARSE_PARAM);
632  virtual void YY_parse_ERROR(char *msg) YY_parse_ERROR_BODY;
633 #ifdef YY_parse_PURE
634 #ifdef YY_parse_LSP_NEEDED
635  virtual int  YY_parse_LEX (YY_parse_STYPE *YY_parse_LVAL,YY_parse_LTYPE *YY_parse_LLOC) YY_parse_LEX_BODY;
636 #else
637  virtual int  YY_parse_LEX (YY_parse_STYPE *YY_parse_LVAL) YY_parse_LEX_BODY;
638 #endif
639 #else
640  virtual int YY_parse_LEX() YY_parse_LEX_BODY;
641  YY_parse_STYPE YY_parse_LVAL;
642 #ifdef YY_parse_LSP_NEEDED
643  YY_parse_LTYPE YY_parse_LLOC;
644 #endif
645  int   YY_parse_NERRS;
646  int    YY_parse_CHAR;
647 #endif
648 #if YY_parse_DEBUG != 0
649  int YY_parse_DEBUG_FLAG;   /*  nonzero means print parse trace     */
650 #endif
651 public:
652  YY_parse_CLASS(YY_parse_CONSTRUCTOR_PARAM);
653 public:
654  YY_parse_MEMBERS 
655 };
656 /* other declare folow */
657 #if YY_parse_USE_CONST_TOKEN != 0
658
659  #line 341 "/usr/share/bison++/bison.cc"
660 const int YY_parse_CLASS::MODULE=258;
661 const int YY_parse_CLASS::MAINMODULE=259;
662 const int YY_parse_CLASS::EXTERN=260;
663 const int YY_parse_CLASS::READONLY=261;
664 const int YY_parse_CLASS::INITCALL=262;
665 const int YY_parse_CLASS::INITNODE=263;
666 const int YY_parse_CLASS::INITPROC=264;
667 const int YY_parse_CLASS::PUPABLE=265;
668 const int YY_parse_CLASS::CHARE=266;
669 const int YY_parse_CLASS::MAINCHARE=267;
670 const int YY_parse_CLASS::GROUP=268;
671 const int YY_parse_CLASS::NODEGROUP=269;
672 const int YY_parse_CLASS::ARRAY=270;
673 const int YY_parse_CLASS::MESSAGE=271;
674 const int YY_parse_CLASS::CONDITIONAL=272;
675 const int YY_parse_CLASS::CLASS=273;
676 const int YY_parse_CLASS::INCLUDE=274;
677 const int YY_parse_CLASS::STACKSIZE=275;
678 const int YY_parse_CLASS::THREADED=276;
679 const int YY_parse_CLASS::TEMPLATE=277;
680 const int YY_parse_CLASS::SYNC=278;
681 const int YY_parse_CLASS::IGET=279;
682 const int YY_parse_CLASS::EXCLUSIVE=280;
683 const int YY_parse_CLASS::IMMEDIATE=281;
684 const int YY_parse_CLASS::SKIPSCHED=282;
685 const int YY_parse_CLASS::INLINE=283;
686 const int YY_parse_CLASS::VIRTUAL=284;
687 const int YY_parse_CLASS::MIGRATABLE=285;
688 const int YY_parse_CLASS::CREATEHERE=286;
689 const int YY_parse_CLASS::CREATEHOME=287;
690 const int YY_parse_CLASS::NOKEEP=288;
691 const int YY_parse_CLASS::NOTRACE=289;
692 const int YY_parse_CLASS::VOID=290;
693 const int YY_parse_CLASS::CONST=291;
694 const int YY_parse_CLASS::PACKED=292;
695 const int YY_parse_CLASS::VARSIZE=293;
696 const int YY_parse_CLASS::ENTRY=294;
697 const int YY_parse_CLASS::FOR=295;
698 const int YY_parse_CLASS::FORALL=296;
699 const int YY_parse_CLASS::WHILE=297;
700 const int YY_parse_CLASS::WHEN=298;
701 const int YY_parse_CLASS::OVERLAP=299;
702 const int YY_parse_CLASS::ATOMIC=300;
703 const int YY_parse_CLASS::FORWARD=301;
704 const int YY_parse_CLASS::IF=302;
705 const int YY_parse_CLASS::ELSE=303;
706 const int YY_parse_CLASS::CONNECT=304;
707 const int YY_parse_CLASS::PUBLISHES=305;
708 const int YY_parse_CLASS::PYTHON=306;
709 const int YY_parse_CLASS::LOCAL=307;
710 const int YY_parse_CLASS::NAMESPACE=308;
711 const int YY_parse_CLASS::USING=309;
712 const int YY_parse_CLASS::IDENT=310;
713 const int YY_parse_CLASS::NUMBER=311;
714 const int YY_parse_CLASS::LITERAL=312;
715 const int YY_parse_CLASS::CPROGRAM=313;
716 const int YY_parse_CLASS::HASHIF=314;
717 const int YY_parse_CLASS::HASHIFDEF=315;
718 const int YY_parse_CLASS::INT=316;
719 const int YY_parse_CLASS::LONG=317;
720 const int YY_parse_CLASS::SHORT=318;
721 const int YY_parse_CLASS::CHAR=319;
722 const int YY_parse_CLASS::FLOAT=320;
723 const int YY_parse_CLASS::DOUBLE=321;
724 const int YY_parse_CLASS::UNSIGNED=322;
725 const int YY_parse_CLASS::ACCEL=323;
726 const int YY_parse_CLASS::READWRITE=324;
727 const int YY_parse_CLASS::WRITEONLY=325;
728 const int YY_parse_CLASS::ACCELBLOCK=326;
729 const int YY_parse_CLASS::MEMCRITICAL=327;
730
731
732 #line 341 "/usr/share/bison++/bison.cc"
733  /* const YY_parse_CLASS::token */
734 #endif
735 /*apres const  */
736 YY_parse_CLASS::YY_parse_CLASS(YY_parse_CONSTRUCTOR_PARAM) YY_parse_CONSTRUCTOR_INIT
737 {
738 #if YY_parse_DEBUG != 0
739 YY_parse_DEBUG_FLAG=0;
740 #endif
741 YY_parse_CONSTRUCTOR_CODE;
742 };
743 #endif
744
745  #line 352 "/usr/share/bison++/bison.cc"
746
747
748 #define YYFINAL         575
749 #define YYFLAG          -32768
750 #define YYNTBASE        89
751
752 #define YYTRANSLATE(x) ((unsigned)(x) <= 327 ? yytranslate[x] : 198)
753
754 static const char yytranslate[] = {     0,
755      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
756      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
757      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
758      2,     2,     2,     2,     2,     2,     2,    83,     2,    81,
759     82,    80,     2,    77,    87,    88,     2,     2,     2,     2,
760      2,     2,     2,     2,     2,     2,     2,    74,    73,    78,
761     86,    79,     2,     2,     2,     2,     2,     2,     2,     2,
762      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
763      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
764     84,     2,    85,     2,     2,     2,     2,     2,     2,     2,
765      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
766      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
767      2,     2,    75,     2,    76,     2,     2,     2,     2,     2,
768      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
769      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
770      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
771      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
772      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
773      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
774      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
775      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
776      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
777      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
778      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
779      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
780      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
781      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
782     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
783     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
784     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
785     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
786     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
787     66,    67,    68,    69,    70,    71,    72
788 };
789
790 #if YY_parse_DEBUG != 0
791 static const short yyprhs[] = {     0,
792      0,     2,     3,     6,     7,     9,    10,    12,    14,    16,
793     21,    25,    29,    31,    36,    37,    40,    46,    52,    57,
794     61,    64,    67,    71,    74,    77,    80,    83,    86,    88,
795     90,    92,    94,    96,    98,   100,   104,   105,   107,   108,
796    112,   114,   116,   118,   120,   123,   126,   130,   134,   137,
797    140,   143,   145,   147,   150,   152,   155,   158,   160,   162,
798    165,   168,   171,   180,   182,   184,   186,   188,   191,   194,
799    197,   199,   201,   203,   207,   208,   211,   216,   222,   223,
800    225,   226,   230,   232,   236,   238,   240,   241,   245,   247,
801    251,   252,   254,   256,   257,   261,   263,   267,   269,   271,
802    272,   274,   275,   278,   284,   286,   289,   293,   300,   301,
803    304,   306,   310,   316,   322,   328,   334,   339,   343,   350,
804    357,   363,   369,   375,   381,   387,   392,   400,   401,   404,
805    405,   408,   411,   415,   418,   422,   424,   428,   433,   436,
806    439,   442,   445,   448,   450,   455,   456,   459,   462,   465,
807    468,   471,   475,   479,   483,   487,   494,   498,   505,   509,
808    516,   526,   528,   532,   534,   537,   539,   547,   553,   566,
809    572,   575,   577,   579,   580,   584,   586,   590,   592,   594,
810    596,   598,   600,   602,   604,   606,   608,   610,   612,   614,
811    617,   619,   621,   623,   625,   626,   628,   632,   633,   635,
812    641,   647,   653,   658,   662,   664,   666,   668,   672,   677,
813    681,   683,   685,   687,   689,   694,   698,   703,   708,   713,
814    717,   725,   731,   738,   740,   744,   746,   750,   754,   757,
815    761,   764,   765,   769,   770,   772,   776,   778,   781,   783,
816    786,   787,   792,   794,   798,   800,   801,   808,   817,   822,
817    826,   832,   837,   849,   859,   872,   887,   894,   903,   909,
818    917,   921,   925,   926,   929,   934,   936,   940,   942,   944,
819    947,   953,   955,   959,   961,   963,   966
820 };
821
822 static const short yyrhs[] = {    90,
823      0,     0,    95,    90,     0,     0,     5,     0,     0,    73,
824      0,    55,     0,    55,     0,    94,    74,    74,    55,     0,
825      3,    93,    96,     0,     4,    93,    96,     0,    73,     0,
826     75,    97,    76,    92,     0,     0,    98,    97,     0,    91,
827     75,    97,    76,    92,     0,    53,    93,    75,    97,    76,
828      0,    54,    53,    94,    73,     0,    54,    94,    73,     0,
829     91,    95,     0,    91,   153,     0,    91,   132,    73,     0,
830     91,   135,     0,    91,   136,     0,    91,   137,     0,    91,
831    139,     0,    91,   150,     0,   196,     0,   197,     0,   160,
832      0,   111,     0,    56,     0,    57,     0,    99,     0,    99,
833     77,   100,     0,     0,   100,     0,     0,    78,   101,    79,
834      0,    61,     0,    62,     0,    63,     0,    64,     0,    67,
835     61,     0,    67,    62,     0,    67,    62,    61,     0,    67,
836     62,    62,     0,    67,    63,     0,    67,    64,     0,    62,
837     62,     0,    65,     0,    66,     0,    62,    66,     0,    35,
838      0,    93,   102,     0,    94,   102,     0,   103,     0,   105,
839      0,   106,    80,     0,   107,    80,     0,   108,    80,     0,
840    110,    81,    80,    93,    82,    81,   176,    82,     0,   106,
841      0,   107,     0,   108,     0,   109,     0,    36,   110,     0,
842    110,    36,     0,   110,    83,     0,   110,     0,    56,     0,
843     94,     0,    84,   112,    85,     0,     0,   113,   114,     0,
844      6,   111,    94,   114,     0,     6,    16,   106,    80,    93,
845      0,     0,    35,     0,     0,    84,   119,    85,     0,   120,
846      0,   120,    77,   119,     0,    37,     0,    38,     0,     0,
847     84,   122,    85,     0,   127,     0,   127,    77,   122,     0,
848      0,    57,     0,    51,     0,     0,    84,   126,    85,     0,
849    124,     0,   124,    77,   126,     0,    30,     0,    51,     0,
850      0,    17,     0,     0,    84,    85,     0,   128,   111,    93,
851    129,    73,     0,   130,     0,   130,   131,     0,    16,   118,
852    104,     0,    16,   118,   104,    75,   131,    76,     0,     0,
853     74,   134,     0,   105,     0,   105,    77,   134,     0,    11,
854    121,   104,   133,   151,     0,    12,   121,   104,   133,   151,
855      0,    13,   121,   104,   133,   151,     0,    14,   121,   104,
856    133,   151,     0,    84,    56,    93,    85,     0,    84,    93,
857     85,     0,    15,   125,   138,   104,   133,   151,     0,    15,
858    138,   125,   104,   133,   151,     0,    11,   121,    93,   133,
859    151,     0,    12,   121,    93,   133,   151,     0,    13,   121,
860     93,   133,   151,     0,    14,   121,    93,   133,   151,     0,
861     15,   138,    93,   133,   151,     0,    16,   118,    93,    73,
862      0,    16,   118,    93,    75,   131,    76,    73,     0,     0,
863     86,   111,     0,     0,    86,    56,     0,    86,    57,     0,
864     18,    93,   145,     0,   109,   146,     0,   111,    93,   146,
865      0,   147,     0,   147,    77,   148,     0,    22,    78,   148,
866     79,     0,   149,   140,     0,   149,   141,     0,   149,   142,
867      0,   149,   143,     0,   149,   144,     0,    73,     0,    75,
868    152,    76,    92,     0,     0,   158,   152,     0,   115,    73,
869      0,   116,    73,     0,   155,    73,     0,   154,    73,     0,
870     10,   156,    73,     0,    19,   157,    73,     0,    18,    93,
871     73,     0,     8,   117,    94,     0,     8,   117,    94,    81,
872    117,    82,     0,     7,   117,    94,     0,     7,   117,    94,
873     81,   117,    82,     0,     9,   117,    94,     0,     9,   117,
874     94,    81,   117,    82,     0,     9,    84,    68,    85,   117,
875     94,    81,   117,    82,     0,   105,     0,   105,    77,   156,
876      0,    57,     0,   159,    73,     0,   153,     0,    39,   162,
877    161,    93,   178,   180,   181,     0,    39,   162,    93,   178,
878    181,     0,    39,    84,    68,    85,    35,    93,   178,   179,
879    169,   167,   170,    93,     0,    71,   169,   167,   170,    73,
880      0,    71,    73,     0,    35,     0,   107,     0,     0,    84,
881    163,    85,     0,   164,     0,   164,    77,   163,     0,    21,
882      0,    23,     0,    24,     0,    25,     0,    31,     0,    32,
883      0,    33,     0,    34,     0,    26,     0,    27,     0,    28,
884      0,    52,     0,    51,   123,     0,    72,     0,    57,     0,
885     56,     0,    94,     0,     0,    58,     0,    58,    77,   166,
886      0,     0,    58,     0,    58,    84,   167,    85,   167,     0,
887     58,    75,   167,    76,   167,     0,    58,    81,   166,    82,
888    167,     0,    81,   167,    82,   167,     0,   111,    93,    84,
889      0,    75,     0,    76,     0,   111,     0,   111,    93,   128,
890      0,   111,    93,    86,   165,     0,   168,   167,    85,     0,
891      6,     0,    69,     0,    70,     0,    93,     0,   173,    87,
892     79,    93,     0,   173,    88,    93,     0,   173,    84,   173,
893     85,     0,   173,    84,    56,    85,     0,   173,    81,   173,
894     82,     0,   168,   167,    85,     0,   172,    74,   111,    93,
895     78,   173,    79,     0,   111,    93,    78,   173,    79,     0,
896    172,    74,   174,    78,   173,    79,     0,   171,     0,   171,
897     77,   176,     0,   175,     0,   175,    77,   177,     0,    81,
898    176,    82,     0,    81,    82,     0,    84,   177,    85,     0,
899     84,    85,     0,     0,    20,    86,    56,     0,     0,   187,
900      0,    75,   182,    76,     0,   187,     0,   187,   182,     0,
901    187,     0,   187,   182,     0,     0,    50,    81,   185,    82,
902      0,    55,     0,    55,    77,   185,     0,    57,     0,     0,
903     45,   186,   169,   167,   170,   184,     0,    49,    81,    55,
904    178,    82,   169,   167,    76,     0,    43,   193,    75,    76,
905      0,    43,   193,   187,     0,    43,   193,    75,   182,    76,
906      0,    44,    75,   183,    76,     0,    40,   191,   167,    73,
907    167,    73,   167,   190,    75,   182,    76,     0,    40,   191,
908    167,    73,   167,    73,   167,   190,   187,     0,    41,    84,
909     55,    85,   191,   167,    74,   167,    77,   167,   190,   187,
910      0,    41,    84,    55,    85,   191,   167,    74,   167,    77,
911    167,   190,    75,   182,    76,     0,    47,   191,   167,   190,
912    187,   188,     0,    47,   191,   167,   190,    75,   182,    76,
913    188,     0,    42,   191,   167,   190,   187,     0,    42,   191,
914    167,   190,    75,   182,    76,     0,    46,   189,    73,     0,
915    169,   167,   170,     0,     0,    48,   187,     0,    48,    75,
916    182,    76,     0,    55,     0,    55,    77,   189,     0,    82,
917      0,    81,     0,    55,   178,     0,    55,   194,   167,   195,
918    178,     0,   192,     0,   192,    77,   193,     0,    84,     0,
919     85,     0,    59,    93,     0,    60,    93,     0
920 };
921
922 #endif
923
924 #if (YY_parse_DEBUG != 0) || defined(YY_parse_ERROR_VERBOSE) 
925 static const short yyrline[] = { 0,
926    151,   155,   159,   163,   165,   169,   171,   175,   179,   181,
927    189,   193,   200,   202,   206,   208,   212,   214,   216,   218,
928    220,   222,   224,   226,   228,   230,   232,   234,   236,   238,
929    240,   244,   246,   248,   252,   254,   258,   260,   264,   266,
930    270,   272,   274,   276,   278,   280,   282,   284,   286,   288,
931    290,   292,   294,   296,   298,   302,   303,   310,   312,   316,
932    320,   322,   326,   330,   332,   334,   336,   339,   341,   345,
933    347,   351,   353,   357,   361,   363,   367,   371,   375,   377,
934    381,   383,   393,   395,   399,   401,   405,   407,   411,   413,
935    417,   419,   423,   427,   429,   433,   435,   439,   441,   445,
936    447,   450,   452,   455,   459,   461,   465,   467,   471,   473,
937    477,   479,   483,   485,   489,   493,   497,   503,   507,   509,
938    513,   515,   519,   523,   527,   531,   533,   537,   539,   543,
939    545,   547,   551,   553,   555,   559,   561,   565,   569,   571,
940    573,   575,   577,   581,   583,   587,   606,   610,   612,   614,
941    615,   617,   619,   621,   625,   627,   629,   632,   637,   639,
942    641,   649,   651,   654,   658,   660,   664,   675,   686,   704,
943    706,   710,   712,   716,   718,   722,   724,   728,   730,   732,
944    734,   736,   738,   740,   742,   744,   746,   748,   750,   752,
945    754,   758,   760,   762,   766,   768,   770,   778,   780,   782,
946    788,   794,   800,   808,   815,   823,   830,   832,   834,   836,
947    843,   844,   845,   848,   849,   850,   851,   858,   864,   873,
948    880,   886,   892,   900,   902,   906,   908,   912,   914,   918,
949    920,   924,   926,   930,   932,   934,   938,   940,   944,   946,
950    950,   952,   956,   958,   962,   964,   968,   983,   997,   999,
951   1001,  1003,  1005,  1008,  1011,  1014,  1017,  1019,  1021,  1023,
952   1025,  1027,  1036,  1038,  1040,  1043,  1045,  1049,  1053,  1057,
953   1065,  1073,  1075,  1079,  1082,  1086,  1090
954 };
955
956 static const char * const yytname[] = {   "$","error","$illegal.","MODULE","MAINMODULE",
957 "EXTERN","READONLY","INITCALL","INITNODE","INITPROC","PUPABLE","CHARE","MAINCHARE",
958 "GROUP","NODEGROUP","ARRAY","MESSAGE","CONDITIONAL","CLASS","INCLUDE","STACKSIZE",
959 "THREADED","TEMPLATE","SYNC","IGET","EXCLUSIVE","IMMEDIATE","SKIPSCHED","INLINE",
960 "VIRTUAL","MIGRATABLE","CREATEHERE","CREATEHOME","NOKEEP","NOTRACE","VOID","CONST",
961 "PACKED","VARSIZE","ENTRY","FOR","FORALL","WHILE","WHEN","OVERLAP","ATOMIC",
962 "FORWARD","IF","ELSE","CONNECT","PUBLISHES","PYTHON","LOCAL","NAMESPACE","USING",
963 "IDENT","NUMBER","LITERAL","CPROGRAM","HASHIF","HASHIFDEF","INT","LONG","SHORT",
964 "CHAR","FLOAT","DOUBLE","UNSIGNED","ACCEL","READWRITE","WRITEONLY","ACCELBLOCK",
965 "MEMCRITICAL","';'","':'","'{'","'}'","','","'<'","'>'","'*'","'('","')'","'&'",
966 "'['","']'","'='","'-'","'.'","File","ModuleEList","OptExtern","OptSemiColon",
967 "Name","QualName","Module","ConstructEList","ConstructList","Construct","TParam",
968 "TParamList","TParamEList","OptTParams","BuiltinType","NamedType","QualNamedType",
969 "SimpleType","OnePtrType","PtrType","FuncType","BaseType","Type","ArrayDim",
970 "Dim","DimList","Readonly","ReadonlyMsg","OptVoid","MAttribs","MAttribList",
971 "MAttrib","CAttribs","CAttribList","PythonOptions","ArrayAttrib","ArrayAttribs",
972 "ArrayAttribList","CAttrib","OptConditional","MsgArray","Var","VarList","Message",
973 "OptBaseList","BaseList","Chare","Group","NodeGroup","ArrayIndexType","Array",
974 "TChare","TGroup","TNodeGroup","TArray","TMessage","OptTypeInit","OptNameInit",
975 "TVar","TVarList","TemplateSpec","Template","MemberEList","MemberList","NonEntryMember",
976 "InitNode","InitProc","PUPableClass","IncludeFile","Member","Entry","AccelBlock",
977 "EReturn","EAttribs","EAttribList","EAttrib","DefaultParameter","CPROGRAM_List",
978 "CCode","ParamBracketStart","ParamBraceStart","ParamBraceEnd","Parameter","AccelBufferType",
979 "AccelInstName","AccelArrayParam","AccelParameter","ParamList","AccelParamList",
980 "EParameters","AccelEParameters","OptStackSize","OptSdagCode","Slist","Olist",
981 "OptPubList","PublishesList","OptTraceName","SingleConstruct","HasElse","ForwardList",
982 "EndIntExpr","StartIntExpr","SEntry","SEntryList","SParamBracketStart","SParamBracketEnd",
983 "HashIFComment","HashIFDefComment",""
984 };
985 #endif
986
987 static const short yyr1[] = {     0,
988     89,    90,    90,    91,    91,    92,    92,    93,    94,    94,
989     95,    95,    96,    96,    97,    97,    98,    98,    98,    98,
990     98,    98,    98,    98,    98,    98,    98,    98,    98,    98,
991     98,    99,    99,    99,   100,   100,   101,   101,   102,   102,
992    103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
993    103,   103,   103,   103,   103,   104,   105,   106,   106,   107,
994    108,   108,   109,   110,   110,   110,   110,   110,   110,   111,
995    111,   112,   112,   113,   114,   114,   115,   116,   117,   117,
996    118,   118,   119,   119,   120,   120,   121,   121,   122,   122,
997    123,   123,   124,   125,   125,   126,   126,   127,   127,   128,
998    128,   129,   129,   130,   131,   131,   132,   132,   133,   133,
999    134,   134,   135,   135,   136,   137,   138,   138,   139,   139,
1000    140,   140,   141,   142,   143,   144,   144,   145,   145,   146,
1001    146,   146,   147,   147,   147,   148,   148,   149,   150,   150,
1002    150,   150,   150,   151,   151,   152,   152,   153,   153,   153,
1003    153,   153,   153,   153,   154,   154,   154,   154,   155,   155,
1004    155,   156,   156,   157,   158,   158,   159,   159,   159,   160,
1005    160,   161,   161,   162,   162,   163,   163,   164,   164,   164,
1006    164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
1007    164,   165,   165,   165,   166,   166,   166,   167,   167,   167,
1008    167,   167,   167,   168,   169,   170,   171,   171,   171,   171,
1009    172,   172,   172,   173,   173,   173,   173,   173,   173,   174,
1010    175,   175,   175,   176,   176,   177,   177,   178,   178,   179,
1011    179,   180,   180,   181,   181,   181,   182,   182,   183,   183,
1012    184,   184,   185,   185,   186,   186,   187,   187,   187,   187,
1013    187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
1014    187,   187,   188,   188,   188,   189,   189,   190,   191,   192,
1015    192,   193,   193,   194,   195,   196,   197
1016 };
1017
1018 static const short yyr2[] = {     0,
1019      1,     0,     2,     0,     1,     0,     1,     1,     1,     4,
1020      3,     3,     1,     4,     0,     2,     5,     5,     4,     3,
1021      2,     2,     3,     2,     2,     2,     2,     2,     1,     1,
1022      1,     1,     1,     1,     1,     3,     0,     1,     0,     3,
1023      1,     1,     1,     1,     2,     2,     3,     3,     2,     2,
1024      2,     1,     1,     2,     1,     2,     2,     1,     1,     2,
1025      2,     2,     8,     1,     1,     1,     1,     2,     2,     2,
1026      1,     1,     1,     3,     0,     2,     4,     5,     0,     1,
1027      0,     3,     1,     3,     1,     1,     0,     3,     1,     3,
1028      0,     1,     1,     0,     3,     1,     3,     1,     1,     0,
1029      1,     0,     2,     5,     1,     2,     3,     6,     0,     2,
1030      1,     3,     5,     5,     5,     5,     4,     3,     6,     6,
1031      5,     5,     5,     5,     5,     4,     7,     0,     2,     0,
1032      2,     2,     3,     2,     3,     1,     3,     4,     2,     2,
1033      2,     2,     2,     1,     4,     0,     2,     2,     2,     2,
1034      2,     3,     3,     3,     3,     6,     3,     6,     3,     6,
1035      9,     1,     3,     1,     2,     1,     7,     5,    12,     5,
1036      2,     1,     1,     0,     3,     1,     3,     1,     1,     1,
1037      1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1038      1,     1,     1,     1,     0,     1,     3,     0,     1,     5,
1039      5,     5,     4,     3,     1,     1,     1,     3,     4,     3,
1040      1,     1,     1,     1,     4,     3,     4,     4,     4,     3,
1041      7,     5,     6,     1,     3,     1,     3,     3,     2,     3,
1042      2,     0,     3,     0,     1,     3,     1,     2,     1,     2,
1043      0,     4,     1,     3,     1,     0,     6,     8,     4,     3,
1044      5,     4,    11,     9,    12,    14,     6,     8,     5,     7,
1045      3,     3,     0,     2,     4,     1,     3,     1,     1,     2,
1046      5,     1,     3,     1,     1,     2,     2
1047 };
1048
1049 static const short yydefact[] = {     2,
1050      0,     0,     1,     2,     8,     0,     0,     3,    13,     4,
1051     11,    12,     5,     0,     0,     0,     0,     0,     0,     0,
1052      4,    31,    29,    30,     0,     0,     9,     0,   276,   277,
1053    171,   205,   198,     0,    79,    79,    79,     0,    87,    87,
1054     87,    87,     0,    81,     0,     0,     0,     4,    21,     0,
1055      0,     0,    24,    25,    26,    27,     0,    28,    22,     0,
1056      0,     6,    16,     4,     0,    20,     0,   199,   198,     0,
1057      0,    55,     0,    41,    42,    43,    44,    52,    53,     0,
1058     39,    58,    59,    64,    65,    66,    67,    71,     0,    80,
1059      0,     0,     0,     0,   162,     0,     0,     0,     0,     0,
1060      0,     0,     0,    94,     0,     0,     0,   164,     0,     0,
1061      0,   148,   149,    23,    87,    87,    87,    87,     0,    81,
1062    139,   140,   141,   142,   143,   151,   150,     7,    14,     0,
1063     19,     0,   198,   195,   198,     0,   206,     0,     0,    68,
1064     51,    54,    45,    46,    49,    50,    37,    57,    60,    61,
1065     62,    69,     0,    70,    75,   157,   155,     0,   159,     0,
1066    152,    98,    99,     0,    89,    39,   109,   109,   109,   109,
1067     93,     0,     0,    96,     0,     0,     0,     0,     0,    85,
1068     86,     0,    83,   107,   154,   153,     0,    67,     0,   136,
1069      0,     6,     0,     0,     0,     0,     0,     0,    18,    10,
1070      0,   196,     0,     0,   198,   170,     0,    47,    48,    33,
1071     34,    35,    38,     0,    32,     0,     0,    75,    77,    79,
1072     79,    79,    79,   163,    88,     0,    56,     0,     0,     0,
1073      0,     0,     0,   118,     0,    95,   109,   109,    82,     0,
1074    100,   128,     0,   134,   130,     0,   138,    17,   109,   109,
1075    109,   109,   109,     0,   198,   195,   198,   198,   203,    78,
1076      0,    40,     0,    72,    73,     0,    76,     0,     0,     0,
1077      0,    90,   111,   110,   144,   146,   113,   114,   115,   116,
1078    117,    97,     0,     0,    84,   101,     0,   100,     0,     0,
1079    133,   131,   132,   135,   137,     0,     0,     0,     0,     0,
1080    126,   100,   201,   197,   202,   200,    36,     0,    74,   158,
1081    156,     0,   160,     0,   174,     0,   166,   146,     0,   119,
1082    120,     0,   106,   108,   129,   121,   122,   123,   124,   125,
1083      0,     0,    79,   112,     0,     0,     6,   147,   165,   102,
1084      0,   207,   198,   224,     0,     0,   178,   179,   180,   181,
1085    186,   187,   188,   182,   183,   184,   185,    91,   189,     0,
1086    191,     0,   176,    55,     9,     0,     0,   173,     0,   145,
1087      0,     0,   127,   100,     0,     0,    63,   161,    92,   190,
1088      0,   175,     0,     0,   234,     0,   103,   104,   204,     0,
1089    208,   210,   225,     0,   177,   229,     0,     0,     0,     0,
1090      0,     0,   246,     0,     0,     0,   205,   198,   168,   235,
1091    232,   193,   192,   194,   209,     0,   228,   269,   198,     0,
1092    198,     0,   272,     0,     0,   245,     0,   266,     0,   198,
1093      0,     0,   237,     0,     0,   234,     0,     0,     0,     0,
1094    274,   270,   198,     0,   205,   250,     0,   239,   198,     0,
1095    261,     0,     0,   236,   238,   262,     0,   167,     0,     0,
1096    198,     0,   268,     0,     0,   273,   249,     0,   252,   240,
1097      0,   267,     0,     0,   233,   211,   212,   213,   231,     0,
1098      0,   226,     0,   198,     0,   198,   205,   259,   275,     0,
1099    251,   241,   205,   263,     0,     0,     0,     0,   230,     0,
1100    198,     0,     0,   271,     0,   247,     0,     0,   257,   198,
1101      0,     0,   198,     0,   227,     0,     0,   198,   260,     0,
1102    263,   205,   264,     0,   214,     0,     0,     0,     0,   169,
1103      0,     0,   243,     0,   258,     0,   248,   222,     0,     0,
1104      0,     0,     0,   220,     0,   205,   254,   198,     0,   242,
1105    265,     0,     0,     0,     0,   216,     0,   223,     0,     0,
1106    244,   219,   218,   217,   215,   221,   253,     0,   205,   255,
1107      0,   256,     0,     0,     0
1108 };
1109
1110 static const short yydefgoto[] = {   573,
1111      3,    19,   129,   166,    81,     4,    11,    20,    21,   212,
1112    213,   214,   148,    82,   167,    83,    84,    85,    86,    87,
1113     88,   342,   266,   218,   219,    50,    51,    91,   106,   182,
1114    183,    98,   164,   380,   174,   103,   175,   165,   287,   372,
1115    288,   289,    52,   229,   274,    53,    54,    55,   104,    56,
1116    121,   122,   123,   124,   125,   291,   244,   190,   191,    57,
1117     58,   277,   316,   317,    60,    61,    96,   109,   318,   319,
1118     22,   369,   336,   362,   363,   415,   203,    70,   343,   408,
1119    138,   344,   481,   526,   514,   482,   345,   483,   385,   460,
1120    436,   409,   432,   447,   506,   534,   427,   433,   509,   429,
1121    464,   419,   423,   424,   443,   490,    23,    24
1122 };
1123
1124 static const short yypact[] = {    85,
1125     -3,    -3,-32768,    85,-32768,   130,   130,-32768,-32768,    20,
1126 -32768,-32768,-32768,    -3,   163,    -3,    -3,   193,   227,   -39,
1127     20,-32768,-32768,-32768,     2,    53,-32768,   104,-32768,-32768,
1128 -32768,-32768,   -36,   334,    90,    90,   -18,    53,    49,    49,
1129     49,    49,    54,    68,    -3,   107,    94,    20,-32768,   114,
1130    118,   126,-32768,-32768,-32768,-32768,   459,-32768,-32768,   129,
1131    136,   146,-32768,    20,   249,-32768,   110,   -13,   -36,   153,
1132    352,-32768,   577,-32768,    62,-32768,-32768,-32768,-32768,   164,
1133    111,-32768,-32768,   167,   182,   190,-32768,   -26,    53,-32768,
1134     53,    53,   176,    53,   211,   221,     3,    -3,    -3,    -3,
1135     -3,   209,   214,   217,   246,    -3,   237,-32768,   245,   370,
1136    251,-32768,-32768,-32768,    49,    49,    49,    49,   214,    68,
1137 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   264,
1138 -32768,   270,   -36,   276,   -36,   267,-32768,   292,   294,   -16,
1139 -32768,-32768,-32768,   286,-32768,-32768,   468,-32768,-32768,-32768,
1140 -32768,-32768,   310,-32768,   -35,    36,    60,   291,    65,    53,
1141 -32768,-32768,-32768,   306,   317,   325,   328,   328,   328,   328,
1142 -32768,    -3,   323,   332,   326,   303,    -3,   359,    -3,-32768,
1143 -32768,   337,   346,   349,-32768,-32768,    -3,    30,    -3,   351,
1144    347,   146,    -3,    -3,    -3,    -3,    -3,    -3,-32768,-32768,
1145    362,   364,   357,   358,   -36,-32768,    -3,-32768,-32768,-32768,
1146 -32768,   365,-32768,   375,-32768,    -3,   316,   371,-32768,    90,
1147     90,    90,    90,-32768,-32768,     3,-32768,    53,   218,   218,
1148    218,   218,   372,-32768,   359,-32768,   328,   328,-32768,   246,
1149    442,   374,   296,-32768,   376,   370,-32768,-32768,   328,   328,
1150    328,   328,   328,   244,   -36,   276,   -36,   -36,-32768,-32768,
1151    468,-32768,   381,-32768,   384,   379,-32768,   383,   394,    53,
1152    395,-32768,   389,-32768,-32768,   336,-32768,-32768,-32768,-32768,
1153 -32768,-32768,   218,   218,-32768,-32768,   577,    -6,   402,   577,
1154 -32768,-32768,-32768,-32768,-32768,   218,   218,   218,   218,   218,
1155 -32768,   442,-32768,-32768,-32768,-32768,-32768,   408,-32768,-32768,
1156 -32768,    99,-32768,    53,   416,   426,-32768,   336,   432,-32768,
1157 -32768,    -3,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1158    430,   577,    90,-32768,   248,   590,   146,-32768,-32768,   423,
1159    435,    -3,   -36,   436,   427,   437,-32768,-32768,-32768,-32768,
1160 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   455,-32768,   429,
1161 -32768,   433,   443,   466,   445,   456,   167,-32768,    -3,-32768,
1162    451,   449,-32768,    19,   478,   577,-32768,-32768,-32768,-32768,
1163    505,-32768,   305,   385,   210,   456,-32768,-32768,-32768,   258,
1164 -32768,-32768,-32768,    -3,-32768,-32768,   469,   472,   489,   472,
1165    520,   501,   530,   522,   472,   508,   452,   -36,-32768,-32768,
1166    571,-32768,-32768,   384,-32768,   456,-32768,-32768,   -36,   555,
1167    -36,    66,   538,   503,   452,-32768,   541,   540,   545,   -36,
1168    564,   544,   452,   153,   535,   210,   542,   549,   543,   547,
1169 -32768,-32768,   -36,   520,   441,-32768,   548,   452,   -36,   522,
1170 -32768,   547,   456,-32768,-32768,-32768,   567,-32768,    96,   541,
1171    -36,   472,-32768,   515,   546,-32768,-32768,   554,-32768,-32768,
1172    153,-32768,   525,   551,-32768,-32768,-32768,-32768,-32768,    -3,
1173    560,   558,   561,   -36,   563,   -36,   452,-32768,-32768,   456,
1174 -32768,   597,   452,   600,   541,   572,   577,   242,-32768,   153,
1175    -36,   575,   582,-32768,   578,-32768,   584,   539,-32768,   -36,
1176     -3,    -3,   -36,   583,-32768,    -3,   547,   -36,-32768,   607,
1177    600,   452,-32768,   587,-32768,    56,    45,   579,    -3,-32768,
1178    552,   588,   589,   585,-32768,   592,-32768,-32768,    -3,   324,
1179    591,    -3,    -3,-32768,    95,   452,-32768,   -36,   607,-32768,
1180 -32768,   279,   586,   297,    -3,-32768,   208,-32768,   593,   547,
1181 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   562,   452,-32768,
1182    596,-32768,   673,   674,-32768
1183 };
1184
1185 static const short yypgoto[] = {-32768,
1186    671,-32768,  -188,    -1,    -7,   657,   670,     8,-32768,-32768,
1187    417,-32768,   513,-32768,   -58,   -24,   -69,   344,-32768,  -104,
1188    608,   -29,-32768,-32768,   464,-32768,-32768,    -9,   565,   444,
1189 -32768,    52,   457,-32768,-32768,   594,   453,-32768,   312,-32768,
1190 -32768,  -182,-32768,  -138,   373,-32768,-32768,-32768,   -52,-32768,
1191 -32768,-32768,-32768,-32768,-32768,-32768,   446,-32768,   447,-32768,
1192 -32768,   -76,   377,   675,-32768,-32768,   529,-32768,-32768,-32768,
1193 -32768,-32768,-32768,   307,-32768,-32768,   440,   -57,   195,   -15,
1194   -396,-32768,-32768,  -479,-32768,-32768,  -350,   199,  -363,-32768,
1195 -32768,   263,  -424,-32768,-32768,   151,-32768,  -378,   180,   252,
1196   -434,  -365,-32768,   259,-32768,-32768,-32768,-32768
1197 };
1198
1199
1200 #define YYLAST          703
1201
1202
1203 static const short yytable[] = {     6,
1204      7,   139,    33,   248,    89,   188,   410,    28,   455,   152,
1205    286,   136,    25,    95,    29,    30,    90,   473,    65,   152,
1206    468,    68,   411,   470,    13,   393,    92,    94,    63,   230,
1207    231,   232,   162,   397,   421,   286,    62,   456,    67,   430,
1208    168,   169,   170,   107,    69,   446,   448,   184,   217,   545,
1209    177,     5,   437,   163,   153,   111,   154,   410,   442,   552,
1210    554,   133,   503,   557,   153,    93,   197,   134,   507,  -105,
1211    135,   130,    14,    15,   492,   201,    64,   204,    16,    17,
1212    189,   155,   531,   156,   157,   488,   159,     1,     2,   474,
1213     18,    99,   100,   101,   494,   -15,   486,   536,   283,   284,
1214    173,   476,   389,   516,   390,   323,  -130,    27,  -130,    67,
1215    296,   297,   298,   299,   300,   243,   220,   215,   237,   331,
1216    238,   559,   543,   141,    90,   568,   504,   142,   389,   523,
1217     72,    73,    97,    67,   538,    95,   539,   102,    67,   540,
1218    221,   188,   541,   542,   571,   223,   384,   259,   370,   441,
1219     27,   105,   547,   278,   279,   280,    74,    75,    76,    77,
1220     78,    79,    80,   108,   477,   478,   193,   194,   195,   196,
1221    233,   110,    67,   558,   173,   539,    66,    67,   540,   333,
1222    479,   541,   542,   132,    67,   242,   112,   245,   147,   570,
1223    113,   249,   250,   251,   252,   253,   254,   303,   114,   305,
1224    306,   126,     9,   273,    10,   260,   320,   321,   127,   265,
1225    268,   269,   270,   271,   263,    26,   189,    27,   128,   326,
1226    327,   328,   329,   330,   143,   144,   145,   146,   137,     1,
1227      2,   215,    34,    35,    36,    37,    38,    39,    40,    41,
1228     42,    43,    44,   158,    45,    46,   149,   476,    47,   398,
1229    399,   400,   401,   402,   403,   404,   405,   322,   406,   171,
1230    325,   150,   312,     5,   172,    31,   367,    32,   347,   151,
1231    348,   349,   350,   351,   352,   353,    72,    73,   354,   355,
1232    356,   357,   180,   181,   407,   375,   566,   160,   539,   273,
1233    275,   540,   276,   161,   541,   542,    27,   176,   358,   359,
1234    178,    48,    74,    75,    76,    77,    78,    79,    80,   185,
1235    477,   478,    27,   412,   413,   360,   301,   186,   302,   361,
1236    340,   131,    67,   346,   200,   347,   192,   348,   349,   350,
1237    351,   352,   353,   202,   366,   354,   355,   356,   357,   199,
1238    374,    34,    35,    36,    37,    38,   208,   209,   205,    71,
1239    434,   292,   293,    45,    46,   358,   359,     5,   172,   539,
1240    562,   438,   540,   440,   206,   541,   542,   386,    72,    73,
1241     27,   264,   452,   207,   315,   222,   361,   539,     5,   553,
1242    540,   564,   414,   541,   542,   465,    72,   187,    27,   216,
1243    225,   471,   416,   226,    74,    75,    76,    77,    78,    79,
1244     80,   228,   147,   485,    72,    73,    27,   234,   235,   171,
1245    236,   449,    74,    75,    76,    77,    78,    79,    80,    72,
1246     73,   239,   240,   241,    27,   247,   500,   246,   502,   480,
1247     74,    75,    76,    77,    78,    79,    80,   255,   257,    27,
1248    256,   261,   258,   517,   484,    74,    75,    76,    77,    78,
1249     79,    80,   524,   262,   217,   528,   281,    67,   286,   290,
1250    532,   243,   308,   309,   310,   314,   396,   512,   480,   115,
1251    116,   117,   118,   119,   120,   311,   313,   324,   496,   510,
1252    398,   399,   400,   401,   402,   403,   404,   405,   332,   406,
1253    560,   398,   399,   400,   401,   402,   403,   404,   405,   335,
1254    406,   337,    72,    73,   339,   341,   371,   373,   377,   525,
1255    527,   379,   376,   381,   530,    32,   467,   382,   378,   383,
1256   -172,   388,    27,   210,   211,    -8,    32,   525,    74,    75,
1257     76,    77,    78,    79,    80,   387,   384,   525,   525,   394,
1258    556,   525,   398,   399,   400,   401,   402,   403,   404,   405,
1259    417,   406,   418,   565,   398,   399,   400,   401,   402,   403,
1260    404,   405,   392,   406,   398,   399,   400,   401,   402,   403,
1261    404,   405,   420,   406,   422,   425,   428,   445,   398,   399,
1262    400,   401,   402,   403,   404,   405,   426,   406,   431,   487,
1263    435,   398,   399,   400,   401,   402,   403,   404,   405,   493,
1264    406,   398,   399,   400,   401,   402,   403,   404,   405,   439,
1265    406,    72,    73,   522,   444,    32,   450,   451,   453,   454,
1266    457,   461,   475,   469,   364,   459,   546,   462,   463,   491,
1267    489,    27,   495,   497,   498,   501,   569,    74,    75,    76,
1268     77,    78,    79,    80,   365,   499,   505,   508,   518,   511,
1269     74,    75,    76,    77,    78,    79,    80,   519,   520,   521,
1270    529,   533,   537,   544,   548,   549,   550,   551,   567,   555,
1271    563,   572,   574,   575,     8,    49,    12,   307,   227,   368,
1272    140,   267,   272,   285,   198,   391,   334,   282,   224,   395,
1273    294,   513,   295,    59,   338,   304,   515,   179,   458,   561,
1274    535,   472,   466
1275 };
1276
1277 static const short yycheck[] = {     1,
1278      2,    71,    18,   192,    34,   110,   385,    15,   433,    36,
1279     17,    69,    14,    38,    16,    17,    35,   452,    26,    36,
1280    445,    58,   386,   448,     5,   376,    36,    37,    21,   168,
1281    169,   170,    30,   384,   400,    17,    76,   434,    74,   405,
1282     99,   100,   101,    45,    81,   424,   425,   106,    84,   529,
1283    103,    55,   416,    51,    81,    48,    83,   436,   422,   539,
1284    540,    75,   487,   543,    81,    84,   119,    81,   493,    76,
1285     84,    64,    53,    54,   471,   133,    75,   135,    59,    60,
1286    110,    89,   517,    91,    92,   464,    94,     3,     4,   453,
1287     71,    40,    41,    42,   473,    76,   462,   522,   237,   238,
1288    102,     6,    84,   500,    86,   288,    77,    55,    79,    74,
1289    249,   250,   251,   252,   253,    86,    81,   147,   177,   302,
1290    179,   546,    78,    62,    35,   560,   490,    66,    84,   508,
1291     35,    36,    84,    74,    79,   160,    81,    84,    74,    84,
1292     81,   246,    87,    88,   569,    81,    81,   205,   337,    84,
1293     55,    84,   531,   230,   231,   232,    61,    62,    63,    64,
1294     65,    66,    67,    57,    69,    70,   115,   116,   117,   118,
1295    172,    78,    74,    79,   176,    81,    73,    74,    84,    81,
1296     85,    87,    88,    74,    74,   187,    73,   189,    78,   568,
1297     73,   193,   194,   195,   196,   197,   198,   255,    73,   257,
1298    258,    73,    73,   228,    75,   207,   283,   284,    73,   217,
1299    220,   221,   222,   223,   216,    53,   246,    55,    73,   296,
1300    297,   298,   299,   300,    61,    62,    63,    64,    76,     3,
1301      4,   261,     6,     7,     8,     9,    10,    11,    12,    13,
1302     14,    15,    16,    68,    18,    19,    80,     6,    22,    40,
1303     41,    42,    43,    44,    45,    46,    47,   287,    49,    51,
1304    290,    80,   270,    55,    56,    73,   336,    75,    21,    80,
1305     23,    24,    25,    26,    27,    28,    35,    36,    31,    32,
1306     33,    34,    37,    38,    75,   343,    79,    77,    81,   314,
1307     73,    84,    75,    73,    87,    88,    55,    84,    51,    52,
1308     84,    75,    61,    62,    63,    64,    65,    66,    67,    73,
1309     69,    70,    55,    56,    57,    68,    73,    73,    75,    72,
1310    322,    73,    74,   333,    55,    21,    76,    23,    24,    25,
1311     26,    27,    28,    58,   336,    31,    32,    33,    34,    76,
1312    342,     6,     7,     8,     9,    10,    61,    62,    82,    16,
1313    408,    56,    57,    18,    19,    51,    52,    55,    56,    81,
1314     82,   419,    84,   421,    73,    87,    88,   369,    35,    36,
1315     55,    56,   430,    80,    39,    85,    72,    81,    55,    56,
1316     84,    85,   390,    87,    88,   443,    35,    18,    55,    80,
1317     85,   449,   394,    77,    61,    62,    63,    64,    65,    66,
1318     67,    74,    78,   461,    35,    36,    55,    85,    77,    51,
1319     85,   427,    61,    62,    63,    64,    65,    66,    67,    35,
1320     36,    85,    77,    75,    55,    79,   484,    77,   486,   459,
1321     61,    62,    63,    64,    65,    66,    67,    76,    82,    55,
1322     77,    77,    85,   501,   460,    61,    62,    63,    64,    65,
1323     66,    67,   510,    79,    84,   513,    85,    74,    17,    86,
1324    518,    86,    82,    85,    82,    77,    82,   497,   498,    11,
1325     12,    13,    14,    15,    16,    82,    82,    76,   480,   495,
1326     40,    41,    42,    43,    44,    45,    46,    47,    81,    49,
1327    548,    40,    41,    42,    43,    44,    45,    46,    47,    84,
1328     49,    76,    35,    36,    73,    76,    84,    73,    82,   511,
1329    512,    57,    77,    85,   516,    75,    76,    85,    82,    77,
1330     55,    73,    55,    56,    57,    81,    75,   529,    61,    62,
1331     63,    64,    65,    66,    67,    85,    81,   539,   540,    35,
1332    542,   543,    40,    41,    42,    43,    44,    45,    46,    47,
1333     82,    49,    81,   555,    40,    41,    42,    43,    44,    45,
1334     46,    47,    85,    49,    40,    41,    42,    43,    44,    45,
1335     46,    47,    84,    49,    55,    75,    55,    75,    40,    41,
1336     42,    43,    44,    45,    46,    47,    57,    49,    81,    75,
1337     20,    40,    41,    42,    43,    44,    45,    46,    47,    75,
1338     49,    40,    41,    42,    43,    44,    45,    46,    47,    55,
1339     49,    35,    36,    75,    77,    75,    77,    73,    55,    76,
1340     86,    73,    56,    76,    35,    84,    75,    85,    82,    76,
1341     85,    55,    82,    74,    77,    73,    75,    61,    62,    63,
1342     64,    65,    66,    67,    55,    85,    50,    48,    74,    78,
1343     61,    62,    63,    64,    65,    66,    67,    76,    81,    76,
1344     78,    55,    76,    85,    77,    77,    82,    76,    76,    79,
1345     85,    76,     0,     0,     4,    19,     7,   261,   166,   336,
1346     73,   218,   226,   240,   120,   374,   314,   235,   160,   383,
1347    245,   497,   246,    19,   318,   256,   498,   104,   436,   549,
1348    521,   450,   444
1349 };
1350
1351 #line 352 "/usr/share/bison++/bison.cc"
1352  /* fattrs + tables */
1353
1354 /* parser code folow  */
1355
1356
1357 /* This is the parser code that is written into each bison parser
1358   when the %semantic_parser declaration is not specified in the grammar.
1359   It was written by Richard Stallman by simplifying the hairy parser
1360   used when %semantic_parser is specified.  */
1361
1362 /* Note: dollar marks section change
1363    the next  is replaced by the list of actions, each action
1364    as one case of the switch.  */ 
1365
1366 #if YY_parse_USE_GOTO != 0
1367 /* 
1368  SUPRESSION OF GOTO : on some C++ compiler (sun c++)
1369   the goto is strictly forbidden if any constructor/destructor
1370   is used in the whole function (very stupid isn't it ?)
1371  so goto are to be replaced with a 'while/switch/case construct'
1372  here are the macro to keep some apparent compatibility
1373 */
1374 #define YYGOTO(lb) {yy_gotostate=lb;continue;}
1375 #define YYBEGINGOTO  enum yy_labels yy_gotostate=yygotostart; \
1376                      for(;;) switch(yy_gotostate) { case yygotostart: {
1377 #define YYLABEL(lb) } case lb: {
1378 #define YYENDGOTO } } 
1379 #define YYBEGINDECLARELABEL enum yy_labels {yygotostart
1380 #define YYDECLARELABEL(lb) ,lb
1381 #define YYENDDECLARELABEL  };
1382 #else
1383 /* macro to keep goto */
1384 #define YYGOTO(lb) goto lb
1385 #define YYBEGINGOTO 
1386 #define YYLABEL(lb) lb:
1387 #define YYENDGOTO
1388 #define YYBEGINDECLARELABEL 
1389 #define YYDECLARELABEL(lb)
1390 #define YYENDDECLARELABEL 
1391 #endif
1392 /* LABEL DECLARATION */
1393 YYBEGINDECLARELABEL
1394   YYDECLARELABEL(yynewstate)
1395   YYDECLARELABEL(yybackup)
1396 /* YYDECLARELABEL(yyresume) */
1397   YYDECLARELABEL(yydefault)
1398   YYDECLARELABEL(yyreduce)
1399   YYDECLARELABEL(yyerrlab)   /* here on detecting error */
1400   YYDECLARELABEL(yyerrlab1)   /* here on error raised explicitly by an action */
1401   YYDECLARELABEL(yyerrdefault)  /* current state does not do anything special for the error token. */
1402   YYDECLARELABEL(yyerrpop)   /* pop the current state because it cannot handle the error token */
1403   YYDECLARELABEL(yyerrhandle)  
1404 YYENDDECLARELABEL
1405 /* ALLOCA SIMULATION */
1406 /* __HAVE_NO_ALLOCA */
1407 #ifdef __HAVE_NO_ALLOCA
1408 int __alloca_free_ptr(char *ptr,char *ref)
1409 {if(ptr!=ref) free(ptr);
1410  return 0;}
1411
1412 #define __ALLOCA_alloca(size) malloc(size)
1413 #define __ALLOCA_free(ptr,ref) __alloca_free_ptr((char *)ptr,(char *)ref)
1414
1415 #ifdef YY_parse_LSP_NEEDED
1416 #define __ALLOCA_return(num) \
1417             do { return( __ALLOCA_free(yyss,yyssa)+\
1418                     __ALLOCA_free(yyvs,yyvsa)+\
1419                     __ALLOCA_free(yyls,yylsa)+\
1420                    (num)); } while(0)
1421 #else
1422 #define __ALLOCA_return(num) \
1423             do { return( __ALLOCA_free(yyss,yyssa)+\
1424                     __ALLOCA_free(yyvs,yyvsa)+\
1425                    (num)); } while(0)
1426 #endif
1427 #else
1428 #define __ALLOCA_return(num) do { return(num); } while(0)
1429 #define __ALLOCA_alloca(size) alloca(size)
1430 #define __ALLOCA_free(ptr,ref) 
1431 #endif
1432
1433 /* ENDALLOCA SIMULATION */
1434
1435 #define yyerrok         (yyerrstatus = 0)
1436 #define yyclearin       (YY_parse_CHAR = YYEMPTY)
1437 #define YYEMPTY         -2
1438 #define YYEOF           0
1439 #define YYACCEPT        __ALLOCA_return(0)
1440 #define YYABORT         __ALLOCA_return(1)
1441 #define YYERROR         YYGOTO(yyerrlab1)
1442 /* Like YYERROR except do call yyerror.
1443    This remains here temporarily to ease the
1444    transition to the new meaning of YYERROR, for GCC.
1445    Once GCC version 2 has supplanted version 1, this can go.  */
1446 #define YYFAIL          YYGOTO(yyerrlab)
1447 #define YYRECOVERING()  (!!yyerrstatus)
1448 #define YYBACKUP(token, value) \
1449 do                                                              \
1450   if (YY_parse_CHAR == YYEMPTY && yylen == 1)                               \
1451     { YY_parse_CHAR = (token), YY_parse_LVAL = (value);                 \
1452       yychar1 = YYTRANSLATE (YY_parse_CHAR);                                \
1453       YYPOPSTACK;                                               \
1454       YYGOTO(yybackup);                                            \
1455     }                                                           \
1456   else                                                          \
1457     { YY_parse_ERROR ("syntax error: cannot back up"); YYERROR; }   \
1458 while (0)
1459
1460 #define YYTERROR        1
1461 #define YYERRCODE       256
1462
1463 #ifndef YY_parse_PURE
1464 /* UNPURE */
1465 #define YYLEX           YY_parse_LEX()
1466 #ifndef YY_USE_CLASS
1467 /* If nonreentrant, and not class , generate the variables here */
1468 int     YY_parse_CHAR;                      /*  the lookahead symbol        */
1469 YY_parse_STYPE      YY_parse_LVAL;              /*  the semantic value of the */
1470                                 /*  lookahead symbol    */
1471 int YY_parse_NERRS;                 /*  number of parse errors so far */
1472 #ifdef YY_parse_LSP_NEEDED
1473 YY_parse_LTYPE YY_parse_LLOC;   /*  location data for the lookahead     */
1474                         /*  symbol                              */
1475 #endif
1476 #endif
1477
1478
1479 #else
1480 /* PURE */
1481 #ifdef YY_parse_LSP_NEEDED
1482 #define YYLEX           YY_parse_LEX(&YY_parse_LVAL, &YY_parse_LLOC)
1483 #else
1484 #define YYLEX           YY_parse_LEX(&YY_parse_LVAL)
1485 #endif
1486 #endif
1487 #ifndef YY_USE_CLASS
1488 #if YY_parse_DEBUG != 0
1489 int YY_parse_DEBUG_FLAG;                    /*  nonzero means print parse trace     */
1490 /* Since this is uninitialized, it does not stop multiple parsers
1491    from coexisting.  */
1492 #endif
1493 #endif
1494
1495
1496
1497 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
1498
1499 #ifndef YYINITDEPTH
1500 #define YYINITDEPTH 200
1501 #endif
1502
1503 /*  YYMAXDEPTH is the maximum size the stacks can grow to
1504     (effective only if the built-in stack extension method is used).  */
1505
1506 #if YYMAXDEPTH == 0
1507 #undef YYMAXDEPTH
1508 #endif
1509
1510 #ifndef YYMAXDEPTH
1511 #define YYMAXDEPTH 10000
1512 #endif
1513
1514
1515 #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
1516 #define __yy_bcopy(FROM,TO,COUNT)       __builtin_memcpy(TO,FROM,COUNT)
1517 #else                           /* not GNU C or C++ */
1518
1519 /* This is the most reliable way to avoid incompatibilities
1520    in available built-in functions on various systems.  */
1521
1522 #ifdef __cplusplus
1523 static void __yy_bcopy (char *from, char *to, int count)
1524 #else
1525 #ifdef __STDC__
1526 static void __yy_bcopy (char *from, char *to, int count)
1527 #else
1528 static void __yy_bcopy (from, to, count)
1529      char *from;
1530      char *to;
1531      int count;
1532 #endif
1533 #endif
1534 {
1535   register char *f = from;
1536   register char *t = to;
1537   register int i = count;
1538
1539   while (i-- > 0)
1540     *t++ = *f++;
1541 }
1542 #endif
1543
1544
1545 int
1546 #ifdef YY_USE_CLASS
1547  YY_parse_CLASS::
1548 #endif
1549      YY_parse_PARSE(YY_parse_PARSE_PARAM)
1550 #ifndef __STDC__
1551 #ifndef __cplusplus
1552 #ifndef YY_USE_CLASS
1553 /* parameter definition without protypes */
1554 YY_parse_PARSE_PARAM_DEF
1555 #endif
1556 #endif
1557 #endif
1558 {
1559   register int yystate;
1560   register int yyn;
1561   register short *yyssp;
1562   register YY_parse_STYPE *yyvsp;
1563   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
1564   int yychar1=0;          /*  lookahead token as an internal (translated) token number */
1565
1566   short yyssa[YYINITDEPTH];     /*  the state stack                     */
1567   YY_parse_STYPE yyvsa[YYINITDEPTH];        /*  the semantic value stack            */
1568
1569   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
1570   YY_parse_STYPE *yyvs = yyvsa;     /*  to allow yyoverflow to reallocate them elsewhere */
1571
1572 #ifdef YY_parse_LSP_NEEDED
1573   YY_parse_LTYPE yylsa[YYINITDEPTH];        /*  the location stack                  */
1574   YY_parse_LTYPE *yyls = yylsa;
1575   YY_parse_LTYPE *yylsp;
1576
1577 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1578 #else
1579 #define YYPOPSTACK   (yyvsp--, yyssp--)
1580 #endif
1581
1582   int yystacksize = YYINITDEPTH;
1583
1584 #ifdef YY_parse_PURE
1585   int YY_parse_CHAR;
1586   YY_parse_STYPE YY_parse_LVAL;
1587   int YY_parse_NERRS;
1588 #ifdef YY_parse_LSP_NEEDED
1589   YY_parse_LTYPE YY_parse_LLOC;
1590 #endif
1591 #endif
1592
1593   YY_parse_STYPE yyval;             /*  the variable used to return         */
1594                                 /*  semantic values from the action     */
1595                                 /*  routines                            */
1596
1597   int yylen;
1598 /* start loop, in which YYGOTO may be used. */
1599 YYBEGINGOTO
1600
1601 #if YY_parse_DEBUG != 0
1602   if (YY_parse_DEBUG_FLAG)
1603     fprintf(stderr, "Starting parse\n");
1604 #endif
1605   yystate = 0;
1606   yyerrstatus = 0;
1607   YY_parse_NERRS = 0;
1608   YY_parse_CHAR = YYEMPTY;          /* Cause a token to be read.  */
1609
1610   /* Initialize stack pointers.
1611      Waste one element of value and location stack
1612      so that they stay on the same level as the state stack.
1613      The wasted elements are never initialized.  */
1614
1615   yyssp = yyss - 1;
1616   yyvsp = yyvs;
1617 #ifdef YY_parse_LSP_NEEDED
1618   yylsp = yyls;
1619 #endif
1620
1621 /* Push a new state, which is found in  yystate  .  */
1622 /* In all cases, when you get here, the value and location stacks
1623    have just been pushed. so pushing a state here evens the stacks.  */
1624 YYLABEL(yynewstate)
1625
1626   *++yyssp = yystate;
1627
1628   if (yyssp >= yyss + yystacksize - 1)
1629     {
1630       /* Give user a chance to reallocate the stack */
1631       /* Use copies of these so that the &'s don't force the real ones into memory. */
1632       YY_parse_STYPE *yyvs1 = yyvs;
1633       short *yyss1 = yyss;
1634 #ifdef YY_parse_LSP_NEEDED
1635       YY_parse_LTYPE *yyls1 = yyls;
1636 #endif
1637
1638       /* Get the current used size of the three stacks, in elements.  */
1639       int size = yyssp - yyss + 1;
1640
1641 #ifdef yyoverflow
1642       /* Each stack pointer address is followed by the size of
1643          the data in use in that stack, in bytes.  */
1644 #ifdef YY_parse_LSP_NEEDED
1645       /* This used to be a conditional around just the two extra args,
1646          but that might be undefined if yyoverflow is a macro.  */
1647       yyoverflow("parser stack overflow",
1648                  &yyss1, size * sizeof (*yyssp),
1649                  &yyvs1, size * sizeof (*yyvsp),
1650                  &yyls1, size * sizeof (*yylsp),
1651                  &yystacksize);
1652 #else
1653       yyoverflow("parser stack overflow",
1654                  &yyss1, size * sizeof (*yyssp),
1655                  &yyvs1, size * sizeof (*yyvsp),
1656                  &yystacksize);
1657 #endif
1658
1659       yyss = yyss1; yyvs = yyvs1;
1660 #ifdef YY_parse_LSP_NEEDED
1661       yyls = yyls1;
1662 #endif
1663 #else /* no yyoverflow */
1664       /* Extend the stack our own way.  */
1665       if (yystacksize >= YYMAXDEPTH)
1666         {
1667           YY_parse_ERROR("parser stack overflow");
1668           __ALLOCA_return(2);
1669         }
1670       yystacksize *= 2;
1671       if (yystacksize > YYMAXDEPTH)
1672         yystacksize = YYMAXDEPTH;
1673       yyss = (short *) __ALLOCA_alloca (yystacksize * sizeof (*yyssp));
1674       __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
1675       __ALLOCA_free(yyss1,yyssa);
1676       yyvs = (YY_parse_STYPE *) __ALLOCA_alloca (yystacksize * sizeof (*yyvsp));
1677       __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
1678       __ALLOCA_free(yyvs1,yyvsa);
1679 #ifdef YY_parse_LSP_NEEDED
1680       yyls = (YY_parse_LTYPE *) __ALLOCA_alloca (yystacksize * sizeof (*yylsp));
1681       __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
1682       __ALLOCA_free(yyls1,yylsa);
1683 #endif
1684 #endif /* no yyoverflow */
1685
1686       yyssp = yyss + size - 1;
1687       yyvsp = yyvs + size - 1;
1688 #ifdef YY_parse_LSP_NEEDED
1689       yylsp = yyls + size - 1;
1690 #endif
1691
1692 #if YY_parse_DEBUG != 0
1693       if (YY_parse_DEBUG_FLAG)
1694         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1695 #endif
1696
1697       if (yyssp >= yyss + yystacksize - 1)
1698         YYABORT;
1699     }
1700
1701 #if YY_parse_DEBUG != 0
1702   if (YY_parse_DEBUG_FLAG)
1703     fprintf(stderr, "Entering state %d\n", yystate);
1704 #endif
1705
1706   YYGOTO(yybackup);
1707 YYLABEL(yybackup)
1708
1709 /* Do appropriate processing given the current state.  */
1710 /* Read a lookahead token if we need one and don't already have one.  */
1711 /* YYLABEL(yyresume) */
1712
1713   /* First try to decide what to do without reference to lookahead token.  */
1714
1715   yyn = yypact[yystate];
1716   if (yyn == YYFLAG)
1717     YYGOTO(yydefault);
1718
1719   /* Not known => get a lookahead token if don't already have one.  */
1720
1721   /* yychar is either YYEMPTY or YYEOF
1722      or a valid token in external form.  */
1723
1724   if (YY_parse_CHAR == YYEMPTY)
1725     {
1726 #if YY_parse_DEBUG != 0
1727       if (YY_parse_DEBUG_FLAG)
1728         fprintf(stderr, "Reading a token: ");
1729 #endif
1730       YY_parse_CHAR = YYLEX;
1731     }
1732
1733   /* Convert token to internal form (in yychar1) for indexing tables with */
1734
1735   if (YY_parse_CHAR <= 0)           /* This means end of input. */
1736     {
1737       yychar1 = 0;
1738       YY_parse_CHAR = YYEOF;                /* Don't call YYLEX any more */
1739
1740 #if YY_parse_DEBUG != 0
1741       if (YY_parse_DEBUG_FLAG)
1742         fprintf(stderr, "Now at end of input.\n");
1743 #endif
1744     }
1745   else
1746     {
1747       yychar1 = YYTRANSLATE(YY_parse_CHAR);
1748
1749 #if YY_parse_DEBUG != 0
1750       if (YY_parse_DEBUG_FLAG)
1751         {
1752           fprintf (stderr, "Next token is %d (%s", YY_parse_CHAR, yytname[yychar1]);
1753           /* Give the individual parser a way to print the precise meaning
1754              of a token, for further debugging info.  */
1755 #ifdef YYPRINT
1756           YYPRINT (stderr, YY_parse_CHAR, YY_parse_LVAL);
1757 #endif
1758           fprintf (stderr, ")\n");
1759         }
1760 #endif
1761     }
1762
1763   yyn += yychar1;
1764   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1765     YYGOTO(yydefault);
1766
1767   yyn = yytable[yyn];
1768
1769   /* yyn is what to do for this token type in this state.
1770      Negative => reduce, -yyn is rule number.
1771      Positive => shift, yyn is new state.
1772        New state is final state => don't bother to shift,
1773        just return success.
1774      0, or most negative number => error.  */
1775
1776   if (yyn < 0)
1777     {
1778       if (yyn == YYFLAG)
1779         YYGOTO(yyerrlab);
1780       yyn = -yyn;
1781       YYGOTO(yyreduce);
1782     }
1783   else if (yyn == 0)
1784     YYGOTO(yyerrlab);
1785
1786   if (yyn == YYFINAL)
1787     YYACCEPT;
1788
1789   /* Shift the lookahead token.  */
1790
1791 #if YY_parse_DEBUG != 0
1792   if (YY_parse_DEBUG_FLAG)
1793     fprintf(stderr, "Shifting token %d (%s), ", YY_parse_CHAR, yytname[yychar1]);
1794 #endif
1795
1796   /* Discard the token being shifted unless it is eof.  */
1797   if (YY_parse_CHAR != YYEOF)
1798     YY_parse_CHAR = YYEMPTY;
1799
1800   *++yyvsp = YY_parse_LVAL;
1801 #ifdef YY_parse_LSP_NEEDED
1802   *++yylsp = YY_parse_LLOC;
1803 #endif
1804
1805   /* count tokens shifted since error; after three, turn off error status.  */
1806   if (yyerrstatus) yyerrstatus--;
1807
1808   yystate = yyn;
1809   YYGOTO(yynewstate);
1810
1811 /* Do the default action for the current state.  */
1812 YYLABEL(yydefault)
1813
1814   yyn = yydefact[yystate];
1815   if (yyn == 0)
1816     YYGOTO(yyerrlab);
1817
1818 /* Do a reduction.  yyn is the number of a rule to reduce with.  */
1819 YYLABEL(yyreduce)
1820   yylen = yyr2[yyn];
1821   if (yylen > 0)
1822     yyval = yyvsp[1-yylen]; /* implement default value of the action */
1823
1824 #if YY_parse_DEBUG != 0
1825   if (YY_parse_DEBUG_FLAG)
1826     {
1827       int i;
1828
1829       fprintf (stderr, "Reducing via rule %d (line %d), ",
1830                yyn, yyrline[yyn]);
1831
1832       /* Print the symbols being reduced, and their result.  */
1833       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1834         fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1835       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1836     }
1837 #endif
1838
1839
1840  #line 839 "/usr/share/bison++/bison.cc"
1841
1842   switch (yyn) {
1843
1844 case 1:
1845 #line 152 "xi-grammar.y"
1846 { yyval.modlist = yyvsp[0].modlist; modlist = yyvsp[0].modlist; ;
1847     break;}
1848 case 2:
1849 #line 156 "xi-grammar.y"
1850
1851                   yyval.modlist = 0; 
1852                 ;
1853     break;}
1854 case 3:
1855 #line 160 "xi-grammar.y"
1856 { yyval.modlist = new ModuleList(lineno, yyvsp[-1].module, yyvsp[0].modlist); ;
1857     break;}
1858 case 4:
1859 #line 164 "xi-grammar.y"
1860 { yyval.intval = 0; ;
1861     break;}
1862 case 5:
1863 #line 166 "xi-grammar.y"
1864 { yyval.intval = 1; ;
1865     break;}
1866 case 6:
1867 #line 170 "xi-grammar.y"
1868 { yyval.intval = 0; ;
1869     break;}
1870 case 7:
1871 #line 172 "xi-grammar.y"
1872 { yyval.intval = 1; ;
1873     break;}
1874 case 8:
1875 #line 176 "xi-grammar.y"
1876 { yyval.strval = yyvsp[0].strval; ;
1877     break;}
1878 case 9:
1879 #line 180 "xi-grammar.y"
1880 { yyval.strval = yyvsp[0].strval; ;
1881     break;}
1882 case 10:
1883 #line 182 "xi-grammar.y"
1884 {
1885                   char *tmp = new char[strlen(yyvsp[-3].strval)+strlen(yyvsp[0].strval)+3];
1886                   sprintf(tmp,"%s::%s", yyvsp[-3].strval, yyvsp[0].strval);
1887                   yyval.strval = tmp;
1888                 ;
1889     break;}
1890 case 11:
1891 #line 190 "xi-grammar.y"
1892
1893                     yyval.module = new Module(lineno, yyvsp[-1].strval, yyvsp[0].conslist); 
1894                 ;
1895     break;}
1896 case 12:
1897 #line 194 "xi-grammar.y"
1898 {  
1899                     yyval.module = new Module(lineno, yyvsp[-1].strval, yyvsp[0].conslist); 
1900                     yyval.module->setMain();
1901                 ;
1902     break;}
1903 case 13:
1904 #line 201 "xi-grammar.y"
1905 { yyval.conslist = 0; ;
1906     break;}
1907 case 14:
1908 #line 203 "xi-grammar.y"
1909 { yyval.conslist = yyvsp[-2].conslist; ;
1910     break;}
1911 case 15:
1912 #line 207 "xi-grammar.y"
1913 { yyval.conslist = 0; ;
1914     break;}
1915 case 16:
1916 #line 209 "xi-grammar.y"
1917 { yyval.conslist = new ConstructList(lineno, yyvsp[-1].construct, yyvsp[0].conslist); ;
1918     break;}
1919 case 17:
1920 #line 213 "xi-grammar.y"
1921 { if(yyvsp[-2].conslist) yyvsp[-2].conslist->setExtern(yyvsp[-4].intval); yyval.construct = yyvsp[-2].conslist; ;
1922     break;}
1923 case 18:
1924 #line 215 "xi-grammar.y"
1925 { yyval.construct = new Scope(yyvsp[-3].strval, yyvsp[-1].conslist); ;
1926     break;}
1927 case 19:
1928 #line 217 "xi-grammar.y"
1929 { yyval.construct = new UsingScope(yyvsp[-1].strval, false); ;
1930     break;}
1931 case 20:
1932 #line 219 "xi-grammar.y"
1933 { yyval.construct = new UsingScope(yyvsp[-1].strval, true); ;
1934     break;}
1935 case 21:
1936 #line 221 "xi-grammar.y"
1937 { yyvsp[0].module->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].module; ;
1938     break;}
1939 case 22:
1940 #line 223 "xi-grammar.y"
1941 { yyvsp[0].member->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].member; ;
1942     break;}
1943 case 23:
1944 #line 225 "xi-grammar.y"
1945 { yyvsp[-1].message->setExtern(yyvsp[-2].intval); yyval.construct = yyvsp[-1].message; ;
1946     break;}
1947 case 24:
1948 #line 227 "xi-grammar.y"
1949 { yyvsp[0].chare->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].chare; ;
1950     break;}
1951 case 25:
1952 #line 229 "xi-grammar.y"
1953 { yyvsp[0].chare->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].chare; ;
1954     break;}
1955 case 26:
1956 #line 231 "xi-grammar.y"
1957 { yyvsp[0].chare->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].chare; ;
1958     break;}
1959 case 27:
1960 #line 233 "xi-grammar.y"
1961 { yyvsp[0].chare->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].chare; ;
1962     break;}
1963 case 28:
1964 #line 235 "xi-grammar.y"
1965 { yyvsp[0].templat->setExtern(yyvsp[-1].intval); yyval.construct = yyvsp[0].templat; ;
1966     break;}
1967 case 29:
1968 #line 237 "xi-grammar.y"
1969 { yyval.construct = NULL; ;
1970     break;}
1971 case 30:
1972 #line 239 "xi-grammar.y"
1973 { yyval.construct = NULL; ;
1974     break;}
1975 case 31:
1976 #line 241 "xi-grammar.y"
1977 { yyval.construct = yyvsp[0].accelBlock; ;
1978     break;}
1979 case 32:
1980 #line 245 "xi-grammar.y"
1981 { yyval.tparam = new TParamType(yyvsp[0].type); ;
1982     break;}
1983 case 33:
1984 #line 247 "xi-grammar.y"
1985 { yyval.tparam = new TParamVal(yyvsp[0].strval); ;
1986     break;}
1987 case 34:
1988 #line 249 "xi-grammar.y"
1989 { yyval.tparam = new TParamVal(yyvsp[0].strval); ;
1990     break;}
1991 case 35:
1992 #line 253 "xi-grammar.y"
1993 { yyval.tparlist = new TParamList(yyvsp[0].tparam); ;
1994     break;}
1995 case 36:
1996 #line 255 "xi-grammar.y"
1997 { yyval.tparlist = new TParamList(yyvsp[-2].tparam, yyvsp[0].tparlist); ;
1998     break;}
1999 case 37:
2000 #line 259 "xi-grammar.y"
2001 { yyval.tparlist = 0; ;
2002     break;}
2003 case 38:
2004 #line 261 "xi-grammar.y"
2005 { yyval.tparlist = yyvsp[0].tparlist; ;
2006     break;}
2007 case 39:
2008 #line 265 "xi-grammar.y"
2009 { yyval.tparlist = 0; ;
2010     break;}
2011 case 40:
2012 #line 267 "xi-grammar.y"
2013 { yyval.tparlist = yyvsp[-1].tparlist; ;
2014     break;}
2015 case 41:
2016 #line 271 "xi-grammar.y"
2017 { yyval.type = new BuiltinType("int"); ;
2018     break;}
2019 case 42:
2020 #line 273 "xi-grammar.y"
2021 { yyval.type = new BuiltinType("long"); ;
2022     break;}
2023 case 43:
2024 #line 275 "xi-grammar.y"
2025 { yyval.type = new BuiltinType("short"); ;
2026     break;}
2027 case 44:
2028 #line 277 "xi-grammar.y"
2029 { yyval.type = new BuiltinType("char"); ;
2030     break;}
2031 case 45:
2032 #line 279 "xi-grammar.y"
2033 { yyval.type = new BuiltinType("unsigned int"); ;
2034     break;}
2035 case 46:
2036 #line 281 "xi-grammar.y"
2037 { yyval.type = new BuiltinType("unsigned long"); ;
2038     break;}
2039 case 47:
2040 #line 283 "xi-grammar.y"
2041 { yyval.type = new BuiltinType("unsigned long"); ;
2042     break;}
2043 case 48:
2044 #line 285 "xi-grammar.y"
2045 { yyval.type = new BuiltinType("unsigned long long"); ;
2046     break;}
2047 case 49:
2048 #line 287 "xi-grammar.y"
2049 { yyval.type = new BuiltinType("unsigned short"); ;
2050     break;}
2051 case 50:
2052 #line 289 "xi-grammar.y"
2053 { yyval.type = new BuiltinType("unsigned char"); ;
2054     break;}
2055 case 51:
2056 #line 291 "xi-grammar.y"
2057 { yyval.type = new BuiltinType("long long"); ;
2058     break;}
2059 case 52:
2060 #line 293 "xi-grammar.y"
2061 { yyval.type = new BuiltinType("float"); ;
2062     break;}
2063 case 53:
2064 #line 295 "xi-grammar.y"
2065 { yyval.type = new BuiltinType("double"); ;
2066     break;}
2067 case 54:
2068 #line 297 "xi-grammar.y"
2069 { yyval.type = new BuiltinType("long double"); ;
2070     break;}
2071 case 55:
2072 #line 299 "xi-grammar.y"
2073 { yyval.type = new BuiltinType("void"); ;
2074     break;}
2075 case 56:
2076 #line 302 "xi-grammar.y"
2077 { yyval.ntype = new NamedType(yyvsp[-1].strval,yyvsp[0].tparlist); ;
2078     break;}
2079 case 57:
2080 #line 303 "xi-grammar.y"
2081
2082                     const char* basename, *scope;
2083                     splitScopedName(yyvsp[-1].strval, &scope, &basename);
2084                     yyval.ntype = new NamedType(basename, yyvsp[0].tparlist, scope);
2085                 ;
2086     break;}
2087 case 58:
2088 #line 311 "xi-grammar.y"
2089 { yyval.type = yyvsp[0].type; ;
2090     break;}
2091 case 59:
2092 #line 313 "xi-grammar.y"
2093 { yyval.type = yyvsp[0].ntype; ;
2094     break;}
2095 case 60:
2096 #line 317 "xi-grammar.y"
2097 { yyval.ptype = new PtrType(yyvsp[-1].type); ;
2098     break;}
2099 case 61:
2100 #line 321 "xi-grammar.y"
2101 { yyvsp[-1].ptype->indirect(); yyval.ptype = yyvsp[-1].ptype; ;
2102     break;}
2103 case 62:
2104 #line 323 "xi-grammar.y"
2105 { yyvsp[-1].ptype->indirect(); yyval.ptype = yyvsp[-1].ptype; ;
2106     break;}
2107 case 63:
2108 #line 327 "xi-grammar.y"
2109 { yyval.ftype = new FuncType(yyvsp[-7].type, yyvsp[-4].strval, yyvsp[-1].plist); ;
2110     break;}
2111 case 64:
2112 #line 331 "xi-grammar.y"
2113 { yyval.type = yyvsp[0].type; ;
2114     break;}
2115 case 65:
2116 #line 333 "xi-grammar.y"
2117 { yyval.type = yyvsp[0].ptype; ;
2118     break;}
2119 case 66:
2120 #line 335 "xi-grammar.y"
2121 { yyval.type = yyvsp[0].ptype; ;
2122     break;}
2123 case 67:
2124 #line 337 "xi-grammar.y"
2125 { yyval.type = yyvsp[0].ftype; ;
2126     break;}
2127 case 68:
2128 #line 340 "xi-grammar.y"
2129 { yyval.type = yyvsp[0].type; ;
2130     break;}
2131 case 69:
2132 #line 342 "xi-grammar.y"
2133 { yyval.type = yyvsp[-1].type; ;
2134     break;}
2135 case 70:
2136 #line 346 "xi-grammar.y"
2137 { yyval.type = new ReferenceType(yyvsp[-1].type); ;
2138     break;}
2139 case 71:
2140 #line 348 "xi-grammar.y"
2141 { yyval.type = yyvsp[0].type; ;
2142     break;}
2143 case 72:
2144 #line 352 "xi-grammar.y"
2145 { yyval.val = new Value(yyvsp[0].strval); ;
2146     break;}
2147 case 73:
2148 #line 354 "xi-grammar.y"
2149 { yyval.val = new Value(yyvsp[0].strval); ;
2150     break;}
2151 case 74:
2152 #line 358 "xi-grammar.y"
2153 { yyval.val = yyvsp[-1].val; ;
2154     break;}
2155 case 75:
2156 #line 362 "xi-grammar.y"
2157 { yyval.vallist = 0; ;
2158     break;}
2159 case 76:
2160 #line 364 "xi-grammar.y"
2161 { yyval.vallist = new ValueList(yyvsp[-1].val, yyvsp[0].vallist); ;
2162     break;}
2163 case 77:
2164 #line 368 "xi-grammar.y"
2165 { yyval.readonly = new Readonly(lineno, yyvsp[-2].type, yyvsp[-1].strval, yyvsp[0].vallist); ;
2166     break;}
2167 case 78:
2168 #line 372 "xi-grammar.y"
2169 { yyval.readonly = new Readonly(lineno, yyvsp[-2].type, yyvsp[0].strval, 0, 1); ;
2170     break;}
2171 case 79:
2172 #line 376 "xi-grammar.y"
2173 { yyval.intval = 0;;
2174     break;}
2175 case 80:
2176 #line 378 "xi-grammar.y"
2177 { yyval.intval = 0;;
2178     break;}
2179 case 81:
2180 #line 382 "xi-grammar.y"
2181 { yyval.intval = 0; ;
2182     break;}
2183 case 82:
2184 #line 384 "xi-grammar.y"
2185
2186                   /*
2187                   printf("Warning: Message attributes are being phased out.\n");
2188                   printf("Warning: Please remove them from interface files.\n");
2189                   */
2190                   yyval.intval = yyvsp[-1].intval; 
2191                 ;
2192     break;}
2193 case 83:
2194 #line 394 "xi-grammar.y"
2195 { yyval.intval = yyvsp[0].intval; ;
2196     break;}
2197 case 84:
2198 #line 396 "xi-grammar.y"
2199 { yyval.intval = yyvsp[-2].intval | yyvsp[0].intval; ;
2200     break;}
2201 case 85:
2202 #line 400 "xi-grammar.y"
2203 { yyval.intval = 0; ;
2204     break;}
2205 case 86:
2206 #line 402 "xi-grammar.y"
2207 { yyval.intval = 0; ;
2208     break;}
2209 case 87:
2210 #line 406 "xi-grammar.y"
2211 { yyval.cattr = 0; ;
2212     break;}
2213 case 88:
2214 #line 408 "xi-grammar.y"
2215 { yyval.cattr = yyvsp[-1].cattr; ;
2216     break;}
2217 case 89:
2218 #line 412 "xi-grammar.y"
2219 { yyval.cattr = yyvsp[0].cattr; ;
2220     break;}
2221 case 90:
2222 #line 414 "xi-grammar.y"
2223 { yyval.cattr = yyvsp[-2].cattr | yyvsp[0].cattr; ;
2224     break;}
2225 case 91:
2226 #line 418 "xi-grammar.y"
2227 { python_doc = NULL; yyval.intval = 0; ;
2228     break;}
2229 case 92:
2230 #line 420 "xi-grammar.y"
2231 { python_doc = yyvsp[0].strval; yyval.intval = 0; ;
2232     break;}
2233 case 93:
2234 #line 424 "xi-grammar.y"
2235 { yyval.cattr = Chare::CPYTHON; ;
2236     break;}
2237 case 94:
2238 #line 428 "xi-grammar.y"
2239 { yyval.cattr = 0; ;
2240     break;}
2241 case 95:
2242 #line 430 "xi-grammar.y"
2243 { yyval.cattr = yyvsp[-1].cattr; ;
2244     break;}
2245 case 96:
2246 #line 434 "xi-grammar.y"
2247 { yyval.cattr = yyvsp[0].cattr; ;
2248     break;}
2249 case 97:
2250 #line 436 "xi-grammar.y"
2251 { yyval.cattr = yyvsp[-2].cattr | yyvsp[0].cattr; ;
2252     break;}
2253 case 98:
2254 #line 440 "xi-grammar.y"
2255 { yyval.cattr = Chare::CMIGRATABLE; ;
2256     break;}
2257 case 99:
2258 #line 442 "xi-grammar.y"
2259 { yyval.cattr = Chare::CPYTHON; ;
2260     break;}
2261 case 100:
2262 #line 446 "xi-grammar.y"
2263 { yyval.intval = 0; ;
2264     break;}
2265 case 101:
2266 #line 448 "xi-grammar.y"
2267 { yyval.intval = 1; ;
2268     break;}
2269 case 102:
2270 #line 451 "xi-grammar.y"
2271 { yyval.intval = 0; ;
2272     break;}
2273 case 103:
2274 #line 453 "xi-grammar.y"
2275 { yyval.intval = 1; ;
2276     break;}
2277 case 104:
2278 #line 456 "xi-grammar.y"
2279 { yyval.mv = new MsgVar(yyvsp[-3].type, yyvsp[-2].strval, yyvsp[-4].intval, yyvsp[-1].intval); ;
2280     break;}
2281 case 105:
2282 #line 460 "xi-grammar.y"
2283 { yyval.mvlist = new MsgVarList(yyvsp[0].mv); ;
2284     break;}
2285 case 106:
2286 #line 462 "xi-grammar.y"
2287 { yyval.mvlist = new MsgVarList(yyvsp[-1].mv, yyvsp[0].mvlist); ;
2288     break;}
2289 case 107:
2290 #line 466 "xi-grammar.y"
2291 { yyval.message = new Message(lineno, yyvsp[0].ntype); ;
2292     break;}
2293 case 108:
2294 #line 468 "xi-grammar.y"
2295 { yyval.message = new Message(lineno, yyvsp[-3].ntype, yyvsp[-1].mvlist); ;
2296     break;}
2297 case 109:
2298 #line 472 "xi-grammar.y"
2299 { yyval.typelist = 0; ;
2300     break;}
2301 case 110:
2302 #line 474 "xi-grammar.y"
2303 { yyval.typelist = yyvsp[0].typelist; ;
2304     break;}
2305 case 111:
2306 #line 478 "xi-grammar.y"
2307 { yyval.typelist = new TypeList(yyvsp[0].ntype); ;
2308     break;}
2309 case 112:
2310 #line 480 "xi-grammar.y"
2311 { yyval.typelist = new TypeList(yyvsp[-2].ntype, yyvsp[0].typelist); ;
2312     break;}
2313 case 113:
2314 #line 484 "xi-grammar.y"
2315 { yyval.chare = new Chare(lineno, yyvsp[-3].cattr|Chare::CCHARE, yyvsp[-2].ntype, yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2316     break;}
2317 case 114:
2318 #line 486 "xi-grammar.y"
2319 { yyval.chare = new MainChare(lineno, yyvsp[-3].cattr, yyvsp[-2].ntype, yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2320     break;}
2321 case 115:
2322 #line 490 "xi-grammar.y"
2323 { yyval.chare = new Group(lineno, yyvsp[-3].cattr, yyvsp[-2].ntype, yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2324     break;}
2325 case 116:
2326 #line 494 "xi-grammar.y"
2327 { yyval.chare = new NodeGroup(lineno, yyvsp[-3].cattr, yyvsp[-2].ntype, yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2328     break;}
2329 case 117:
2330 #line 498 "xi-grammar.y"
2331 {/*Stupid special case for [1D] indices*/
2332                         char *buf=new char[40];
2333                         sprintf(buf,"%sD",yyvsp[-2].strval);
2334                         yyval.ntype = new NamedType(buf); 
2335                 ;
2336     break;}
2337 case 118:
2338 #line 504 "xi-grammar.y"
2339 { yyval.ntype = new NamedType(yyvsp[-1].strval); ;
2340     break;}
2341 case 119:
2342 #line 508 "xi-grammar.y"
2343 {  yyval.chare = new Array(lineno, yyvsp[-4].cattr, yyvsp[-3].ntype, yyvsp[-2].ntype, yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2344     break;}
2345 case 120:
2346 #line 510 "xi-grammar.y"
2347 {  yyval.chare = new Array(lineno, yyvsp[-3].cattr, yyvsp[-4].ntype, yyvsp[-2].ntype, yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2348     break;}
2349 case 121:
2350 #line 514 "xi-grammar.y"
2351 { yyval.chare = new Chare(lineno, yyvsp[-3].cattr|Chare::CCHARE, new NamedType(yyvsp[-2].strval), yyvsp[-1].typelist, yyvsp[0].mbrlist);;
2352     break;}
2353 case 122:
2354 #line 516 "xi-grammar.y"
2355 { yyval.chare = new MainChare(lineno, yyvsp[-3].cattr, new NamedType(yyvsp[-2].strval), yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2356     break;}
2357 case 123:
2358 #line 520 "xi-grammar.y"
2359 { yyval.chare = new Group(lineno, yyvsp[-3].cattr, new NamedType(yyvsp[-2].strval), yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2360     break;}
2361 case 124:
2362 #line 524 "xi-grammar.y"
2363 { yyval.chare = new NodeGroup( lineno, yyvsp[-3].cattr, new NamedType(yyvsp[-2].strval), yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2364     break;}
2365 case 125:
2366 #line 528 "xi-grammar.y"
2367 { yyval.chare = new Array( lineno, 0, yyvsp[-3].ntype, new NamedType(yyvsp[-2].strval), yyvsp[-1].typelist, yyvsp[0].mbrlist); ;
2368     break;}
2369 case 126:
2370 #line 532 "xi-grammar.y"
2371 { yyval.message = new Message(lineno, new NamedType(yyvsp[-1].strval)); ;
2372     break;}
2373 case 127:
2374 #line 534 "xi-grammar.y"
2375 { yyval.message = new Message(lineno, new NamedType(yyvsp[-4].strval), yyvsp[-2].mvlist); ;
2376     break;}
2377 case 128:
2378 #line 538 "xi-grammar.y"
2379 { yyval.type = 0; ;
2380     break;}
2381 case 129:
2382 #line 540 "xi-grammar.y"
2383 { yyval.type = yyvsp[0].type; ;
2384     break;}
2385 case 130:
2386 #line 544 "xi-grammar.y"
2387 { yyval.strval = 0; ;
2388     break;}
2389 case 131:
2390 #line 546 "xi-grammar.y"
2391 { yyval.strval = yyvsp[0].strval; ;
2392     break;}
2393 case 132:
2394 #line 548 "xi-grammar.y"
2395 { yyval.strval = yyvsp[0].strval; ;
2396     break;}
2397 case 133:
2398 #line 552 "xi-grammar.y"
2399 { yyval.tvar = new TType(new NamedType(yyvsp[-1].strval), yyvsp[0].type); ;
2400     break;}
2401 case 134:
2402 #line 554 "xi-grammar.y"
2403 { yyval.tvar = new TFunc(yyvsp[-1].ftype, yyvsp[0].strval); ;
2404     break;}
2405 case 135:
2406 #line 556 "xi-grammar.y"
2407 { yyval.tvar = new TName(yyvsp[-2].type, yyvsp[-1].strval, yyvsp[0].strval); ;
2408     break;}
2409 case 136:
2410 #line 560 "xi-grammar.y"
2411 { yyval.tvarlist = new TVarList(yyvsp[0].tvar); ;
2412     break;}
2413 case 137:
2414 #line 562 "xi-grammar.y"
2415 { yyval.tvarlist = new TVarList(yyvsp[-2].tvar, yyvsp[0].tvarlist); ;
2416     break;}
2417 case 138:
2418 #line 566 "xi-grammar.y"
2419 { yyval.tvarlist = yyvsp[-1].tvarlist; ;
2420     break;}
2421 case 139:
2422 #line 570 "xi-grammar.y"
2423 { yyval.templat = new Template(yyvsp[-1].tvarlist, yyvsp[0].chare); yyvsp[0].chare->setTemplate(yyval.templat); ;
2424     break;}
2425 case 140:
2426 #line 572 "xi-grammar.y"
2427 { yyval.templat = new Template(yyvsp[-1].tvarlist, yyvsp[0].chare); yyvsp[0].chare->setTemplate(yyval.templat); ;
2428     break;}
2429 case 141:
2430 #line 574 "xi-grammar.y"
2431 { yyval.templat = new Template(yyvsp[-1].tvarlist, yyvsp[0].chare); yyvsp[0].chare->setTemplate(yyval.templat); ;
2432     break;}
2433 case 142:
2434 #line 576 "xi-grammar.y"
2435 { yyval.templat = new Template(yyvsp[-1].tvarlist, yyvsp[0].chare); yyvsp[0].chare->setTemplate(yyval.templat); ;
2436     break;}
2437 case 143:
2438 #line 578 "xi-grammar.y"
2439 { yyval.templat = new Template(yyvsp[-1].tvarlist, yyvsp[0].message); yyvsp[0].message->setTemplate(yyval.templat); ;
2440     break;}
2441 case 144:
2442 #line 582 "xi-grammar.y"
2443 { yyval.mbrlist = 0; ;
2444     break;}
2445 case 145:
2446 #line 584 "xi-grammar.y"
2447 { yyval.mbrlist = yyvsp[-2].mbrlist; ;
2448     break;}
2449 case 146:
2450 #line 588 "xi-grammar.y"
2451
2452                   Entry *tempEntry;
2453                   if (!connectEntries->empty()) {
2454                     tempEntry = connectEntries->begin();
2455                     MemberList *ml;
2456                     ml = new MemberList(tempEntry, 0);
2457                     tempEntry = connectEntries->next();
2458                     for(; !connectEntries->end(); tempEntry = connectEntries->next()) {
2459                       ml->appendMember(tempEntry); 
2460                     }
2461                     while (!connectEntries->empty())
2462                       connectEntries->pop();
2463                     yyval.mbrlist = ml; 
2464                   }
2465                   else {
2466                     yyval.mbrlist = 0; 
2467                   }
2468                 ;
2469     break;}
2470 case 147:
2471 #line 607 "xi-grammar.y"
2472 { yyval.mbrlist = new MemberList(yyvsp[-1].member, yyvsp[0].mbrlist); ;
2473     break;}
2474 case 148:
2475 #line 611 "xi-grammar.y"
2476 { yyval.member = yyvsp[-1].readonly; ;
2477     break;}
2478 case 149:
2479 #line 613 "xi-grammar.y"
2480 { yyval.member = yyvsp[-1].readonly; ;
2481     break;}
2482 case 151:
2483 #line 616 "xi-grammar.y"
2484 { yyval.member = yyvsp[-1].member; ;
2485     break;}
2486 case 152:
2487 #line 618 "xi-grammar.y"
2488 { yyval.member = yyvsp[-1].pupable; ;
2489     break;}
2490 case 153:
2491 #line 620 "xi-grammar.y"
2492 { yyval.member = yyvsp[-1].includeFile; ;
2493     break;}
2494 case 154:
2495 #line 622 "xi-grammar.y"
2496 { yyval.member = new ClassDeclaration(lineno,yyvsp[-1].strval); ;
2497     break;}
2498 case 155:
2499 #line 626 "xi-grammar.y"
2500 { yyval.member = new InitCall(lineno, yyvsp[0].strval, 1); ;
2501     break;}
2502 case 156:
2503 #line 628 "xi-grammar.y"
2504 { yyval.member = new InitCall(lineno, yyvsp[-3].strval, 1); ;
2505     break;}
2506 case 157:
2507 #line 630 "xi-grammar.y"
2508 { printf("Warning: deprecated use of initcall. Use initnode or initproc instead.\n"); 
2509                   yyval.member = new InitCall(lineno, yyvsp[0].strval, 1); ;
2510     break;}
2511 case 158:
2512 #line 633 "xi-grammar.y"
2513 { printf("Warning: deprecated use of initcall. Use initnode or initproc instead.\n");
2514                   yyval.member = new InitCall(lineno, yyvsp[-3].strval, 1); ;
2515     break;}
2516 case 159:
2517 #line 638 "xi-grammar.y"
2518 { yyval.member = new InitCall(lineno, yyvsp[0].strval, 0); ;
2519     break;}
2520 case 160:
2521 #line 640 "xi-grammar.y"
2522 { yyval.member = new InitCall(lineno, yyvsp[-3].strval, 0); ;
2523     break;}
2524 case 161:
2525 #line 642 "xi-grammar.y"
2526 {
2527                   InitCall* rtn = new InitCall(lineno, yyvsp[-3].strval, 0);
2528                   rtn->setAccel();
2529                   yyval.member = rtn;
2530                 ;
2531     break;}
2532 case 162:
2533 #line 650 "xi-grammar.y"
2534 { yyval.pupable = new PUPableClass(lineno,yyvsp[0].ntype,0); ;
2535     break;}
2536 case 163:
2537 #line 652 "xi-grammar.y"
2538 { yyval.pupable = new PUPableClass(lineno,yyvsp[-2].ntype,yyvsp[0].pupable); ;
2539     break;}
2540 case 164:
2541 #line 655 "xi-grammar.y"
2542 { yyval.includeFile = new IncludeFile(lineno,yyvsp[0].strval); ;
2543     break;}
2544 case 165:
2545 #line 659 "xi-grammar.y"
2546 { yyval.member = yyvsp[-1].entry; ;
2547     break;}
2548 case 166:
2549 #line 661 "xi-grammar.y"
2550 { yyval.member = yyvsp[0].member; ;
2551     break;}
2552 case 167:
2553 #line 665 "xi-grammar.y"
2554
2555                   if (yyvsp[0].sc != 0) { 
2556                     yyvsp[0].sc->con1 = new SdagConstruct(SIDENT, yyvsp[-3].strval);
2557                     if (yyvsp[-2].plist != 0)
2558                       yyvsp[0].sc->param = new ParamList(yyvsp[-2].plist);
2559                     else 
2560                       yyvsp[0].sc->param = new ParamList(new Parameter(0, new BuiltinType("void")));
2561                   }
2562                   yyval.entry = new Entry(lineno, yyvsp[-5].intval, yyvsp[-4].type, yyvsp[-3].strval, yyvsp[-2].plist, yyvsp[-1].val, yyvsp[0].sc, 0, 0); 
2563                 ;
2564     break;}
2565 case 168:
2566 #line 676 "xi-grammar.y"
2567
2568                   if (yyvsp[0].sc != 0) {
2569                     yyvsp[0].sc->con1 = new SdagConstruct(SIDENT, yyvsp[-2].strval);
2570                     if (yyvsp[-1].plist != 0)
2571                       yyvsp[0].sc->param = new ParamList(yyvsp[-1].plist);
2572                     else
2573                       yyvsp[0].sc->param = new ParamList(new Parameter(0, new BuiltinType("void")));
2574                   }
2575                   yyval.entry = new Entry(lineno, yyvsp[-3].intval,     0, yyvsp[-2].strval, yyvsp[-1].plist,  0, yyvsp[0].sc, 0, 0); 
2576                 ;
2577     break;}
2578 case 169:
2579 #line 687 "xi-grammar.y"
2580 {
2581                   int attribs = SACCEL;
2582                   const char* name = yyvsp[-6].strval;
2583                   ParamList* paramList = yyvsp[-5].plist;
2584                   ParamList* accelParamList = yyvsp[-4].plist;
2585                   XStr* codeBody = new XStr(yyvsp[-2].strval);
2586                   const char* callbackName = yyvsp[0].strval;
2587
2588                   yyval.entry = new Entry(lineno, attribs, new BuiltinType("void"), name, paramList,
2589                                  0, 0, 0, 0, 0
2590                                 );
2591                   yyval.entry->setAccelParam(accelParamList);
2592                   yyval.entry->setAccelCodeBody(codeBody);
2593                   yyval.entry->setAccelCallbackName(new XStr(callbackName));
2594                 ;
2595     break;}
2596 case 170:
2597 #line 705 "xi-grammar.y"
2598 { yyval.accelBlock = new AccelBlock(lineno, new XStr(yyvsp[-2].strval)); ;
2599     break;}
2600 case 171:
2601 #line 707 "xi-grammar.y"
2602 { yyval.accelBlock = new AccelBlock(lineno, NULL); ;
2603     break;}
2604 case 172:
2605 #line 711 "xi-grammar.y"
2606 { yyval.type = new BuiltinType("void"); ;
2607     break;}
2608 case 173:
2609 #line 713 "xi-grammar.y"
2610 { yyval.type = yyvsp[0].ptype; ;
2611     break;}
2612 case 174:
2613 #line 717 "xi-grammar.y"
2614 { yyval.intval = 0; ;
2615     break;}
2616 case 175:
2617 #line 719 "xi-grammar.y"
2618 { yyval.intval = yyvsp[-1].intval; ;
2619     break;}
2620 case 176:
2621 #line 723 "xi-grammar.y"
2622 { yyval.intval = yyvsp[0].intval; ;
2623     break;}
2624 case 177:
2625 #line 725 "xi-grammar.y"
2626 { yyval.intval = yyvsp[-2].intval | yyvsp[0].intval; ;
2627     break;}
2628 case 178:
2629 #line 729 "xi-grammar.y"
2630 { yyval.intval = STHREADED; ;
2631     break;}
2632 case 179:
2633 #line 731 "xi-grammar.y"
2634 { yyval.intval = SSYNC; ;
2635     break;}
2636 case 180:
2637 #line 733 "xi-grammar.y"
2638 { yyval.intval = SIGET; ;
2639     break;}
2640 case 181:
2641 #line 735 "xi-grammar.y"
2642 { yyval.intval = SLOCKED; ;
2643     break;}
2644 case 182:
2645 #line 737 "xi-grammar.y"
2646 { yyval.intval = SCREATEHERE; ;
2647     break;}
2648 case 183:
2649 #line 739 "xi-grammar.y"
2650 { yyval.intval = SCREATEHOME; ;
2651     break;}
2652 case 184:
2653 #line 741 "xi-grammar.y"
2654 { yyval.intval = SNOKEEP; ;
2655     break;}
2656 case 185:
2657 #line 743 "xi-grammar.y"
2658 { yyval.intval = SNOTRACE; ;
2659     break;}
2660 case 186:
2661 #line 745 "xi-grammar.y"
2662 { yyval.intval = SIMMEDIATE; ;
2663     break;}
2664 case 187:
2665 #line 747 "xi-grammar.y"
2666 { yyval.intval = SSKIPSCHED; ;
2667     break;}
2668 case 188:
2669 #line 749 "xi-grammar.y"
2670 { yyval.intval = SINLINE; ;
2671     break;}
2672 case 189:
2673 #line 751 "xi-grammar.y"
2674 { yyval.intval = SLOCAL; ;
2675     break;}
2676 case 190:
2677 #line 753 "xi-grammar.y"
2678 { yyval.intval = SPYTHON; ;
2679     break;}
2680 case 191:
2681 #line 755 "xi-grammar.y"
2682 { yyval.intval = SMEM; ;
2683     break;}
2684 case 192:
2685 #line 759 "xi-grammar.y"
2686 { yyval.val = new Value(yyvsp[0].strval); ;
2687     break;}
2688 case 193:
2689 #line 761 "xi-grammar.y"
2690 { yyval.val = new Value(yyvsp[0].strval); ;
2691     break;}
2692 case 194:
2693 #line 763 "xi-grammar.y"
2694 { yyval.val = new Value(yyvsp[0].strval); ;
2695     break;}
2696 case 195:
2697 #line 767 "xi-grammar.y"
2698 { yyval.strval = ""; ;
2699     break;}
2700 case 196:
2701 #line 769 "xi-grammar.y"
2702 { yyval.strval = yyvsp[0].strval; ;
2703     break;}
2704 case 197:
2705 #line 771 "xi-grammar.y"
2706 {  /*Returned only when in_bracket*/
2707                         char *tmp = new char[strlen(yyvsp[-2].strval)+strlen(yyvsp[0].strval)+3];
2708                         sprintf(tmp,"%s, %s", yyvsp[-2].strval, yyvsp[0].strval);
2709                         yyval.strval = tmp;
2710                 ;
2711     break;}
2712 case 198:
2713 #line 779 "xi-grammar.y"
2714 { yyval.strval = ""; ;
2715     break;}
2716 case 199:
2717 #line 781 "xi-grammar.y"
2718 { yyval.strval = yyvsp[0].strval; ;
2719     break;}
2720 case 200:
2721 #line 783 "xi-grammar.y"
2722 {  /*Returned only when in_bracket*/
2723                         char *tmp = new char[strlen(yyvsp[-4].strval)+strlen(yyvsp[-2].strval)+strlen(yyvsp[0].strval)+3];
2724                         sprintf(tmp,"%s[%s]%s", yyvsp[-4].strval, yyvsp[-2].strval, yyvsp[0].strval);
2725                         yyval.strval = tmp;
2726                 ;
2727     break;}
2728 case 201:
2729 #line 789 "xi-grammar.y"
2730 { /*Returned only when in_braces*/
2731                         char *tmp = new char[strlen(yyvsp[-4].strval)+strlen(yyvsp[-2].strval)+strlen(yyvsp[0].strval)+3];
2732                         sprintf(tmp,"%s{%s}%s", yyvsp[-4].strval, yyvsp[-2].strval, yyvsp[0].strval);
2733                         yyval.strval = tmp;
2734                 ;
2735     break;}
2736 case 202:
2737 #line 795 "xi-grammar.y"
2738 { /*Returned only when in_braces*/
2739                         char *tmp = new char[strlen(yyvsp[-4].strval)+strlen(yyvsp[-2].strval)+strlen(yyvsp[0].strval)+3];
2740                         sprintf(tmp,"%s(%s)%s", yyvsp[-4].strval, yyvsp[-2].strval, yyvsp[0].strval);
2741                         yyval.strval = tmp;
2742                 ;
2743     break;}
2744 case 203:
2745 #line 801 "xi-grammar.y"
2746 { /*Returned only when in_braces*/
2747                         char *tmp = new char[strlen(yyvsp[-2].strval)+strlen(yyvsp[0].strval)+3];
2748                         sprintf(tmp,"(%s)%s", yyvsp[-2].strval, yyvsp[0].strval);
2749                         yyval.strval = tmp;
2750                 ;
2751     break;}
2752 case 204:
2753 #line 809 "xi-grammar.y"
2754 {  /*Start grabbing CPROGRAM segments*/
2755                         in_bracket=1;
2756                         yyval.pname = new Parameter(lineno, yyvsp[-2].type,yyvsp[-1].strval);
2757                 ;
2758     break;}
2759 case 205:
2760 #line 816 "xi-grammar.y"
2761
2762                    /*Start grabbing CPROGRAM segments*/
2763                         in_braces=1;
2764                         yyval.intval = 0;
2765                 ;
2766     break;}
2767 case 206:
2768 #line 824 "xi-grammar.y"
2769
2770                         in_braces=0;
2771                         yyval.intval = 0;
2772                 ;
2773     break;}
2774 case 207:
2775 #line 831 "xi-grammar.y"
2776 { yyval.pname = new Parameter(lineno, yyvsp[0].type);;
2777     break;}
2778 case 208:
2779 #line 833 "xi-grammar.y"
2780 { yyval.pname = new Parameter(lineno, yyvsp[-2].type,yyvsp[-1].strval); yyval.pname->setConditional(yyvsp[0].intval); ;
2781     break;}
2782 case 209:
2783 #line 835 "xi-grammar.y"
2784 { yyval.pname = new Parameter(lineno, yyvsp[-3].type,yyvsp[-2].strval,0,yyvsp[0].val);;
2785     break;}
2786 case 210:
2787 #line 837 "xi-grammar.y"
2788 { /*Stop grabbing CPROGRAM segments*/
2789                         in_bracket=0;
2790                         yyval.pname = new Parameter(lineno, yyvsp[-2].pname->getType(), yyvsp[-2].pname->getName() ,yyvsp[-1].strval);
2791                 ;
2792     break;}
2793 case 211:
2794 #line 843 "xi-grammar.y"
2795 { yyval.intval = Parameter::ACCEL_BUFFER_TYPE_READONLY; ;
2796     break;}
2797 case 212:
2798 #line 844 "xi-grammar.y"
2799 { yyval.intval = Parameter::ACCEL_BUFFER_TYPE_READWRITE; ;
2800     break;}
2801 case 213:
2802 #line 845 "xi-grammar.y"
2803 { yyval.intval = Parameter::ACCEL_BUFFER_TYPE_WRITEONLY; ;
2804     break;}
2805 case 214:
2806 #line 848 "xi-grammar.y"
2807 { yyval.xstrptr = new XStr(yyvsp[0].strval); ;
2808     break;}
2809 case 215:
2810 #line 849 "xi-grammar.y"
2811 { yyval.xstrptr = new XStr(""); *(yyval.xstrptr) << *(yyvsp[-3].xstrptr) << "->" << yyvsp[0].strval; ;
2812     break;}
2813 case 216:
2814 #line 850 "xi-grammar.y"
2815 { yyval.xstrptr = new XStr(""); *(yyval.xstrptr) << *(yyvsp[-2].xstrptr) << "." << yyvsp[0].strval; ;
2816     break;}
2817 case 217:
2818 #line 852 "xi-grammar.y"
2819 {
2820                   yyval.xstrptr = new XStr("");
2821                   *(yyval.xstrptr) << *(yyvsp[-3].xstrptr) << "[" << *(yyvsp[-1].xstrptr) << "]";
2822                   delete yyvsp[-3].xstrptr;
2823                   delete yyvsp[-1].xstrptr;
2824                 ;
2825     break;}
2826 case 218:
2827 #line 859 "xi-grammar.y"
2828 {
2829                   yyval.xstrptr = new XStr("");
2830                   *(yyval.xstrptr) << *(yyvsp[-3].xstrptr) << "[" << yyvsp[-1].strval << "]";
2831                   delete yyvsp[-3].xstrptr;
2832                 ;
2833     break;}
2834 case 219:
2835 #line 865 "xi-grammar.y"
2836 {
2837                   yyval.xstrptr = new XStr("");
2838                   *(yyval.xstrptr) << *(yyvsp[-3].xstrptr) << "(" << *(yyvsp[-1].xstrptr) << ")";
2839                   delete yyvsp[-3].xstrptr;
2840                   delete yyvsp[-1].xstrptr;
2841                 ;
2842     break;}
2843 case 220:
2844 #line 874 "xi-grammar.y"
2845 {
2846                   in_bracket = 0;
2847                   yyval.pname = new Parameter(lineno, yyvsp[-2].pname->getType(), yyvsp[-2].pname->getName(), yyvsp[-1].strval);
2848                 ;
2849     break;}
2850 case 221:
2851 #line 881 "xi-grammar.y"
2852 {
2853                   yyval.pname = new Parameter(lineno, yyvsp[-4].type, yyvsp[-3].strval);
2854                   yyval.pname->setAccelInstName(yyvsp[-1].xstrptr);
2855                   yyval.pname->setAccelBufferType(yyvsp[-6].intval);
2856                 ;
2857     break;}
2858 case 222:
2859 #line 887 "xi-grammar.y"
2860 {
2861                   yyval.pname = new Parameter(lineno, yyvsp[-4].type, yyvsp[-3].strval);
2862                   yyval.pname->setAccelInstName(yyvsp[-1].xstrptr);
2863                   yyval.pname->setAccelBufferType(Parameter::ACCEL_BUFFER_TYPE_READWRITE);
2864                 ;
2865     break;}
2866 case 223:
2867 #line 893 "xi-grammar.y"
2868 {
2869                   yyval.pname = yyvsp[-3].pname;
2870                   yyval.pname->setAccelInstName(yyvsp[-1].xstrptr);
2871                   yyval.pname->setAccelBufferType(yyvsp[-5].intval);
2872                 ;
2873     break;}
2874 case 224:
2875 #line 901 "xi-grammar.y"
2876 { yyval.plist = new ParamList(yyvsp[0].pname); ;
2877     break;}
2878 case 225:
2879 #line 903 "xi-grammar.y"
2880 { yyval.plist = new ParamList(yyvsp[-2].pname,yyvsp[0].plist); ;
2881     break;}
2882 case 226:
2883 #line 907 "xi-grammar.y"
2884 { yyval.plist = new ParamList(yyvsp[0].pname); ;
2885     break;}
2886 case 227:
2887 #line 909 "xi-grammar.y"
2888 { yyval.plist = new ParamList(yyvsp[-2].pname,yyvsp[0].plist); ;
2889     break;}
2890 case 228:
2891 #line 913 "xi-grammar.y"
2892 { yyval.plist = yyvsp[-1].plist; ;
2893     break;}
2894 case 229:
2895 #line 915 "xi-grammar.y"
2896 { yyval.plist = 0; ;
2897     break;}
2898 case 230:
2899 #line 919 "xi-grammar.y"
2900 { yyval.plist = yyvsp[-1].plist; ;
2901     break;}
2902 case 231:
2903 #line 921 "xi-grammar.y"
2904 { yyval.plist = 0; ;
2905     break;}
2906 case 232:
2907 #line 925 "xi-grammar.y"
2908 { yyval.val = 0; ;
2909     break;}
2910 case 233:
2911 #line 927 "xi-grammar.y"
2912 { yyval.val = new Value(yyvsp[0].strval); ;
2913     break;}
2914 case 234:
2915 #line 931 "xi-grammar.y"
2916 { yyval.sc = 0; ;
2917     break;}
2918 case 235:
2919 #line 933 "xi-grammar.y"
2920 { yyval.sc = new SdagConstruct(SSDAGENTRY, yyvsp[0].sc); ;
2921     break;}
2922 case 236:
2923 #line 935 "xi-grammar.y"
2924 { yyval.sc = new SdagConstruct(SSDAGENTRY, yyvsp[-1].sc); ;
2925     break;}
2926 case 237:
2927 #line 939 "xi-grammar.y"
2928 { yyval.sc = new SdagConstruct(SSLIST, yyvsp[0].sc); ;
2929     break;}
2930 case 238:
2931 #line 941 "xi-grammar.y"
2932 { yyval.sc = new SdagConstruct(SSLIST, yyvsp[-1].sc, yyvsp[0].sc);  ;
2933     break;}
2934 case 239:
2935 #line 945 "xi-grammar.y"
2936 { yyval.sc = new SdagConstruct(SOLIST, yyvsp[0].sc); ;
2937     break;}
2938 case 240:
2939 #line 947 "xi-grammar.y"
2940 { yyval.sc = new SdagConstruct(SOLIST, yyvsp[-1].sc, yyvsp[0].sc); ;
2941     break;}
2942 case 241:
2943 #line 951 "xi-grammar.y"
2944 { yyval.sc = 0; ;
2945     break;}
2946 case 242:
2947 #line 953 "xi-grammar.y"
2948 { yyval.sc = yyvsp[-1].sc; ;
2949     break;}
2950 case 243:
2951 #line 957 "xi-grammar.y"
2952 { yyval.sc = new SdagConstruct(SPUBLISHES, new SdagConstruct(SIDENT, yyvsp[0].strval)); ;
2953     break;}
2954 case 244:
2955 #line 959 "xi-grammar.y"
2956 { yyval.sc = new SdagConstruct(SPUBLISHES, new SdagConstruct(SIDENT, yyvsp[-2].strval), yyvsp[0].sc);  ;
2957     break;}
2958 case 245:
2959 #line 963 "xi-grammar.y"
2960 { yyval.strval = yyvsp[0].strval; ;
2961     break;}
2962 case 246:
2963 #line 965 "xi-grammar.y"
2964 { yyval.strval = 0; ;
2965     break;}
2966 case 247:
2967 #line 969 "xi-grammar.y"
2968 {
2969                    char *tmp = strdup(yyvsp[-2].strval);
2970                    RemoveSdagComments(tmp);
2971                    yyval.sc = new SdagConstruct(SATOMIC, new XStr(tmp), yyvsp[0].sc, 0,0,0,0, 0 );
2972                    free(tmp);
2973
2974                    if (yyvsp[-4].strval)
2975                    {
2976                        tmp = strdup(yyvsp[-4].strval);
2977                        tmp[strlen(tmp)-1]=0;
2978                        yyval.sc->traceName = new XStr(tmp+1);
2979                        free(tmp);
2980                    }
2981                  ;
2982     break;}
2983 case 248:
2984 #line 984 "xi-grammar.y"
2985 {  
2986                    in_braces = 0;
2987                    if ((yyvsp[-4].plist->isVoid() == 0) && (yyvsp[-4].plist->isMessage() == 0))
2988                    {
2989                       connectEntries->append(new Entry(0, 0, new BuiltinType("void"), yyvsp[-5].strval, 
2990                                         new ParamList(new Parameter(lineno, new PtrType( 
2991                                         new NamedType("CkMarshallMsg")), "_msg")), 0, 0, 0, 1, yyvsp[-4].plist));
2992                    }
2993                    else  {
2994                       connectEntries->append(new Entry(0, 0, new BuiltinType("void"), yyvsp[-5].strval, yyvsp[-4].plist, 0, 0, 0, 1, yyvsp[-4].plist));
2995                    }
2996                    yyval.sc = new SdagConstruct(SCONNECT, yyvsp[-5].strval, yyvsp[-1].strval, yyvsp[-4].plist);
2997                 ;
2998     break;}
2999 case 249:
3000 #line 998 "xi-grammar.y"
3001 { yyval.sc = new SdagConstruct(SWHEN, 0, 0,0,0,0,0,yyvsp[-2].entrylist); ;
3002     break;}
3003 case 250:
3004 #line 1000 "xi-grammar.y"
3005 { yyval.sc = new SdagConstruct(SWHEN, 0, 0, 0,0,0, yyvsp[0].sc, yyvsp[-1].entrylist); ;
3006     break;}
3007 case 251:
3008 #line 1002 "xi-grammar.y"
3009 { yyval.sc = new SdagConstruct(SWHEN, 0, 0, 0,0,0, yyvsp[-1].sc, yyvsp[-3].entrylist); ;
3010     break;}
3011 case 252:
3012 #line 1004 "xi-grammar.y"
3013 { yyval.sc = new SdagConstruct(SOVERLAP,0, 0,0,0,0,yyvsp[-1].sc, 0); ;
3014     break;}
3015 case 253:
3016 #line 1006 "xi-grammar.y"
3017 { yyval.sc = new SdagConstruct(SFOR, 0, new SdagConstruct(SINT_EXPR, yyvsp[-8].strval), new SdagConstruct(SINT_EXPR, yyvsp[-6].strval),
3018                              new SdagConstruct(SINT_EXPR, yyvsp[-4].strval), 0, yyvsp[-1].sc, 0); ;
3019     break;}
3020 case 254:
3021 #line 1009 "xi-grammar.y"
3022 { yyval.sc = new SdagConstruct(SFOR, 0, new SdagConstruct(SINT_EXPR, yyvsp[-6].strval), new SdagConstruct(SINT_EXPR, yyvsp[-4].strval), 
3023                          new SdagConstruct(SINT_EXPR, yyvsp[-2].strval), 0, yyvsp[0].sc, 0); ;
3024     break;}
3025 case 255:
3026 #line 1012 "xi-grammar.y"
3027 { yyval.sc = new SdagConstruct(SFORALL, 0, new SdagConstruct(SIDENT, yyvsp[-9].strval), new SdagConstruct(SINT_EXPR, yyvsp[-6].strval), 
3028                              new SdagConstruct(SINT_EXPR, yyvsp[-4].strval), new SdagConstruct(SINT_EXPR, yyvsp[-2].strval), yyvsp[0].sc, 0); ;
3029     break;}
3030 case 256:
3031 #line 1015 "xi-grammar.y"
3032 { yyval.sc = new SdagConstruct(SFORALL, 0, new SdagConstruct(SIDENT, yyvsp[-11].strval), new SdagConstruct(SINT_EXPR, yyvsp[-8].strval), 
3033                                  new SdagConstruct(SINT_EXPR, yyvsp[-6].strval), new SdagConstruct(SINT_EXPR, yyvsp[-4].strval), yyvsp[-1].sc, 0); ;
3034     break;}
3035 case 257:
3036 #line 1018 "xi-grammar.y"
3037 { yyval.sc = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, yyvsp[-3].strval), yyvsp[0].sc,0,0,yyvsp[-1].sc,0); ;
3038     break;}
3039 case 258:
3040 #line 1020 "xi-grammar.y"
3041 { yyval.sc = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, yyvsp[-5].strval), yyvsp[0].sc,0,0,yyvsp[-2].sc,0); ;
3042     break;}
3043 case 259:
3044 #line 1022 "xi-grammar.y"
3045 { yyval.sc = new SdagConstruct(SIF, 0, new SdagConstruct(SINT_EXPR, yyvsp[-2].strval), 0,0,0,yyvsp[0].sc,0); ;
3046     break;}
3047 case 260:
3048 #line 1024 "xi-grammar.y"
3049 { yyval.sc = new SdagConstruct(SWHILE, 0, new SdagConstruct(SINT_EXPR, yyvsp[-4].strval), 0,0,0,yyvsp[-1].sc,0); ;
3050     break;}
3051 case 261:
3052 #line 1026 "xi-grammar.y"
3053 { yyval.sc = yyvsp[-1].sc; ;
3054     break;}
3055 case 262:
3056 #line 1028 "xi-grammar.y"
3057 {
3058                      char *tmp = strdup(yyvsp[-1].strval);
3059                      RemoveSdagComments(tmp);
3060                      yyval.sc = new SdagConstruct(SATOMIC, new XStr(tmp), NULL, 0,0,0,0, 0 );
3061                      free(tmp);
3062                  ;
3063     break;}
3064 case 263:
3065 #line 1037 "xi-grammar.y"
3066 { yyval.sc = 0; ;
3067     break;}
3068 case 264:
3069 #line 1039 "xi-grammar.y"
3070 { yyval.sc = new SdagConstruct(SELSE, 0,0,0,0,0, yyvsp[0].sc,0); ;
3071     break;}
3072 case 265:
3073 #line 1041 "xi-grammar.y"
3074 { yyval.sc = new SdagConstruct(SELSE, 0,0,0,0,0, yyvsp[-1].sc,0); ;
3075     break;}
3076 case 266:
3077 #line 1044 "xi-grammar.y"
3078 { yyval.sc = new SdagConstruct(SFORWARD, new SdagConstruct(SIDENT, yyvsp[0].strval)); ;
3079     break;}
3080 case 267:
3081 #line 1046 "xi-grammar.y"
3082 { yyval.sc = new SdagConstruct(SFORWARD, new SdagConstruct(SIDENT, yyvsp[-2].strval), yyvsp[0].sc);  ;
3083     break;}
3084 case 268:
3085 #line 1050 "xi-grammar.y"
3086 { in_int_expr = 0; yyval.intval = 0; ;
3087     break;}
3088 case 269:
3089 #line 1054 "xi-grammar.y"
3090 { in_int_expr = 1; yyval.intval = 0; ;
3091     break;}
3092 case 270:
3093 #line 1058 "xi-grammar.y"
3094
3095                   if (yyvsp[0].plist != 0)
3096                      yyval.entry = new Entry(lineno, 0, 0, yyvsp[-1].strval, yyvsp[0].plist, 0, 0, 0, 0); 
3097                   else
3098                      yyval.entry = new Entry(lineno, 0, 0, yyvsp[-1].strval, 
3099                                 new ParamList(new Parameter(0, new BuiltinType("void"))), 0, 0, 0, 0); 
3100                 ;
3101     break;}
3102 case 271:
3103 #line 1066 "xi-grammar.y"
3104 { if (yyvsp[0].plist != 0)
3105                     yyval.entry = new Entry(lineno, 0, 0, yyvsp[-4].strval, yyvsp[0].plist, 0, 0, yyvsp[-2].strval, 0); 
3106                   else
3107                     yyval.entry = new Entry(lineno, 0, 0, yyvsp[-4].strval, new ParamList(new Parameter(0, new BuiltinType("void"))), 0, 0, yyvsp[-2].strval, 0); 
3108                 ;
3109     break;}
3110 case 272:
3111 #line 1074 "xi-grammar.y"
3112 { yyval.entrylist = new EntryList(yyvsp[0].entry); ;
3113     break;}
3114 case 273:
3115 #line 1076 "xi-grammar.y"
3116 { yyval.entrylist = new EntryList(yyvsp[-2].entry,yyvsp[0].entrylist); ;
3117     break;}
3118 case 274:
3119 #line 1080 "xi-grammar.y"
3120 { in_bracket=1; ;
3121     break;}
3122 case 275:
3123 #line 1083 "xi-grammar.y"
3124 { in_bracket=0; ;
3125     break;}
3126 case 276:
3127 #line 1087 "xi-grammar.y"
3128 { if (!macroDefined(yyvsp[0].strval, 1)) in_comment = 1; ;
3129     break;}
3130 case 277:
3131 #line 1091 "xi-grammar.y"
3132 { if (!macroDefined(yyvsp[0].strval, 0)) in_comment = 1; ;
3133     break;}
3134 }
3135
3136 #line 839 "/usr/share/bison++/bison.cc"
3137    /* the action file gets copied in in place of this dollarsign  */
3138   yyvsp -= yylen;
3139   yyssp -= yylen;
3140 #ifdef YY_parse_LSP_NEEDED
3141   yylsp -= yylen;
3142 #endif
3143
3144 #if YY_parse_DEBUG != 0
3145   if (YY_parse_DEBUG_FLAG)
3146     {
3147       short *ssp1 = yyss - 1;
3148       fprintf (stderr, "state stack now");
3149       while (ssp1 != yyssp)
3150         fprintf (stderr, " %d", *++ssp1);
3151       fprintf (stderr, "\n");
3152     }
3153 #endif
3154
3155   *++yyvsp = yyval;
3156
3157 #ifdef YY_parse_LSP_NEEDED
3158   yylsp++;
3159   if (yylen == 0)
3160     {
3161       yylsp->first_line = YY_parse_LLOC.first_line;
3162       yylsp->first_column = YY_parse_LLOC.first_column;
3163       yylsp->last_line = (yylsp-1)->last_line;
3164       yylsp->last_column = (yylsp-1)->last_column;
3165       yylsp->text = 0;
3166     }
3167   else
3168     {
3169       yylsp->last_line = (yylsp+yylen-1)->last_line;
3170       yylsp->last_column = (yylsp+yylen-1)->last_column;
3171     }
3172 #endif
3173
3174   /* Now "shift" the result of the reduction.
3175      Determine what state that goes to,
3176      based on the state we popped back to
3177      and the rule number reduced by.  */
3178
3179   yyn = yyr1[yyn];
3180
3181   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3182   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3183     yystate = yytable[yystate];
3184   else
3185     yystate = yydefgoto[yyn - YYNTBASE];
3186
3187   YYGOTO(yynewstate);
3188
3189 YYLABEL(yyerrlab)   /* here on detecting error */
3190
3191   if (! yyerrstatus)
3192     /* If not already recovering from an error, report this error.  */
3193     {
3194       ++YY_parse_NERRS;
3195
3196 #ifdef YY_parse_ERROR_VERBOSE
3197       yyn = yypact[yystate];
3198
3199       if (yyn > YYFLAG && yyn < YYLAST)
3200         {
3201           int size = 0;
3202           char *msg;
3203           int x, count;
3204
3205           count = 0;
3206           /* Start X at -yyn if nec to avoid negative indexes in yycheck.  */
3207           for (x = (yyn < 0 ? -yyn : 0);
3208                x < (sizeof(yytname) / sizeof(char *)); x++)
3209             if (yycheck[x + yyn] == x)
3210               size += strlen(yytname[x]) + 15, count++;
3211           msg = (char *) malloc(size + 15);
3212           if (msg != 0)
3213             {
3214               strcpy(msg, "parse error");
3215
3216               if (count < 5)
3217                 {
3218                   count = 0;
3219                   for (x = (yyn < 0 ? -yyn : 0);
3220                        x < (sizeof(yytname) / sizeof(char *)); x++)
3221                     if (yycheck[x + yyn] == x)
3222                       {
3223                         strcat(msg, count == 0 ? ", expecting `" : " or `");
3224                         strcat(msg, yytname[x]);
3225                         strcat(msg, "'");
3226                         count++;
3227                       }
3228                 }
3229               YY_parse_ERROR(msg);
3230               free(msg);
3231             }
3232           else
3233             YY_parse_ERROR ("parse error; also virtual memory exceeded");
3234         }
3235       else
3236 #endif /* YY_parse_ERROR_VERBOSE */
3237         YY_parse_ERROR("parse error");
3238     }
3239
3240   YYGOTO(yyerrlab1);
3241 YYLABEL(yyerrlab1)   /* here on error raised explicitly by an action */
3242
3243   if (yyerrstatus == 3)
3244     {
3245       /* if just tried and failed to reuse lookahead token after an error, discard it.  */
3246
3247       /* return failure if at end of input */
3248       if (YY_parse_CHAR == YYEOF)
3249         YYABORT;
3250
3251 #if YY_parse_DEBUG != 0
3252       if (YY_parse_DEBUG_FLAG)
3253         fprintf(stderr, "Discarding token %d (%s).\n", YY_parse_CHAR, yytname[yychar1]);
3254 #endif
3255
3256       YY_parse_CHAR = YYEMPTY;
3257     }
3258
3259   /* Else will try to reuse lookahead token
3260      after shifting the error token.  */
3261
3262   yyerrstatus = 3;              /* Each real token shifted decrements this */
3263
3264   YYGOTO(yyerrhandle);
3265
3266 YYLABEL(yyerrdefault)  /* current state does not do anything special for the error token. */
3267
3268 #if 0
3269   /* This is wrong; only states that explicitly want error tokens
3270      should shift them.  */
3271   yyn = yydefact[yystate];  /* If its default is to accept any token, ok.  Otherwise pop it.*/
3272   if (yyn) YYGOTO(yydefault);
3273 #endif
3274
3275 YYLABEL(yyerrpop)   /* pop the current state because it cannot handle the error token */
3276
3277   if (yyssp == yyss) YYABORT;
3278   yyvsp--;
3279   yystate = *--yyssp;
3280 #ifdef YY_parse_LSP_NEEDED
3281   yylsp--;
3282 #endif
3283
3284 #if YY_parse_DEBUG != 0
3285   if (YY_parse_DEBUG_FLAG)
3286     {
3287       short *ssp1 = yyss - 1;
3288       fprintf (stderr, "Error: state stack now");
3289       while (ssp1 != yyssp)
3290         fprintf (stderr, " %d", *++ssp1);
3291       fprintf (stderr, "\n");
3292     }
3293 #endif
3294
3295 YYLABEL(yyerrhandle)
3296
3297   yyn = yypact[yystate];
3298   if (yyn == YYFLAG)
3299     YYGOTO(yyerrdefault);
3300
3301   yyn += YYTERROR;
3302   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3303     YYGOTO(yyerrdefault);
3304
3305   yyn = yytable[yyn];
3306   if (yyn < 0)
3307     {
3308       if (yyn == YYFLAG)
3309         YYGOTO(yyerrpop);
3310       yyn = -yyn;
3311       YYGOTO(yyreduce);
3312     }
3313   else if (yyn == 0)
3314     YYGOTO(yyerrpop);
3315
3316   if (yyn == YYFINAL)
3317     YYACCEPT;
3318
3319 #if YY_parse_DEBUG != 0
3320   if (YY_parse_DEBUG_FLAG)
3321     fprintf(stderr, "Shifting error token, ");
3322 #endif
3323
3324   *++yyvsp = YY_parse_LVAL;
3325 #ifdef YY_parse_LSP_NEEDED
3326   *++yylsp = YY_parse_LLOC;
3327 #endif
3328
3329   yystate = yyn;
3330   YYGOTO(yynewstate);
3331 /* end loop, in which YYGOTO may be used. */
3332   YYENDGOTO
3333 }
3334
3335 /* END */
3336
3337  #line 1038 "/usr/share/bison++/bison.cc"
3338 #line 1094 "xi-grammar.y"
3339
3340 void yyerror(const char *mesg)
3341 {
3342     std::cout << cur_file<<":"<<lineno<<": Charmxi syntax error> "
3343               << mesg << std::endl;
3344 }