|
|
1.1 root 1:
2: # line 24 "gram.y"
3: #include "cfront.h"
4: #include "size.h"
5: #include "template.h"
6: #include <string.h>
7: // include tqueue.h after YYSTYPE is defined ...
8:
9:
10: struct parstate {
11: Ptype intypedef;
12: int defercheck;
13: Pname intag;
14: } pstate[BLMAX];
15: static int px;
16: static void
17: SAVE_STATE()
18: {
19: //error('d',"save_state: in_typedef%t in_tag%n defer_check %d",in_typedef,in_tag,defer_check);
20: if ( px >= BLMAX ) error('i',"maximum scope depth exceeded");
21: pstate[px].intypedef = in_typedef;
22: in_typedef = 0;
23: pstate[px].defercheck = defer_check;
24: defer_check = 0;
25: pstate[px].intag = in_tag;
26: in_tag = 0;
27: ++px;
28: }
29: static void
30: RESTORE_STATE()
31: {
32: //error('d',"restore_state: in_typedef%t in_tag%n defer_check %d",in_typedef,in_tag,defer_check);
33: if ( --px < 0 ) error('i',"scope stack underflow");
34: in_typedef = pstate[px].intypedef;
35: defer_check = pstate[px].defercheck;
36: in_tag = pstate[px].intag;
37: //error('d'," -> in_typedef%t in_tag%n defer_check %d",in_typedef,in_tag,defer_check);
38: }
39:
40: #define copy_if_need_be(s) ((templp->in_progress || templp->parameters_in_progress) ? strdup(s) : s)
41: #define YYMAXDEPTH 600
42:
43: #ifdef DBG
44: #ifndef YYDEBUG
45: #define YYDEBUG 1
46: #endif
47: #endif
48:
49: static init_seen = 0;
50: static cdi = 0;
51: static Pnlist cd = 0, cd_vec[BLMAX];
52: static char stmt_seen = 0, stmt_vec[BLMAX];
53:
54: //local class
55: static Plist tn_vec[BLMAX], lcl_tn_vec[BLMAX], lcl_blk_vec[BLMAX];
56: extern void local_restore();
57: extern void local_name();
58:
59: //nested class
60: static Plist nested_tn_vec[BLMAX], nested_type_vec[BLMAX];
61: extern void nested_restore();
62:
63: static Pname err_name = 0;
64:
65: // fcts put into norm2.c just to get them out of gram.y
66: void sig_name(Pname);
67: Ptype tok_to_type(TOK);
68: void memptrdcl(Pname, Pname, Ptype, Pname);
69:
70: static Pptr doptr(TOK p, TOK t)
71: {
72: Pptr r = new ptr(p,0);
73: switch (t) {
74: case CONST:
75: r->b_const = 1;
76: // if (p == RPTR) error('w',"redundant `const' after &");
77: break;
78: case VOLATILE:
79: error('w',"\"volatile\" not implemented (ignored)");
80: break;
81: default:
82: error("syntax error: *%k",t);
83: }
84: return r;
85: }
86:
87: static Pbcl dobase(TOK pr, Pname n, TOK v = 0)
88: {
89: Pbcl b = new basecl(0,0);
90:
91: if (pr == PROTECTED) {
92: pr = PUBLIC;
93: error("protectedBC");
94: }
95: b->ppp = pr; // save protection indicator
96:
97: if (n) {
98: if (n->base != TNAME) {
99: error("BN%n not aTN",n);
100: return 0;
101: }
102:
103: Pbase bt = Pbase(n->tp);
104: while (bt->base == TYPE) bt = Pbase(bt->b_name->tp);
105:
106: if (bt->base != COBJ) {
107: error("BN%n not aCN",n);
108: return 0;
109: }
110:
111: if (v) {
112: if (v != VIRTUAL) error("syntax error:%k inBCD",v);
113: b->base = VIRTUAL;
114: }
115: else
116: b->base = NAME;
117:
118: b->bclass = Pclass(bt->b_name->tp);
119: }
120:
121: return b;
122: }
123:
124:
125: #define Ndata(a,b) b->normalize(Pbase(a),0,0)
126: #define Ncast(a,b) b->normalize(Pbase(a),0,1)
127: #define Nfct(a,b,c) b->normalize(Pbase(a),Pblock(c),0)
128: #define Ncopy(n) (n->base==TNAME)?new name(n->string):n
129:
130: #define Finit(p) Pfct(p)->f_init
131: #define Fargdcl(p,q,r) Pfct(p)->argdcl(q,r)
132: #define Freturns(p) Pfct(p)->returns
133: #define Vtype(v) Pvec(v)->typ
134: #define Ptyp(p) Pptr(p)->typ
135:
136: /* avoid redefinitions */
137: #undef EOFTOK
138: #undef ASM
139: #undef BREAK
140: #undef CASE
141: #undef CONTINUE
142: #undef DEFAULT
143: #undef DELETE
144: #undef DO
145: #undef ELSE
146: #undef ENUM
147: #undef FOR
148: #undef FORTRAN
149: #undef FRIEND
150: #undef GOTO
151: #undef IF
152: #undef NEW
153: #undef OPERATOR
154: #undef RETURN
155: #undef SIZEOF
156: #undef SWITCH
157: #undef THIS
158: #undef WHILE
159: #undef LP
160: #undef RP
161: #undef LB
162: #undef RB
163: #undef REF
164: #undef DOT
165: #undef NOT
166: #undef COMPL
167: #undef MUL
168: #undef AND
169: #undef PLUS
170: #undef MINUS
171: #undef ER
172: #undef OR
173: #undef ANDAND
174: #undef OROR
175: #undef QUEST
176: #undef COLON
177: #undef ASSIGN
178: #undef CM
179: #undef SM
180: #undef LC
181: #undef RC
182: #undef ID
183: #undef STRING
184: #undef ICON
185: #undef FCON
186: #undef CCON
187: #undef ZERO
188: #undef ASOP
189: #undef RELOP
190: #undef EQUOP
191: #undef DIVOP
192: #undef SHIFTOP
193: #undef ICOP
194: #undef TYPE
195: #undef TNAME
196: #undef EMPTY
197: #undef NO_ID
198: #undef NO_EXPR
199: #undef FDEF
200: #undef ELLIPSIS
201: #undef AGGR
202: #undef MEM
203: #undef MEMPTR
204: #undef PR
205: #undef TSCOPE
206: #undef DECL_MARKER
207: #undef REFMUL
208: #undef LDOUBLE
209: #undef LINKAGE
210: #undef LOCAL
211: #undef TEMPLATE
212:
213: #undef XVIRT
214: #undef XNLIST
215: #undef XILINE
216: #undef XIA
217: #undef STATEMENT
218: #undef EXPRESSION
219: #undef SM_PARAM
220: #undef TEMPLATE_TEST
221: #undef PTNAME
222: #undef NEW_INIT_KLUDGE
223:
224: # line 246 "gram.y"
225: typedef union {
226: char* s;
227: TOK t;
228: int i;
229: loc l;
230: Pname pn;
231: Ptype pt;
232: Pexpr pe;
233: Pstmt ps;
234: Pbase pb;
235: Pnlist nl;
236: Pslist sl;
237: Pelist el;
238: Pbcl pbc;
239: Pptr pp;
240: PP p; // fudge: pointer to all class node objects
241: Plist pl;
242: toknode* q; // token queue
243: } YYSTYPE;
244:
245: # line 266 "gram.y"
246: #include "tqueue.h"
247: extern YYSTYPE yylval, yyval;
248: extern int yyparse();
249:
250: // in_typedef should allow for nested in_typedef
251: extern int declTag; // !1: inline, virtual mod permitted
252: int in_sizeof = 0;
253: Ptype in_typedef = 0; // catch redefinition of TNAME
254: Pname in_tag = 0; // handle complex typedefs: int (*)()
255: extern int defer_check; // redefinition typedef check delay
256: Pname curr_scope;
257:
258: extern int must_be_id; // !0, TNAME => ID, i.e., int X
259: int DECL_TYPE = 0; // lalex() wants this set for global x(*fp)()
260: int in_arg_list=0; // !0 when parsing argument list
261: static int in_binit_list=0;
262: int in_class_decl=0; // !0 when processing class definition
263: int parsing_class_members=0; // !0 when parsing class def but not member function body
264: int in_mem_fct=0; // !0 when parsing member function definition
265:
266: #define yylex lalex
267: #define NEXTTOK() ( (yychar==-1) ? (yychar=yylex(),yychar) : yychar )
268: #define EXPECT_ID() must_be_id = 1
269: #define NOT_EXPECT_ID() must_be_id = 0
270:
271: Pname syn()
272: {
273: ll:
274: switch (yyparse()) {
275: case 0: return 0; // EOF
276: case 1: goto ll; // no action needed
277: default: return yyval.pn;
278: }
279: }
280:
281: # define EOFTOK 0
282: # define ASM 1
283: # define AUTO 2
284: # define BREAK 3
285: # define CASE 4
286: # define CONTINUE 7
287: # define DEFAULT 8
288: # define DELETE 9
289: # define DO 10
290: # define ELSE 12
291: # define ENUM 13
292: # define FOR 16
293: # define FORTRAN 17
294: # define FRIEND 18
295: # define GOTO 19
296: # define IF 20
297: # define NEW 23
298: # define OPERATOR 24
299: # define RETURN 28
300: # define SIZEOF 30
301: # define SWITCH 33
302: # define THIS 34
303: # define WHILE 39
304: # define LP 40
305: # define RP 41
306: # define LB 42
307: # define RB 43
308: # define REF 44
309: # define DOT 45
310: # define NOT 46
311: # define COMPL 47
312: # define MUL 50
313: # define AND 52
314: # define PLUS 54
315: # define MINUS 55
316: # define LT 58
317: # define GT 60
318: # define ER 64
319: # define OR 65
320: # define ANDAND 66
321: # define OROR 67
322: # define QUEST 68
323: # define COLON 69
324: # define ASSIGN 70
325: # define CM 71
326: # define SM 72
327: # define LC 73
328: # define RC 74
329: # define ID 80
330: # define STRING 81
331: # define ICON 82
332: # define FCON 83
333: # define CCON 84
334: # define NAME 85
335: # define ZERO 86
336: # define ASOP 90
337: # define RELOP 91
338: # define EQUOP 92
339: # define DIVOP 93
340: # define SHIFTOP 94
341: # define ICOP 95
342: # define TYPE 97
343: # define TNAME 123
344: # define EMPTY 124
345: # define NO_ID 125
346: # define NO_EXPR 126
347: # define FDEF 127
348: # define ELLIPSIS 155
349: # define AGGR 156
350: # define MEM 160
351: # define MEMPTR 173
352: # define PR 175
353: # define TSCOPE 178
354: # define DECL_MARKER 179
355: # define REFMUL 180
356: # define LDOUBLE 181
357: # define LINKAGE 182
358: # define LOCAL 183
359: # define TEMPLATE 185
360: # define XVIRT 200
361: # define XNLIST 201
362: # define XILINE 202
363: # define XIA 203
364: # define STATEMENT 205
365: # define EXPRESSION 206
366: # define SM_PARAM 207
367: # define TEMPLATE_TEST 208
368: # define PTNAME 209
369: # define NEW_INIT_KLUDGE 210
370: # define XDELETED_NODE 211
371: # define DUMMY_LAST_NODE 212
372: #define yyclearin yychar = -1
373: #define yyerrok yyerrflag = 0
374: extern int yychar;
375: extern short yyerrflag;
376: #ifndef YYMAXDEPTH
377: #define YYMAXDEPTH 150
378: #endif
379: YYSTYPE yylval, yyval;
380: # define YYERRCODE 256
381:
382: # line 2251 "gram.y"
383:
384:
385: static void
386: check_tag()
387: /*
388: Allow the case of inline/virtual/overload as
389: modifiers of return type of form struct/class/union x foo()
390: SM, COLON, LC ==> real class declaration, not return type
391: */
392: {
393: switch ( NEXTTOK() ) {
394: case SM: case COLON: case LC:
395: declTag = 1;
396: break;
397: default:
398: declTag = 0;
399: break;
400: }
401: }
402:
403: static void
404: end_al( Plist mtn, int rst )
405: // unhide type names hidden by arg names
406: // mtn == saved modified_tn
407: {
408: if ( rst == 0 ) {
409: // not really an arg list, or we are entering a function def
410: // merge modified_tn and don't restore
411: if ( modified_tn == 0 ) modified_tn = mtn;
412: else {
413: for ( Plist l = modified_tn; l->l; l = l->l ) ;
414: l->l = mtn;
415: }
416: } else {
417: restore();
418: modified_tn = mtn;
419: }
420: }
421: static void
422: arg_redec( Pname fn )
423: {
424: if ( fn==0 || fn->tp->base != FCT )
425: error('i',"bad inline rewrite!");
426: Pname al = Pfct(fn->tp)->argtype;
427: Pname n = 0;
428: for ( ; al; al = al->n_list ) {
429: DB( if(Ydebug>=1)error('d',"arg_redec: %n %d",al,al->lex_level); );
430: // nested function args should have lex_level >= 1
431: if ( al->lex_level==1 && (n=ktbl->look(al->string,0)) )
432: n->hide();
433: else if ( al->lex_level>1 && (n=ktbl->look(al->string,LOCAL)) )
434: n->hide();
435: DB( if(Ydebug>=1)error('d'," %n",n); );
436: }
437: }
438:
439:
440: short yyexca[] ={
441: -1, 1,
442: 0, -1,
443: -2, 0,
444: -1, 26,
445: 40, 58,
446: 42, 58,
447: 46, 58,
448: -2, 63,
449: -1, 54,
450: 71, 46,
451: 72, 46,
452: -2, 45,
453: -1, 72,
454: 155, 360,
455: -2, 295,
456: -1, 77,
457: 13, 355,
458: 97, 355,
459: 123, 355,
460: 155, 355,
461: 156, 355,
462: 160, 355,
463: 178, 355,
464: 179, 355,
465: 182, 355,
466: -2, 295,
467: -1, 131,
468: 73, 109,
469: -2, 103,
470: -1, 328,
471: 40, 59,
472: 42, 59,
473: 46, 59,
474: -2, 65,
475: -1, 359,
476: 60, 20,
477: 71, 20,
478: -2, 120,
479: -1, 360,
480: 60, 19,
481: 71, 19,
482: -2, 119,
483: -1, 415,
484: 1, 210,
485: 3, 210,
486: 4, 210,
487: 7, 210,
488: 8, 210,
489: 9, 210,
490: 10, 210,
491: 13, 210,
492: 16, 210,
493: 19, 210,
494: 20, 210,
495: 23, 210,
496: 24, 210,
497: 28, 210,
498: 30, 210,
499: 33, 210,
500: 34, 210,
501: 39, 210,
502: 40, 210,
503: 46, 210,
504: 47, 210,
505: 50, 210,
506: 52, 210,
507: 54, 210,
508: 55, 210,
509: 72, 210,
510: 73, 210,
511: 80, 210,
512: 81, 210,
513: 82, 210,
514: 83, 210,
515: 84, 210,
516: 85, 210,
517: 86, 210,
518: 95, 210,
519: 97, 210,
520: 123, 210,
521: 156, 210,
522: 160, 210,
523: 178, 210,
524: 179, 210,
525: 182, 210,
526: 185, 210,
527: 209, 210,
528: -2, 0,
529: };
530: # define YYNPROD 375
531: # define YYLAST 3383
532: short yyact[]={
533:
534: 181, 532, 154, 558, 49, 525, 469, 69, 212, 16,
535: 70, 343, 184, 9, 190, 11, 156, 73, 344, 167,
536: 405, 362, 531, 10, 306, 240, 194, 210, 331, 234,
537: 76, 193, 311, 516, 541, 28, 17, 78, 318, 209,
538: 131, 165, 94, 208, 466, 328, 95, 233, 34, 83,
539: 35, 128, 60, 54, 218, 127, 127, 32, 128, 517,
540: 86, 89, 145, 314, 183, 12, 64, 151, 479, 76,
541: 93, 418, 407, 220, 129, 199, 78, 34, 185, 35,
542: 31, 196, 34, 138, 35, 309, 44, 126, 196, 50,
543: 125, 211, 201, 211, 180, 88, 302, 585, 76, 624,
544: 142, 570, 235, 500, 43, 78, 351, 363, 27, 444,
545: 413, 407, 415, 85, 256, 570, 341, 236, 309, 568,
546: 569, 34, 593, 35, 88, 59, 33, 20, 351, 88,
547: 506, 350, 39, 147, 148, 45, 213, 557, 450, 16,
548: 367, 368, 211, 224, 576, 211, 226, 315, 46, 82,
549: 84, 211, 243, 225, 185, 271, 83, 262, 576, 285,
550: 286, 287, 288, 289, 290, 291, 292, 293, 295, 44,
551: 515, 37, 282, 307, 308, 284, 296, 435, 34, 82,
552: 35, 294, 355, 283, 250, 237, 338, 43, 246, 337,
553: 82, 84, 304, 44, 252, 330, 227, 305, 365, 352,
554: 37, 501, 436, 286, 356, 37, 329, 45, 204, 329,
555: 247, 43, 81, 30, 249, 357, 333, 316, 45, 300,
556: 566, 60, 250, 301, 564, 216, 467, 329, 563, 80,
557: 553, 552, 60, 211, 309, 325, 45, 339, 231, 91,
558: 326, 45, 45, 144, 37, 143, 358, 361, 60, 92,
559: 206, 39, 370, 149, 372, 373, 374, 375, 376, 377,
560: 378, 379, 380, 381, 382, 383, 384, 385, 386, 387,
561: 388, 389, 366, 390, 334, 369, 349, 391, 396, 60,
562: 45, 256, 399, 354, 353, 254, 255, 80, 44, 215,
563: 638, 32, 393, 296, 59, 395, 402, 285, 371, 403,
564: 74, 37, 82, 394, 75, 59, 43, 550, 414, 520,
565: 71, 211, 74, 494, 31, 82, 75, 411, 412, 298,
566: 397, 59, 400, 196, 262, 82, 498, 74, 134, 424,
567: 211, 75, 60, 347, 327, 360, 423, 45, 30, 559,
568: 410, 408, 299, 422, 464, 409, 420, 205, 463, 432,
569: 438, 32, 59, 443, 417, 458, 82, 340, 457, 427,
570: 428, 433, 429, 419, 437, 439, 243, 38, 451, 431,
571: 324, 312, 238, 448, 31, 297, 39, 34, 39, 35,
572: 447, 442, 38, 446, 214, 38, 449, 74, 189, 587,
573: 561, 75, 34, 454, 35, 441, 66, 503, 38, 302,
574: 303, 65, 26, 232, 296, 59, 47, 62, 637, 275,
575: 455, 590, 30, 44, 474, 44, 629, 51, 83, 460,
576: 74, 83, 319, 459, 75, 275, 604, 461, 462, 565,
577: 90, 43, 602, 43, 133, 471, 601, 599, 424, 424,
578: 476, 477, 555, 132, 140, 423, 423, 554, 480, 141,
579: 39, 432, 473, 491, 489, 44, 492, 481, 44, 482,
580: 448, 485, 45, 472, 45, 586, 465, 447, 484, 150,
581: 274, 187, 434, 43, 26, 495, 43, 81, 497, 459,
582: 459, 187, 490, 336, 275, 502, 496, 44, 248, 251,
583: 416, 505, 26, 281, 26, 277, 510, 278, 280, 508,
584: 37, 504, 507, 445, 45, 43, 296, 45, 519, 513,
585: 239, 511, 523, 524, 497, 37, 514, 145, 521, 48,
586: 471, 549, 512, 8, 551, 60, 509, 16, 7, 556,
587: 522, 530, 26, 38, 342, 74, 45, 230, 560, 75,
588: 562, 478, 242, 26, 313, 187, 26, 187, 276, 483,
589: 588, 45, 26, 191, 486, 549, 549, 187, 591, 595,
590: 597, 16, 77, 425, 74, 530, 603, 195, 75, 26,
591: 549, 549, 549, 549, 549, 549, 549, 549, 549, 549,
592: 549, 549, 549, 549, 549, 549, 549, 549, 592, 122,
593: 625, 310, 596, 626, 598, 71, 600, 74, 59, 166,
594: 192, 75, 605, 606, 607, 608, 609, 610, 611, 612,
595: 613, 614, 615, 616, 617, 618, 619, 620, 621, 622,
596: 623, 526, 347, 518, 499, 146, 55, 30, 640, 222,
597: 53, 36, 642, 631, 26, 632, 633, 130, 635, 549,
598: 40, 645, 646, 359, 51, 175, 22, 36, 137, 650,
599: 649, 18, 347, 1, 36, 36, 468, 30, 38, 475,
600: 74, 52, 63, 641, 75, 39, 470, 32, 643, 63,
601: 63, 644, 2, 0, 0, 79, 24, 187, 52, 0,
602: 398, 0, 401, 0, 0, 652, 26, 52, 52, 0,
603: 31, 0, 24, 72, 0, 39, 0, 0, 0, 24,
604: 24, 140, 44, 23, 0, 0, 347, 0, 0, 178,
605: 19, 30, 26, 0, 0, 188, 187, 440, 198, 0,
606: 43, 0, 426, 85, 0, 188, 58, 0, 42, 298,
607: 72, 26, 44, 87, 19, 38, 198, 71, 198, 74,
608: 0, 0, 124, 75, 0, 34, 0, 35, 0, 39,
609: 43, 45, 299, 36, 32, 179, 0, 0, 0, 187,
610: 0, 36, 72, 0, 0, 72, 83, 67, 52, 68,
611: 38, 0, 42, 0, 0, 319, 229, 31, 36, 0,
612: 34, 45, 35, 0, 0, 297, 44, 198, 0, 188,
613: 198, 188, 88, 63, 0, 0, 198, 26, 0, 38,
614: 0, 188, 0, 44, 43, 0, 24, 0, 0, 34,
615: 21, 35, 25, 198, 0, 30, 36, 0, 39, 0,
616: 570, 43, 52, 24, 568, 569, 219, 36, 83, 0,
617: 0, 63, 217, 0, 36, 45, 0, 0, 39, 319,
618: 19, 0, 52, 36, 30, 0, 0, 26, 0, 63,
619: 335, 0, 45, 39, 0, 44, 57, 19, 52, 0,
620: 187, 24, 42, 576, 574, 44, 0, 0, 37, 0,
621: 0, 41, 321, 43, 36, 44, 0, 52, 198, 24,
622: 0, 0, 39, 43, 81, 0, 124, 52, 52, 52,
623: 44, 135, 0, 43, 29, 58, 187, 186, 0, 187,
624: 320, 0, 0, 37, 45, 0, 317, 0, 43, 51,
625: 51, 0, 0, 19, 45, 41, 332, 0, 0, 44,
626: 26, 188, 317, 219, 45, 0, 72, 36, 0, 0,
627: 198, 281, 37, 277, 39, 278, 280, 43, 61, 45,
628: 0, 348, 52, 176, 52, 52, 25, 364, 0, 0,
629: 0, 36, 335, 317, 26, 0, 198, 0, 0, 0,
630: 188, 0, 0, 335, 0, 0, 52, 136, 45, 0,
631: 0, 44, 39, 152, 135, 198, 71, 430, 74, 71,
632: 207, 74, 75, 134, 0, 75, 276, 155, 176, 43,
633: 135, 52, 52, 0, 164, 335, 321, 321, 173, 174,
634: 406, 0, 72, 188, 179, 41, 317, 0, 124, 44,
635: 161, 162, 0, 0, 157, 0, 158, 39, 160, 159,
636: 45, 0, 0, 0, 320, 320, 0, 43, 29, 0,
637: 0, 186, 0, 39, 347, 0, 332, 335, 335, 30,
638: 0, 198, 39, 0, 174, 171, 169, 170, 172, 30,
639: 168, 346, 0, 0, 44, 348, 348, 0, 45, 163,
640: 0, 177, 52, 0, 0, 0, 0, 0, 364, 0,
641: 44, 279, 43, 139, 0, 0, 36, 39, 0, 44,
642: 0, 0, 52, 0, 52, 0, 52, 39, 43, 133,
643: 570, 22, 0, 0, 568, 569, 0, 43, 579, 0,
644: 578, 256, 0, 45, 188, 254, 255, 0, 256, 0,
645: 406, 406, 254, 255, 44, 0, 264, 0, 265, 45,
646: 36, 24, 0, 0, 153, 0, 348, 0, 45, 345,
647: 0, 577, 43, 576, 574, 63, 0, 0, 0, 0,
648: 188, 0, 43, 188, 262, 260, 348, 52, 348, 263,
649: 348, 262, 260, 52, 52, 19, 0, 0, 0, 0,
650: 0, 0, 0, 45, 198, 24, 72, 0, 546, 0,
651: 542, 539, 0, 45, 543, 540, 547, 545, 0, 0,
652: 42, 0, 0, 535, 570, 72, 544, 533, 568, 569,
653: 155, 176, 579, 0, 578, 528, 0, 164, 198, 58,
654: 536, 173, 0, 0, 0, 0, 534, 179, 0, 0,
655: 0, 348, 0, 161, 162, 0, 0, 157, 0, 158,
656: 0, 160, 159, 0, 0, 577, 575, 576, 574, 0,
657: 118, 0, 0, 0, 0, 0, 0, 0, 0, 527,
658: 415, 0, 0, 0, 117, 0, 0, 537, 171, 169,
659: 170, 172, 30, 168, 0, 0, 0, 0, 0, 0,
660: 0, 110, 163, 111, 529, 119, 0, 112, 113, 0,
661: 0, 98, 0, 99, 0, 96, 97, 0, 0, 106,
662: 0, 107, 0, 0, 0, 101, 100, 108, 109, 0,
663: 538, 116, 120, 570, 0, 571, 0, 568, 569, 42,
664: 0, 579, 0, 578, 0, 0, 30, 573, 572, 580,
665: 0, 115, 105, 103, 104, 102, 114, 0, 123, 0,
666: 0, 0, 0, 41, 0, 0, 0, 548, 0, 0,
667: 0, 0, 0, 0, 577, 575, 576, 574, 0, 0,
668: 0, 0, 0, 0, 39, 43, 29, 152, 0, 186,
669: 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,
670: 0, 155, 176, 42, 0, 0, 0, 0, 164, 0,
671: 0, 0, 173, 0, 0, 0, 45, 0, 179, 0,
672: 0, 44, 0, 25, 161, 162, 0, 0, 157, 0,
673: 158, 0, 160, 159, 0, 0, 0, 0, 0, 43,
674: 0, 121, 0, 0, 0, 0, 0, 0, 0, 39,
675: 0, 182, 0, 152, 0, 0, 0, 42, 174, 171,
676: 169, 170, 172, 30, 168, 0, 0, 155, 176, 0,
677: 45, 0, 0, 163, 164, 197, 0, 0, 173, 0,
678: 0, 0, 241, 0, 179, 0, 44, 25, 0, 0,
679: 161, 162, 0, 0, 157, 0, 158, 0, 160, 159,
680: 0, 39, 0, 0, 43, 29, 0, 0, 186, 0,
681: 570, 0, 571, 39, 568, 569, 0, 0, 579, 0,
682: 578, 0, 0, 0, 174, 171, 169, 170, 172, 30,
683: 168, 244, 245, 0, 41, 45, 0, 0, 153, 163,
684: 0, 197, 0, 0, 0, 421, 41, 0, 0, 0,
685: 44, 577, 575, 576, 574, 0, 43, 29, 0, 0,
686: 186, 0, 0, 0, 152, 0, 0, 39, 43, 29,
687: 0, 0, 186, 0, 0, 0, 256, 0, 155, 176,
688: 254, 255, 0, 0, 264, 164, 265, 45, 0, 173,
689: 0, 0, 0, 0, 0, 179, 0, 0, 0, 45,
690: 41, 161, 162, 0, 153, 157, 0, 158, 0, 160,
691: 159, 0, 0, 0, 0, 0, 0, 263, 261, 262,
692: 260, 0, 43, 29, 0, 0, 186, 0, 182, 0,
693: 547, 0, 0, 0, 0, 174, 171, 169, 170, 172,
694: 30, 168, 0, 0, 155, 176, 0, 0, 0, 0,
695: 163, 164, 177, 45, 0, 173, 0, 0, 0, 0,
696: 0, 179, 0, 155, 176, 0, 0, 161, 162, 0,
697: 164, 157, 0, 158, 173, 160, 159, 0, 39, 0,
698: 179, 0, 627, 0, 0, 0, 161, 162, 0, 0,
699: 157, 0, 158, 0, 160, 159, 0, 0, 0, 0,
700: 0, 174, 171, 169, 170, 172, 30, 168, 0, 0,
701: 0, 0, 0, 0, 0, 153, 163, 0, 177, 0,
702: 174, 171, 169, 170, 172, 30, 168, 0, 0, 155,
703: 176, 0, 0, 43, 0, 163, 164, 177, 0, 0,
704: 173, 0, 0, 0, 39, 0, 179, 0, 589, 0,
705: 0, 0, 161, 162, 0, 0, 157, 0, 158, 0,
706: 160, 159, 0, 39, 45, 0, 0, 0, 256, 0,
707: 257, 0, 254, 255, 0, 0, 264, 0, 265, 0,
708: 0, 548, 259, 258, 266, 0, 174, 171, 169, 170,
709: 172, 30, 168, 0, 0, 0, 0, 0, 0, 43,
710: 273, 163, 0, 177, 0, 0, 0, 0, 0, 263,
711: 261, 262, 260, 0, 155, 176, 0, 0, 43, 0,
712: 0, 164, 0, 0, 0, 173, 0, 0, 0, 39,
713: 45, 179, 0, 392, 0, 0, 0, 161, 162, 0,
714: 0, 157, 0, 158, 0, 160, 159, 0, 0, 45,
715: 570, 0, 571, 0, 568, 569, 0, 0, 579, 0,
716: 578, 0, 0, 0, 573, 572, 273, 0, 0, 0,
717: 0, 174, 171, 169, 170, 172, 30, 168, 155, 176,
718: 0, 0, 0, 0, 43, 164, 163, 0, 177, 173,
719: 0, 577, 575, 576, 574, 179, 0, 272, 0, 0,
720: 0, 161, 162, 0, 0, 157, 0, 158, 0, 160,
721: 159, 0, 0, 0, 39, 45, 0, 0, 0, 256,
722: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
723: 0, 0, 0, 259, 258, 174, 171, 169, 170, 172,
724: 30, 168, 0, 0, 0, 0, 0, 0, 155, 176,
725: 163, 273, 177, 0, 0, 164, 0, 0, 0, 173,
726: 263, 261, 262, 260, 0, 179, 0, 0, 0, 43,
727: 0, 161, 162, 0, 0, 157, 0, 158, 39, 160,
728: 159, 0, 0, 0, 0, 0, 0, 0, 0, 0,
729: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
730: 45, 0, 0, 0, 0, 174, 171, 169, 170, 172,
731: 30, 168, 155, 176, 0, 273, 0, 0, 0, 164,
732: 163, 0, 177, 173, 0, 0, 42, 0, 0, 179,
733: 0, 0, 0, 43, 0, 161, 162, 0, 0, 157,
734: 0, 158, 0, 160, 159, 0, 0, 0, 39, 0,
735: 0, 0, 0, 407, 0, 0, 0, 0, 0, 0,
736: 0, 0, 0, 34, 45, 35, 0, 0, 152, 323,
737: 171, 169, 170, 172, 30, 168, 0, 0, 4, 13,
738: 0, 0, 155, 176, 163, 273, 177, 0, 0, 164,
739: 0, 42, 0, 173, 0, 0, 0, 0, 30, 179,
740: 202, 0, 32, 43, 0, 161, 162, 0, 0, 200,
741: 57, 158, 39, 160, 159, 0, 0, 0, 38, 0,
742: 0, 0, 0, 0, 0, 31, 0, 0, 34, 0,
743: 35, 0, 182, 0, 45, 0, 39, 0, 0, 174,
744: 171, 169, 170, 172, 30, 168, 0, 0, 0, 273,
745: 3, 0, 6, 0, 163, 155, 176, 0, 21, 0,
746: 0, 0, 164, 30, 0, 0, 173, 43, 0, 41,
747: 42, 0, 179, 44, 0, 25, 0, 0, 161, 162,
748: 0, 32, 0, 0, 0, 0, 37, 0, 0, 0,
749: 0, 43, 61, 0, 0, 0, 0, 38, 45, 0,
750: 0, 39, 0, 0, 31, 0, 0, 34, 0, 35,
751: 0, 0, 174, 171, 169, 170, 172, 30, 168, 0,
752: 0, 0, 45, 0, 0, 0, 0, 163, 0, 177,
753: 0, 221, 203, 0, 41, 42, 0, 21, 44, 0,
754: 0, 0, 30, 0, 0, 0, 32, 0, 0, 0,
755: 0, 37, 0, 0, 25, 39, 43, 29, 0, 42,
756: 5, 0, 38, 14, 0, 0, 0, 0, 45, 31,
757: 0, 0, 34, 0, 35, 0, 0, 0, 0, 0,
758: 39, 0, 0, 0, 0, 0, 15, 45, 0, 0,
759: 0, 0, 273, 0, 0, 0, 34, 0, 35, 0,
760: 0, 0, 21, 0, 0, 0, 0, 30, 0, 0,
761: 43, 0, 0, 41, 0, 0, 0, 44, 0, 25,
762: 0, 0, 0, 0, 0, 0, 363, 0, 0, 0,
763: 37, 30, 228, 0, 0, 43, 29, 0, 42, 186,
764: 0, 45, 223, 57, 0, 39, 42, 0, 0, 32,
765: 0, 0, 0, 0, 42, 0, 0, 32, 0, 0,
766: 0, 0, 0, 0, 0, 38, 45, 0, 0, 39,
767: 0, 0, 31, 38, 0, 34, 0, 35, 41, 0,
768: 31, 0, 44, 34, 0, 35, 0, 0, 0, 0,
769: 0, 34, 0, 35, 66, 37, 0, 56, 0, 0,
770: 43, 29, 41, 0, 186, 62, 44, 0, 0, 0,
771: 30, 0, 0, 21, 0, 0, 0, 32, 30, 37,
772: 0, 0, 57, 0, 43, 61, 30, 487, 488, 0,
773: 57, 45, 0, 38, 0, 0, 0, 0, 57, 0,
774: 31, 0, 0, 34, 0, 35, 0, 0, 39, 0,
775: 0, 0, 0, 0, 0, 45, 39, 0, 0, 0,
776: 0, 0, 0, 0, 39, 0, 570, 0, 571, 0,
777: 568, 569, 0, 21, 579, 0, 578, 0, 30, 0,
778: 573, 41, 0, 0, 0, 44, 0, 0, 0, 41,
779: 88, 0, 0, 44, 0, 0, 0, 41, 37, 0,
780: 0, 44, 0, 43, 61, 0, 37, 577, 575, 576,
781: 574, 43, 61, 0, 37, 0, 39, 0, 0, 43,
782: 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783: 0, 0, 651, 0, 45, 0, 0, 0, 0, 0,
784: 0, 256, 45, 257, 0, 254, 255, 0, 0, 264,
785: 45, 265, 0, 44, 0, 259, 258, 266, 267, 270,
786: 0, 253, 269, 0, 0, 0, 37, 0, 0, 0,
787: 0, 43, 0, 0, 0, 0, 0, 0, 0, 0,
788: 0, 268, 263, 261, 262, 260, 0, 0, 0, 256,
789: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
790: 0, 0, 45, 259, 258, 266, 267, 270, 0, 253,
791: 269, 648, 0, 0, 0, 256, 0, 257, 0, 254,
792: 255, 0, 0, 264, 0, 265, 0, 647, 0, 268,
793: 263, 261, 262, 260, 256, 0, 257, 0, 254, 255,
794: 0, 0, 264, 0, 265, 0, 0, 0, 259, 258,
795: 266, 267, 270, 0, 253, 269, 263, 261, 262, 260,
796: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
797: 0, 0, 639, 0, 268, 263, 261, 262, 260, 256,
798: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
799: 0, 0, 0, 259, 258, 266, 267, 270, 0, 253,
800: 269, 0, 0, 0, 0, 0, 0, 0, 0, 0,
801: 0, 0, 0, 0, 0, 0, 0, 0, 0, 268,
802: 263, 261, 262, 260, 570, 0, 571, 0, 568, 569,
803: 0, 0, 579, 0, 578, 0, 0, 0, 573, 572,
804: 580, 581, 584, 636, 567, 583, 0, 0, 0, 0,
805: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
806: 0, 0, 0, 0, 582, 577, 575, 576, 574, 256,
807: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
808: 0, 0, 0, 259, 258, 266, 267, 270, 634, 253,
809: 269, 0, 0, 0, 0, 0, 0, 0, 0, 0,
810: 0, 0, 0, 0, 0, 630, 0, 0, 0, 268,
811: 263, 261, 262, 260, 256, 0, 257, 0, 254, 255,
812: 0, 0, 264, 0, 265, 0, 0, 0, 259, 258,
813: 266, 267, 270, 0, 253, 269, 0, 0, 0, 0,
814: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
815: 0, 0, 0, 0, 268, 263, 261, 262, 260, 570,
816: 0, 571, 0, 568, 569, 0, 0, 579, 0, 578,
817: 0, 0, 0, 573, 572, 580, 581, 584, 0, 567,
818: 583, 628, 0, 0, 0, 0, 0, 0, 0, 0,
819: 0, 0, 0, 0, 0, 0, 0, 0, 0, 582,
820: 577, 575, 576, 574, 256, 0, 257, 0, 254, 255,
821: 0, 0, 264, 0, 265, 0, 0, 0, 259, 258,
822: 266, 267, 270, 0, 253, 269, 594, 0, 0, 0,
823: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
824: 0, 0, 493, 0, 268, 263, 261, 262, 260, 256,
825: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
826: 0, 0, 0, 259, 258, 266, 267, 270, 0, 253,
827: 269, 0, 0, 0, 0, 0, 0, 0, 0, 0,
828: 0, 0, 0, 0, 0, 0, 0, 456, 0, 268,
829: 263, 261, 262, 260, 256, 0, 257, 0, 254, 255,
830: 0, 0, 264, 0, 265, 0, 0, 0, 259, 258,
831: 266, 267, 270, 0, 253, 269, 0, 0, 0, 0,
832: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
833: 0, 0, 453, 0, 268, 263, 261, 262, 260, 256,
834: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
835: 0, 0, 0, 259, 258, 266, 267, 270, 0, 253,
836: 269, 0, 0, 0, 0, 0, 0, 0, 0, 0,
837: 0, 0, 0, 0, 0, 0, 0, 0, 0, 268,
838: 263, 261, 262, 260, 256, 0, 257, 0, 254, 255,
839: 0, 0, 264, 0, 265, 0, 0, 0, 259, 258,
840: 266, 267, 270, 452, 253, 269, 0, 0, 0, 0,
841: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
842: 404, 0, 0, 0, 268, 263, 261, 262, 260, 256,
843: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
844: 0, 0, 0, 259, 258, 266, 267, 270, 0, 253,
845: 269, 0, 0, 0, 0, 0, 0, 0, 0, 0,
846: 0, 0, 0, 0, 0, 0, 0, 322, 0, 268,
847: 263, 261, 262, 260, 256, 0, 257, 0, 254, 255,
848: 0, 0, 264, 0, 265, 0, 0, 0, 259, 258,
849: 266, 267, 270, 0, 253, 269, 0, 0, 0, 0,
850: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
851: 0, 0, 0, 0, 268, 263, 261, 262, 260, 570,
852: 0, 571, 0, 568, 569, 0, 0, 579, 0, 578,
853: 0, 0, 0, 573, 572, 580, 581, 584, 0, 567,
854: 583, 0, 0, 0, 0, 0, 0, 0, 0, 0,
855: 0, 0, 0, 0, 0, 0, 0, 0, 0, 582,
856: 577, 575, 576, 574, 570, 0, 571, 0, 568, 569,
857: 0, 0, 579, 0, 578, 0, 0, 0, 573, 572,
858: 580, 581, 584, 256, 567, 257, 0, 254, 255, 0,
859: 0, 264, 0, 265, 0, 0, 0, 259, 258, 266,
860: 267, 270, 0, 253, 582, 577, 575, 576, 574, 0,
861: 0, 0, 0, 0, 256, 0, 257, 0, 254, 255,
862: 0, 0, 264, 268, 263, 261, 262, 260, 259, 258,
863: 266, 267, 270, 570, 253, 571, 0, 568, 569, 0,
864: 0, 579, 0, 578, 0, 0, 0, 573, 572, 580,
865: 581, 584, 0, 0, 268, 263, 261, 262, 260, 256,
866: 0, 257, 0, 254, 255, 0, 0, 264, 0, 265,
867: 0, 0, 0, 259, 577, 575, 576, 574, 256, 0,
868: 257, 0, 254, 255, 0, 0, 264, 0, 265, 0,
869: 0, 0, 259, 258, 266, 267, 270, 0, 0, 0,
870: 263, 261, 262, 260, 0, 0, 0, 0, 0, 0,
871: 0, 0, 0, 0, 0, 0, 0, 0, 0, 263,
872: 261, 262, 260 };
873: short yypact[]={
874:
875: 2038,-1000,-1000,-1000,-1000, 75,-1000,-1000,-1000,-1000,
876: -1000,-1000,-1000, 366,-1000, 9,2285, 697,-1000, 522,
877: -1000, 242, 33,2353, 730,-1000, 181,-1000,-1000,-1000,
878: 191, -53,1221,-1000, -7, -10,-122, -23,-1000,-1000,
879: -1000, 910, 894,-1000,-1000, 181,-1000, 19, 187, 185,
880: -1000,-1000, -74,-123, 555, 62,-1000,-1000, 522,-1000,
881: -1000,-1000, 184, 643,-1000, 181, 964,1515,-1000, 849,
882: -1000, 347,1338,-1000, 964,-1000,-1000,2019,-1000, 849,
883: 267,-1000,-1000,-1000,-1000, 205, 270, 522,-1000, 939,
884: 1404,-1000,1404,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
885: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
886: 343, 246,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
887: -1000,-1000, 128,-1000,-1000,-1000,-1000,-1000, -24,-1000,
888: 2117, 169, 181,-1000,-1000,-1000, 22, 44,-1000,-1000,
889: -1000,1404, 331,1286,1404, 849,-1000, 327,-1000,-1000,
890: 1404,3193,1815, 461, 891, 715,1885,1885,1885,1885,
891: 1885,1885,1885,1885,1885,-1000,-1000,1404,-1000,-1000,
892: -1000,-1000,-1000,-1000,-1000, 295,1221, 359, 360,-1000,
893: 120,3193,1515, 49,-1000,2285,-1000, 181, 298,-1000,
894: 330, -8, 146,-1000,-1000,-1000, 759, 359, 705,3084,
895: 1949, 329,-1000, 730,-1000,-1000, 267,-1000, 135,-1000,
896: -1000,3224,2301, 156,-1000,-1000,-1000,-1000,-1000, -2,
897: -1000,-1000,-1000,-1000,-1000, 117, 114,-1000, 168, 33,
898: 43, 954,1404, 57,-1000, 129, 22, 135, 110, 144,
899: -1000, 255, 9,2206,-1000,-1000, 138, 16,1515,-1000,
900: 555, 964, 135, 964, 964, 964, 964, 964, 964, 964,
901: 964, 964, 964, 964, 964, 964, 964, 964, 964, 964,
902: 964, 891, 964, 386,1751, 715,-1000, 964, 919,1885,
903: 919,1515,-1000,-1000,1338, 453, 891, 891, 891, 891,
904: 453, 453, 453, 453,2092,3039,1973,-1000,1221, 811,
905: -1000,-1000,1515,1515,-1000, 36, 39,-1000,-1000,-1000,
906: 1404, -26,-1000, 322,1350,-1000,1515,-1000, 493,-1000,
907: 695, 342,-1000, 321,-1000, -26, 936,-1000,-1000,1404,
908: -1000, 258, -2,-1000,-1000,-115,-1000,-1000,-1000,-1000,
909: 105,-1000, 131,-1000,-1000, 253, 542,-1000,-1000, 135,
910: -1000, 22, 964, 35,-1000,-1000,-1000,1286,-1000, 181,
911: -1000,-1000, 345,-1000, 27, 66, 39,-1000,-1000,-1000,
912: 3193,-1000,3193, 64, 64,-1000,1486,3269,2525, 231,
913: 1058,-1000,1051,1051,1051,1829,1678,3193,3193,2994,
914: 2949, 891, 964,-1000,-1000,1338,2904,-1000,-1000, 453,
915: -1000,-1000, 317, 314,-1000, 378, 32, 71,-1000,-1000,
916: -1000, 307, 303,-1000,-1000, -30, 626, 135,-1000,-1000,
917: -1000,-1000,-1000,-1000,-1000,-1000,-1000, 345, 618, 358,
918: 358,-1000,-1000, 258, -59,-1000, 954,-1000, 572,-1000,
919: 572,-1000,-1000,3193,-1000,2182,-1000,-1000,-1000, 345,
920: -1000,-1000, 964,1885,2859, 272,-1000,-1000, 715,-1000,
921: -1000, 258, 285,-1000,-1000,-1000,-1000, 29, 130,-1000,
922: 1515, 357,-1000, -26,1515,-1000,-1000,-1000,-1000,-1000,
923: -1000,-1000,-1000,-1000,-1000,-1000, 58,-1000,-1000,2293,
924: 270,3288, 891,1885, 715,-1000,-1000, 849, 345, -15,
925: -1000, 626, 268,1515,-1000, 165,-1000, 9, 9, 270,
926: 891,-1000,-1000,-1000,-1000,-1000,-1000,-1000,1167,-1000,
927: -1000, 266, 39, 162, 161,-1000,-1000,-1000, 964, 56,
928: -1000,-1000,-1000, 299, 299, 350, 299, 159, 155,-1000,
929: 151,3129,-1000,-1000, 17,-1000, 349,1666, 402, 891,
930: -1000,-1000,1167,1581,-1000, 50,2814, 39,-1000, 964,
931: -1000,-1000,-1000,-1000,-1000, 964,-1000,1581,1581,1581,
932: 1581,1581,1581,1581,1581,1581,1581,1581,1581,1581,
933: 1581,1581,1581,1581,1581,-1000,-1000, 18, 891, 964,
934: 1600,-1000,2769,-1000,-1000,-1000, 404,2724,-1000,-1000,
935: -1000,-1000,-1000,2679,-1000,3174, 51, 51,-1000,1134,
936: 2376,1420, 65,1040,-1000, 770, 770, 770,1760,1243,
937: 3174,3174,2634, 369, 249,2589, 891, 964,-1000,-1000,
938: -1000, 964,-1000,-1000,-1000,-1000,1581, 299,-1000,1885,
939: 2544,-1000,2499,-1000,3243,-1000, 891,1885, 964, 891,
940: 2451,-1000,-1000 };
941: short yypgo[]={
942:
943: 0, 672, 65, 15, 22, 7, 24, 656, 6, 12,
944: 653, 17, 703, 8, 651, 35, 47, 29, 40, 18,
945: 648, 640, 108, 637, 629, 66, 626, 127, 36, 26,
946: 624, 33, 623, 1, 5, 621, 600, 14, 0, 34,
947: 2, 41, 599, 20, 16, 54, 46, 589, 38, 21,
948: 31, 567, 10, 553, 28, 27, 3, 126, 645, 401,
949: 709, 630, 549, 42, 544, 542, 541, 4, 537, 534,
950: 11, 32, 675, 39, 43, 528, 523, 519, 510, 503,
951: 502, 499, 64, 491, 490, 489, 488, 403, 45, 25,
952: 483, 472, 466, 465, 447, 442, 437, 436, 432, 429,
953: 426, 19, 414 };
954: short yyr1[]={
955:
956: 0, 10, 10, 10, 10, 10, 10, 10, 76, 77,
957: 79, 75, 62, 62, 62, 80, 62, 81, 62, 67,
958: 67, 1, 1, 1, 1, 1, 2, 2, 4, 4,
959: 4, 3, 3, 3, 83, 66, 82, 84, 6, 6,
960: 7, 7, 8, 8, 5, 5, 25, 85, 25, 25,
961: 86, 25, 26, 26, 9, 9, 87, 88, 60, 60,
962: 60, 14, 14, 14, 14, 14, 14, 14, 14, 13,
963: 13, 13, 13, 13, 13, 74, 74, 73, 73, 20,
964: 20, 15, 15, 15, 16, 16, 78, 78, 78, 65,
965: 65, 89, 89, 89, 49, 49, 49, 49, 17, 17,
966: 17, 90, 22, 22, 22, 22, 91, 91, 68, 68,
967: 69, 69, 70, 70, 70, 70, 70, 21, 21, 18,
968: 18, 19, 19, 23, 23, 23, 24, 24, 24, 24,
969: 24, 24, 24, 24, 27, 27, 27, 27, 63, 63,
970: 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
971: 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
972: 63, 63, 63, 63, 58, 58, 59, 59, 71, 71,
973: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
974: 28, 28, 28, 28, 28, 28, 28, 48, 48, 48,
975: 48, 48, 48, 48, 54, 54, 54, 43, 43, 43,
976: 43, 43, 45, 45, 30, 30, 30, 31, 32, 56,
977: 92, 33, 33, 33, 35, 35, 35, 35, 93, 35,
978: 35, 95, 94, 34, 34, 34, 34, 34, 34, 34,
979: 34, 34, 34, 96, 34, 34, 97, 34, 98, 34,
980: 99, 34, 100, 34, 37, 36, 36, 29, 29, 39,
981: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
982: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
983: 39, 39, 38, 38, 38, 38, 38, 38, 38, 38,
984: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
985: 38, 38, 38, 38, 38, 38, 40, 40, 40, 40,
986: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
987: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
988: 40, 40, 40, 40, 40, 40, 42, 42, 42, 42,
989: 42, 42, 42, 61, 57, 57, 57, 41, 41, 41,
990: 41, 41, 41, 41, 44, 101, 47, 47, 47, 47,
991: 46, 55, 51, 102, 51, 72, 52, 53, 53, 50,
992: 50, 64, 64, 64, 12, 12, 12, 12, 12, 12,
993: 12, 12, 12, 11, 11 };
994: short yyr2[]={
995:
996: 0, 1, 1, 1, 2, 1, 1, 1, 6, 0,
997: 0, 7, 1, 1, 2, 0, 5, 0, 6, 1,
998: 1, 1, 1, 1, 1, 5, 4, 2, 6, 5,
999: 5, 5, 4, 4, 0, 4, 0, 0, 3, 0,
1000: 1, 3, 3, 4, 2, 0, 1, 0, 4, 2,
1001: 0, 4, 1, 3, 3, 2, 1, 1, 1, 4,
1002: 4, 1, 1, 1, 2, 4, 1, 1, 1, 1,
1003: 2, 2, 2, 2, 2, 3, 1, 1, 1, 1,
1004: 1, 4, 5, 2, 1, 3, 3, 1, 0, 1,
1005: 1, 2, 2, 2, 1, 2, 2, 2, 1, 3,
1006: 0, 0, 5, 2, 5, 2, 0, 2, 2, 0,
1007: 1, 3, 1, 2, 2, 3, 3, 2, 4, 1,
1008: 1, 1, 1, 2, 0, 2, 1, 2, 2, 1,
1009: 1, 1, 2, 3, 1, 2, 2, 2, 1, 1,
1010: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1011: 1, 1, 2, 2, 1, 1, 1, 1, 1, 1,
1012: 1, 1, 1, 1, 1, 2, 2, 1, 0, 2,
1013: 2, 4, 2, 4, 6, 4, 4, 6, 1, 3,
1014: 2, 4, 2, 2, 2, 2, 3, 1, 2, 0,
1015: 2, 2, 2, 3, 0, 2, 2, 0, 2, 2,
1016: 4, 4, 0, 2, 0, 2, 2, 2, 0, 3,
1017: 0, 4, 2, 3, 1, 1, 1, 2, 0, 5,
1018: 4, 0, 2, 2, 1, 3, 3, 1, 1, 1,
1019: 3, 5, 3, 0, 9, 3, 0, 4, 0, 4,
1020: 0, 5, 0, 4, 1, 1, 3, 1, 3, 3,
1021: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1022: 3, 3, 3, 3, 3, 3, 5, 2, 5, 3,
1023: 6, 1, 3, 3, 3, 3, 3, 3, 3, 3,
1024: 3, 3, 3, 3, 3, 3, 3, 3, 3, 5,
1025: 2, 5, 3, 6, 1, 0, 2, 2, 3, 3,
1026: 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1027: 2, 4, 3, 3, 3, 3, 3, 1, 1, 3,
1028: 1, 1, 1, 1, 1, 1, 4, 4, 5, 5,
1029: 6, 6, 4, 4, 1, 1, 2, 1, 2, 2,
1030: 3, 2, 3, 3, 4, 1, 1, 1, 2, 2,
1031: 2, 2, 2, 0, 5, 1, 5, 3, 1, 1,
1032: 0, 0, 1, 2, 1, 1, 2, 2, 2, 2,
1033: 1, 3, 2, 3, 1 };
1034: short yychk[]={
1035:
1036: -1000, -10, -1, 72, 0, 182, 74, -75, -76, -9,
1037: -4, -3, -2, 1, 185, 208, -13, -28, -14, -60,
1038: -27, 80, -58, -12, -72, 97, -59, -22, -15, 179,
1039: 85, 47, 24, -57, 50, 52, -61, 173, 40, 123,
1040: -21, 156, 13, 178, 160, 209, 73, 40, -77, -67,
1041: 80, -59, -58, -61, -28, -26, 72, 97, -60, -22,
1042: -15, 179, 80, -58, -25, -59, 69, 70, 72, -5,
1043: -52, 40, -72, -11, 42, 46, -52, 40, -11, -72,
1044: 45, 179, -57, 123, -27, 80, -28, -60, 97, -28,
1045: -87, 58, 58, 123, -63, -46, 54, 55, 50, 52,
1046: 65, 64, 94, 92, 93, 91, 58, 60, 66, 67,
1047: 40, 42, 46, 47, 95, 90, 70, 23, 9, 44,
1048: 71, 180, -47, 97, -60, 97, 97, 178, 173, 97,
1049: -23, -18, -59, 179, 73, 80, 73, -20, -18, 179,
1050: -59, -87, 81, 58, 58, -5, 70, 71, 72, 69,
1051: -87, -38, 9, 160, -40, 23, -44, 50, 52, 55,
1052: 54, 46, 47, 95, 30, -41, -42,-101, 86, 82,
1053: 83, 81, 84, 34, 80, -58, 24, 97, -60, 40,
1054: -29, -38, 73, -82, -9, -13, 182, -59, -58, 41,
1055: -37, -53, -36, -50, -29, -51, -13, 97, -58, -38,
1056: 50, -37, 41, 173, -27, 80, 45, 41, -74, -73,
1057: -55, -38, -13, -74, 41, 43, 97, -60, -45, -12,
1058: 97, 74, -24, 185, -9, -4, -3, -2, 175, -58,
1059: -68, 69, -87, -16, -17, 80, 73, -74, 41, -78,
1060: -89, 156, -65, -13, 205, 206, -74, -82, -86, -25,
1061: -28, -85, -74, 70, 54, 55, 50, 52, 65, 64,
1062: 94, 92, 93, 91, 58, 60, 66, 67, 90, 71,
1063: 68, -40, 42, 160, 9, 23, 95, 42, 44, 180,
1064: 45, 40, -44, -55,-101, -40, -40, -40, -40, -40,
1065: -40, -40, -40, -40, -44, -38, -13, 80, 24, 47,
1066: -63, -46, 40, 40, 72, -37, -6, 124, 125, 69,
1067: -87, -71, 41, -64, 71, 155, 71, -60, -48, 80,
1068: -12, -72, 43, 80, 41, -71, -28, -27, -88, 71,
1069: 60, -54, -12, 60, -45, -61, -90, 72, 72, 69,
1070: -27, 73, -69, -70, -19, 175, 97, 80, -60, -74,
1071: 74, 71, 70, -16, -88, 72, 60, 71, -67, -59,
1072: 80, -67, -49, 80, -12, 60, -6, 124, 125, -29,
1073: -38, -88, -38, -38, -38, -38, -38, -38, -38, -38,
1074: -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
1075: -38, -40, 42, -44, -55,-101, -38, -41, -59, -40,
1076: -41, -59, -37, -37, 41, -43, -12, 40, -63, -46,
1077: -18, -37, -37, 74, -33, 73, -84, -74, 97, 41,
1078: -50, 155, -29, -11, -52, 70, -59, -48, -48, 41,
1079: 41, -73, -11, -54, -91, 72, 71, -19, 97, -19,
1080: 175, -88, -17, -38, 74, -79, -89, -11, -52, -49,
1081: 72, -33, 69, 43, -38, -37, 43, 41, 41, -11,
1082: 41, -43, -43, 41, 41, -92, 74, 256, -7, -8,
1083: 40, -19, -88, -71,-102, 41, -52, -52, -66, 127,
1084: -70, -19, -19, -62, -4, -3, -22, 205, 206, -13,
1085: -28, -38, -40, 43, 41, -44, -55,-101, 41, -30,
1086: 74, 71, -37, 40, -29, -83, 72, -80, -81, -28,
1087: -40, -44, -55, -52, -11, 185, -31, 74, -32, -8,
1088: 41, -37, -6, -67, -67, -34, -35, 72, 28, 97,
1089: -9, -4, -33, 20, 39, 16, 33, 80, 123, 4,
1090: 8, -39, 3, 7, 19, 10, 1, 9, 160, -40,
1091: 41, -33, 69, 69, -94, -95, -38, 81, -56, 40,
1092: -56, 40, -56, 69, 69, -99, 69, 70, 54, 55,
1093: 50, 52, 65, 64, 94, 92, 93, 91, 60, 58,
1094: 66, 67, 90, 71, 68, 80, -93, 40, -40, 42,
1095: 9, -34, -39, 72, 72, -33, -31, -38, -31, -96,
1096: -31, -97, -98, -38,-100, -39, -39, -39, -39, -39,
1097: -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
1098: -39, -39, -39, -31, 81, -38, -40, 42, 72, 12,
1099: 41, -31, -31, -31, 69, -31, 69, 39, 41, 43,
1100: -38, -31, -38, -31, -39, -56, -40, 43, 72, -40,
1101: -38, 41, -31 };
1102: short yydef[]={
1103:
1104: 0, -2, 1, 2, 3, 62, 5, 6, 7, 21,
1105: 22, 23, 24, 0, 9, 0, 0, 45, 69, 0,
1106: 178, 134, 0, 0, 0, 61, -2, 66, 67, 68,
1107: 0, 0, 0, 164, 364, 365, 0, 370, 355, 167,
1108: 124, 0, 0, 334, 335, 0, 4, 0, 0, 0,
1109: 19, 20, 0, 0, -2, 0, 55, 70, 71, 72,
1110: 73, 74, 134, 0, 52, 58, 295, 295, 27, 36,
1111: 170, 355, -2, 185, 295, 374, 172, -2, 184, 360,
1112: 0, 64, 165, 166, 180, 134, 182, 183, 367, 0,
1113: 295, 56, 295, 135, 136, 137, 138, 139, 140, 141,
1114: 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
1115: 0, 0, 154, 155, 156, 157, 158, 159, 160, 161,
1116: 162, 163, 202, 346, 347, 366, 368, 336, 369, 372,
1117: 0, -2, 120, 105, 117, 119, 100, 83, 79, 80,
1118: 120, 295, 0, 88, 295, 36, 50, 0, 54, 47,
1119: 295, 49, 0, 335, 294, 0, 0, 0, 0, 0,
1120: 0, 0, 0, 0, 0, 317, 318, 295, 320, 321,
1121: 322, 323, 324, 325, 337, 0, 0, 0, 0, 345,
1122: 0, 247, 295, 39, 44, 0, 62, 63, 0, 168,
1123: 0, 361, 244, 358, 245, 359, 189, 61, 0, 0,
1124: 0, 0, 168, 0, 179, 134, 0, 186, 0, 76,
1125: 77, 78, 194, 0, 152, 153, 348, 349, 350, 202,
1126: 371, 101, 123, 125, 126, 130, 129, 131, 0, 0,
1127: 0, 0, 295, 0, 84, 98, 100, 0, 0, 0,
1128: 87, 0, 0, 0, 89, 90, 0, 39, 295, 53,
1129: 46, 295, 0, 295, 295, 295, 295, 295, 295, 295,
1130: 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
1131: 295, 290, 295, 335, 0, 0, 300, 295, 0, 0,
1132: 0, 295, 296, 297, 295, 301, 302, 303, 304, 305,
1133: 306, 307, 308, 309, 310, 0, 197, 338, 0, 0,
1134: 339, 341, 295, 295, 26, 0, 0, 32, 33, 37,
1135: 295, 171, 173, 0, 360, 362, 295, 71, 352, 187,
1136: 189, 189, 373, 337, 175, 176, 0, 181, -2, 295,
1137: 57, 351, 194, 60, 203, 0, 106, 127, 128, 132,
1138: 180, 118, 108, 110, 112, 0, 0, 121, 122, 0,
1139: 81, 100, 295, 0, 333, 25, 10, 0, 91, -2,
1140: -2, 92, 93, 94, 0, 0, 0, 29, 30, 51,
1141: 48, 59, 272, 273, 274, 275, 276, 277, 278, 279,
1142: 280, 281, 282, 283, 284, 285, 286, 287, 288, 0,
1143: 0, 292, 295, 298, 299, 295, 0, 312, 314, 313,
1144: 315, 316, 0, 0, 319, 0, 197, 197, 340, 342,
1145: 343, 0, 0, 248, 31, -2, 0, 0, 169, 168,
1146: 357, 363, 246, 191, 192, 353, 188, 190, 0, 0,
1147: 0, 75, 196, 195, 102, 133, 0, 113, 0, 114,
1148: 0, 104, 85, 99, 82, 0, 86, 96, 97, 95,
1149: 8, 28, 295, 0, 0, 0, 311, 332, 0, 199,
1150: 344, 198, 0, 326, 327, 204, 212, 0, 38, 40,
1151: 295, 0, 65, 356, 295, 193, 174, 177, 107, 34,
1152: 111, 115, 116, 11, 12, 13, 66, 15, 17, 0,
1153: 45, 289, 291, 0, 0, 328, 329, 0, 0, 208,
1154: 213, 0, 0, 295, 354, 39, 14, 0, 0, 45,
1155: 293, 330, 331, 200, 201, 205, 206, 211, 0, 41,
1156: 42, 0, 0, 0, 0, 207, 221, 224, 295, 61,
1157: 227, 228, 229, 0, 0, 0, 0, 337, 167, 240,
1158: 0, 214, 215, 216, 0, 218, 0, 0, 335, 271,
1159: 43, 35, 0, 0, 223, 0, 0, 0, 208, 295,
1160: 208, 233, 208, 236, 238, 295, 242, 0, 0, 0,
1161: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1162: 0, 0, 0, 0, 0, 217, 208, 0, 267, 295,
1163: 0, 16, 0, 222, 225, 226, 230, 0, 232, 208,
1164: 235, 208, 208, 0, 208, 249, 250, 251, 252, 253,
1165: 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
1166: 264, 265, 0, 0, 0, 0, 269, 295, 18, 208,
1167: 209, 295, 237, 239, 208, 243, 0, 0, 220, 0,
1168: 0, 231, 0, 241, 266, 219, 268, 0, 295, 270,
1169: 0, 208, 234 };
1170: # ifdef YYDEBUG
1171: # include "y.debug"
1172: # endif
1173:
1174: # define YYFLAG -1000
1175: # define YYERROR goto yyerrlab
1176: # define YYACCEPT return(0)
1177: # define YYABORT return(1)
1178:
1179: /* parser for yacc output */
1180:
1181: #ifdef YYDEBUG
1182: int yydebug = 0; /* 1 for debugging */
1183: #endif
1184: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
1185: int yychar = -1; /* current input token number */
1186: int yynerrs = 0; /* number of errors */
1187: short yyerrflag = 0; /* error recovery flag */
1188:
1189: yyparse()
1190: { short yys[YYMAXDEPTH];
1191: int yyj, yym;
1192: register YYSTYPE *yypvt;
1193: register int yystate, yyn;
1194: register short *yyps;
1195: register YYSTYPE *yypv;
1196: register short *yyxi;
1197:
1198: yystate = 0;
1199: yychar = -1;
1200: yynerrs = 0;
1201: yyerrflag = 0;
1202: yyps= &yys[-1];
1203: yypv= &yyv[-1];
1204:
1205: yystack: /* put a state and value onto the stack */
1206: #ifdef YYDEBUG
1207: if(yydebug >= 3)
1208: if(yychar < 0 || yytoknames[yychar] == 0)
1209: printf("char %d in %s", yychar, yystates[yystate]);
1210: else
1211: printf("%s in %s", yytoknames[yychar], yystates[yystate]);
1212: #endif
1213: if( ++yyps >= &yys[YYMAXDEPTH] ) {
1214: yyerror( "yacc stack overflow" );
1215: return(1);
1216: }
1217: *yyps = yystate;
1218: ++yypv;
1219: *yypv = yyval;
1220: yynewstate:
1221: yyn = yypact[yystate];
1222: if(yyn <= YYFLAG) goto yydefault; /* simple state */
1223: if(yychar<0) {
1224: yychar = yylex();
1225: #ifdef YYDEBUG
1226: if(yydebug >= 2) {
1227: if(yychar <= 0)
1228: printf("lex EOF\n");
1229: else if(yytoknames[yychar])
1230: printf("lex %s\n", yytoknames[yychar]);
1231: else
1232: printf("lex (%c)\n", yychar);
1233: }
1234: #endif
1235: if(yychar < 0)
1236: yychar = 0;
1237: }
1238: if((yyn += yychar) < 0 || yyn >= YYLAST)
1239: goto yydefault;
1240: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
1241: yychar = -1;
1242: yyval = yylval;
1243: yystate = yyn;
1244: if( yyerrflag > 0 ) --yyerrflag;
1245: goto yystack;
1246: }
1247: yydefault:
1248: /* default state action */
1249: if( (yyn=yydef[yystate]) == -2 ) {
1250: if(yychar < 0) {
1251: yychar = yylex();
1252: #ifdef YYDEBUG
1253: if(yydebug >= 2)
1254: if(yychar < 0)
1255: printf("lex EOF\n");
1256: else
1257: printf("lex %s\n", yytoknames[yychar]);
1258: #endif
1259: if(yychar < 0)
1260: yychar = 0;
1261: }
1262: /* look through exception table */
1263: for(yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate);
1264: yyxi += 2 ) ; /* VOID */
1265: while( *(yyxi+=2) >= 0 ){
1266: if( *yyxi == yychar ) break;
1267: }
1268: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
1269: }
1270: if( yyn == 0 ){ /* error */
1271: /* error ... attempt to resume parsing */
1272: switch( yyerrflag ){
1273: case 0: /* brand new error */
1274: #ifdef YYDEBUG
1275: yyerror("syntax error\n%s", yystates[yystate]);
1276: if(yytoknames[yychar])
1277: yyerror("saw %s\n", yytoknames[yychar]);
1278: else if(yychar >= ' ' && yychar < '\177')
1279: yyerror("saw `%c'\n", yychar);
1280: else if(yychar == 0)
1281: yyerror("saw EOF\n");
1282: else
1283: yyerror("saw char 0%o\n", yychar);
1284: #else
1285: yyerror( "syntax error" );
1286: #endif
1287: yyerrlab:
1288: ++yynerrs;
1289: case 1:
1290: case 2: /* incompletely recovered error ... try again */
1291: yyerrflag = 3;
1292: /* find a state where "error" is a legal shift action */
1293: while ( yyps >= yys ) {
1294: yyn = yypact[*yyps] + YYERRCODE;
1295: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
1296: yystate = yyact[yyn]; /* simulate a shift of "error" */
1297: goto yystack;
1298: }
1299: yyn = yypact[*yyps];
1300: /* the current yyps has no shift onn "error", pop stack */
1301: #ifdef YYDEBUG
1302: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
1303: #endif
1304: --yyps;
1305: --yypv;
1306: }
1307: /* there is no state on the stack with an error shift ... abort */
1308: yyabort:
1309: return(1);
1310: case 3: /* no shift yet; clobber input char */
1311: #ifdef YYDEBUG
1312: if( yydebug ) {
1313: printf("error recovery discards ");
1314: if(yytoknames[yychar])
1315: printf("%s\n", yytoknames[yychar]);
1316: else if(yychar >= ' ' && yychar < '\177')
1317: printf("`%c'\n", yychar);
1318: else if(yychar == 0)
1319: printf("EOF\n");
1320: else
1321: printf("char 0%o\n", yychar);
1322: }
1323: #endif
1324: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
1325: yychar = -1;
1326: goto yynewstate; /* try again in the same state */
1327: }
1328: }
1329: /* reduction by production yyn */
1330: #ifdef YYDEBUG
1331: if(yydebug) { char *s;
1332: printf("reduce %d in:\n\t", yyn);
1333: for(s = yystates[yystate]; *s; s++) {
1334: putchar(*s);
1335: if(*s == '\n' && *(s+1))
1336: putchar('\t');
1337: }
1338: }
1339: #endif
1340: yyps -= yyr2[yyn];
1341: yypvt = yypv;
1342: yypv -= yyr2[yyn];
1343: yyval = yypv[1];
1344: yym=yyn;
1345: /* consult goto table to find next state */
1346: yyn = yyr1[yyn];
1347: yyj = yypgo[yyn] + *yyps + 1;
1348: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
1349: switch(yym){
1350:
1351: case 1:
1352: # line 480 "gram.y"
1353: { return 2; } break;
1354: case 2:
1355: # line 481 "gram.y"
1356: { return 1; } break;
1357: case 3:
1358: # line 482 "gram.y"
1359: { return 0; } break;
1360: case 4:
1361: # line 484 "gram.y"
1362: {
1363: set_linkage(yypvt[-1].s);
1364: bl_level--;
1365: return 1;
1366: } break;
1367: case 5:
1368: # line 490 "gram.y"
1369: {
1370: set_linkage(0);
1371: bl_level++;
1372: return 1;
1373: } break;
1374: case 6:
1375: # line 495 "gram.y"
1376: { return 1; } break;
1377: case 7:
1378: # line 496 "gram.y"
1379: { return 1 ;} break;
1380: case 8:
1381: # line 501 "gram.y"
1382: { Ptreet t = tree_template::get(yypvt[-4].pn->string) ;
1383: Pexpr e = 0 ;
1384: if (t)
1385: e = t->expand(expr_unlist(yypvt[-2].el)) ;
1386: else error ("%s wasn't an expression template",
1387: yypvt[-4].pn->string) ;
1388: } break;
1389: case 9:
1390: # line 510 "gram.y"
1391: { templp->start() ; } break;
1392: case 10:
1393: # line 512 "gram.y"
1394: {templp->enter_parameters() ; } break;
1395: case 11:
1396: # line 514 "gram.y"
1397: {templp->end(yypvt[-0].pn);
1398: templp->in_progress = false ;
1399: goto mod;} break;
1400: case 12:
1401: # line 520 "gram.y"
1402: { goto mod; } break;
1403: case 13:
1404: # line 522 "gram.y"
1405: { goto mod; } break;
1406: case 14:
1407: # line 524 "gram.y"
1408: { Pname pn = yypvt[-1].pb->aggr();
1409: /* basetype:aggr() does not return the name for a forward */
1410: /* declaration, so extract it directly */
1411: yyval.p = (pn ? pn : yypvt[-1].pb->b_name) ;
1412: DECL_TYPE = 0; } break;
1413: case 15:
1414: # line 531 "gram.y"
1415: {templp->curr_tree_template = yypvt[-0].t ; } break;
1416: case 16:
1417: # line 533 "gram.y"
1418: {yypvt[-2].pn->n_initializer = yypvt[-0].pe ; /* actually a stmt */
1419: yyval.pn = yypvt[-2].pn; } break;
1420: case 17:
1421: # line 536 "gram.y"
1422: {templp->curr_tree_template = yypvt[-0].t ; } break;
1423: case 18:
1424: # line 538 "gram.y"
1425: {yypvt[-3].pn->n_initializer = yypvt[-1].pe ; /* actually a stmt */
1426: yyval.pn = yypvt[-3].pn ; } break;
1427: case 20:
1428: # line 544 "gram.y"
1429: { yyval.pn = Ncopy(yypvt[-0].pn) ;} break;
1430: case 21:
1431: # line 548 "gram.y"
1432: {
1433: /* if function declartion with arguments
1434: * need to make sure modified_tn is traversed */
1435: if ( yypvt[-0].pn != 0
1436: && yypvt[-0].pn->tp->base == FCT
1437: && Pfct(yypvt[-0].pn->tp)->nargs !=0 )
1438: goto mod;
1439: else {
1440: modified_tn = 0;
1441: curr_scope = 0;
1442: if (yypvt[-0].pn==0) yyval.i = 1;
1443: }
1444: } break;
1445: case 22:
1446: # line 562 "gram.y"
1447: { goto mod; } break;
1448: case 23:
1449: # line 564 "gram.y"
1450: { goto mod; } break;
1451: case 24:
1452: # line 566 "gram.y"
1453: { mod: if (modified_tn) {
1454: restore();
1455: modified_tn = 0;
1456: }
1457: local_blk = 0;
1458: curr_scope = 0;
1459: if (local_tn) {
1460: local_restore();
1461: local_tn = 0;
1462: }
1463:
1464: if (nested_tn) { // x::f(){}
1465: nested_restore();
1466: nested_tn = 0;
1467: nested_type = 0;
1468: }
1469: } break;
1470: case 25:
1471: # line 584 "gram.y"
1472: { Pname n = new name(make_name('A'));
1473: n->tp = new basetype(ASM,0);
1474: Pbase(n->tp)->b_name = Pname(yypvt[-2].s);
1475: yyval.p = n;
1476: } break;
1477: case 26:
1478: # line 592 "gram.y"
1479: {
1480: err_name = yypvt[-3].pn;
1481: if(err_name) err_name->n_initializer = yypvt[-1].pe;
1482: goto fix;
1483: } break;
1484: case 27:
1485: # line 598 "gram.y"
1486: {
1487: Ptype t;
1488: err_name = yypvt[-1].pn;
1489: fix:
1490: if (err_name == 0) {
1491: error("syntax error:TX");
1492: yyval.p = Ndata(defa_type,err_name);
1493: }
1494: else if ((t=err_name->tp) == 0) {
1495: error("TX for%n",err_name);
1496: yyval.p = Ndata(defa_type,err_name);
1497: }
1498: else if (t->base==FCT) {
1499: if (Pfct(t)->returns==0)
1500: yyval.p = Nfct(defa_type,err_name,0);
1501: else
1502: yyval.p = Ndata(0,err_name);
1503: }
1504: else {
1505: error("syntax error:TX for%k%n",t->base,err_name);
1506: yyval.p = Ndata(defa_type,err_name);
1507: }
1508: } break;
1509: case 28:
1510: # line 624 "gram.y"
1511: { Pname n = Nfct(yypvt[-5].p,yypvt[-4].pn,yypvt[-0].p);
1512: Fargdcl(n->tp,name_unlist(yypvt[-3].nl),n);
1513: Finit(n->tp) = yypvt[-1].pn;
1514: yyval.p = n;
1515: NOT_EXPECT_ID();
1516: //???POP_SCOPE(); // undef arg names
1517: } break;
1518: case 29:
1519: # line 632 "gram.y"
1520: {
1521: Pname n = Nfct(yypvt[-4].p,yypvt[-3].pn,dummy);
1522: Fargdcl(n->tp,name_unlist(yypvt[-2].nl),n);
1523: yypvt[-0].q->retval.pn = n;
1524: yyval.p = n;
1525: NOT_EXPECT_ID();
1526: } break;
1527: case 30:
1528: # line 640 "gram.y"
1529: {
1530: error(&yypvt[-3].pn->where,"syntax error -- did you forget a ';'?");
1531: Pname n = Nfct(yypvt[-4].p,yypvt[-3].pn,0);
1532: yyval.p = n;
1533: NOT_EXPECT_ID();
1534: //???POP_SCOPE(); // undef arg names
1535: } break;
1536: case 31:
1537: # line 650 "gram.y"
1538: { Pname n = Nfct(defa_type,yypvt[-4].pn,yypvt[-0].p);
1539: Fargdcl(n->tp,name_unlist(yypvt[-3].nl),n);
1540: if ( yypvt[-1].pn && yypvt[-1].pn->n_list &&
1541: ccl && ccl->csu == UNION )
1542: error( "multiple initializers in unionK %s::%n", yypvt[-4].pn->string, yypvt[-4].pn );
1543: Finit(n->tp) = yypvt[-1].pn;
1544: yyval.p = n;
1545: NOT_EXPECT_ID();
1546: //???POP_SCOPE(); // undef arg names
1547: } break;
1548: case 32:
1549: # line 661 "gram.y"
1550: {
1551: Pname n = Nfct(defa_type,yypvt[-3].pn,dummy);
1552: Fargdcl(n->tp,name_unlist(yypvt[-2].nl),n);
1553: yypvt[-0].q->retval.pn = n;
1554: yyval.p = n;
1555: NOT_EXPECT_ID();
1556: } break;
1557: case 33:
1558: # line 669 "gram.y"
1559: {
1560: error(&yypvt[-3].pn->where,"badD of%n -- did you forget a ';'?",yypvt[-3].pn);
1561: Pname n = Nfct(defa_type,yypvt[-3].pn,0);
1562: yyval.p = n;
1563: NOT_EXPECT_ID();
1564: //???POP_SCOPE(); // undef arg names
1565: } break;
1566: case 34:
1567: # line 679 "gram.y"
1568: {//PUSH_ARG_SCOPE
1569: arg_redec(yypvt[-0].pn);
1570: } break;
1571: case 35:
1572: # line 683 "gram.y"
1573: {
1574: Finit(yypvt[-3].pn->tp) = yypvt[-1].pn;
1575: Pfct(yypvt[-3].pn->tp)->body = Pblock(yypvt[-0].p);
1576: yyval.pn = yypvt[-3].pn;
1577: NOT_EXPECT_ID();
1578: //???POP_SCOPE(); // undef arg names
1579: } break;
1580: case 36:
1581: # line 694 "gram.y"
1582: {
1583: // if parsing implicit inline def, save body
1584: // of function for parsing after class def
1585: switch ( NEXTTOK() ) {
1586: case LC: case COLON:
1587: if ( in_class_decl ) {
1588: // mem or friend inline def
1589: // save text of mem_init & ftn
1590: la_backup(yychar,yylval);
1591: // yylval used as dummy...
1592: la_backup(FDEF, yylval);
1593: if ( yylval.q = save_text() )
1594: yychar = EMPTY;
1595: else { // syntax error
1596: // just parse in place
1597: yylex(); // FDEF
1598: yychar = yylex();
1599: }
1600: } // if in_class_decl
1601: break;
1602: default:
1603: la_backup(yychar,yylval);
1604: yychar = NO_ID; // 'graceful' recovery
1605: break;
1606: }
1607: } break;
1608: case 37:
1609: # line 722 "gram.y"
1610: { ++in_binit_list; } break;
1611: case 38:
1612: # line 723 "gram.y"
1613: {
1614: yyval.p = yypvt[-0].p;
1615: in_arg_list = 0;
1616: --in_binit_list;
1617: } break;
1618: case 39:
1619: # line 729 "gram.y"
1620: { yyval.p = 0; } break;
1621: case 40:
1622: # line 733 "gram.y"
1623: { yyval.p = yypvt[-0].p; } break;
1624: case 41:
1625: # line 735 "gram.y"
1626: { yyval.pn = yypvt[-0].pn; yyval.pn->n_list = yypvt[-2].pn; } break;
1627: case 42:
1628: # line 739 "gram.y"
1629: {
1630: yyval.pn = new name;
1631: yyval.pn->n_initializer = yypvt[-1].pe;
1632: } break;
1633: case 43:
1634: # line 744 "gram.y"
1635: {
1636: Pname n = Ncopy(yypvt[-3].pn);
1637: n->base = yypvt[-3].pn->base;
1638: n->tp = yypvt[-3].pn->tp;
1639: n->n_initializer = yypvt[-1].pe;
1640: yyval.pn = n;
1641: } break;
1642: case 44:
1643: # line 768 "gram.y"
1644: { if (yypvt[-0].pn == 0)
1645: error("badAD");
1646: else if (yypvt[-0].pn->tp->base == FCT)
1647: error("FD inAL (%n)",yypvt[-0].pn);
1648: else if (yypvt[-1].p)
1649: yypvt[-1].nl->add_list(yypvt[-0].pn);
1650: else
1651: yyval.nl = new nlist(yypvt[-0].pn);
1652: } break;
1653: case 45:
1654: # line 778 "gram.y"
1655: {
1656: yyval.p = 0;
1657: } break;
1658: case 47:
1659: # line 785 "gram.y"
1660: {
1661: if ( in_typedef ) {
1662: error("Tdef field");
1663: in_typedef = 0;
1664: }
1665: // ENTER_NAME(yypvt[-1].pn);
1666: } break;
1667: case 48:
1668: # line 793 "gram.y"
1669: { yyval.p = yypvt[-3].pn;
1670: yyval.pn->tp = new basetype(FIELD,yypvt[-0].pn);
1671: } break;
1672: case 49:
1673: # line 797 "gram.y"
1674: { yyval.p = new name;
1675: yyval.pn->tp = new basetype(FIELD,yypvt[-0].pn);
1676: if ( in_typedef ) {
1677: error("Tdef field");
1678: in_typedef = 0;
1679: }
1680: } break;
1681: case 50:
1682: # line 805 "gram.y"
1683: {
1684: // ENTER_NAME(yypvt[-1].pn);
1685: } break;
1686: case 51:
1687: # line 809 "gram.y"
1688: { Pexpr e = yypvt[-0].pe;
1689: if (e == dummy) error("emptyIr");
1690: yypvt[-3].pn->n_initializer = e;
1691: init_seen = 0;
1692: } break;
1693: case 52:
1694: # line 817 "gram.y"
1695: {
1696: if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn);
1697: if ( NEXTTOK() == CM && la_look() == TNAME )
1698: EXPECT_ID();
1699: } break;
1700: case 53:
1701: # line 823 "gram.y"
1702: { if (yypvt[-2].p)
1703: if (yypvt[-0].p)
1704: yypvt[-2].nl->add(yypvt[-0].pn);
1705: else
1706: error("DL syntax");
1707: else {
1708: if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn);
1709: error("DL syntax");
1710: }
1711: if ( NEXTTOK() == CM && la_look() == TNAME )
1712: EXPECT_ID();
1713: } break;
1714: case 54:
1715: # line 838 "gram.y"
1716: {
1717: extern int co_hack;
1718: co_hack = 1;
1719: /*$$ = Ndata($1,name_unlist($<nl>2));*/
1720: Pname n = Ndata(yypvt[-2].p,name_unlist(yypvt[-1].nl));
1721: //error('d',"data_dcl:type decl_list sm: %n%t in_typedef%t in_tag%n",n,n->tp,in_typedef,in_tag);
1722: if ( in_typedef && in_tag ) {
1723: if ( n->tp->check( in_tag->tp, 0 ))
1724: error("%nredefined: previous: %t now: %t", in_tag, in_tag->tp, n->tp );
1725: }
1726: in_typedef = 0;
1727: in_tag = 0;
1728: co_hack = 0;
1729: DECL_TYPE = 0;
1730: yyval.p = n;
1731: } break;
1732: case 55:
1733: # line 855 "gram.y"
1734: {
1735: yyval.p = yypvt[-1].pb->aggr();
1736: in_typedef = 0;
1737: in_tag = 0;
1738: DECL_TYPE = 0;
1739: } break;
1740: case 56:
1741: # line 866 "gram.y"
1742: { templp->parameters_in_progress++; } break;
1743: case 57:
1744: # line 867 "gram.y"
1745: { templp->parameters_in_progress--; } break;
1746: case 58:
1747: # line 869 "gram.y"
1748: { yyval.pn = templp->check_tname(yypvt[-0].pn) ; } break;
1749: case 59:
1750: # line 871 "gram.y"
1751: {
1752: yyval.pn = parametrized_typename(yypvt[-3].pn,
1753: (expr_unlist(yypvt[-1].el))) ;
1754: } break;
1755: case 60:
1756: # line 876 "gram.y"
1757: { extern Pbase any_type;
1758: error("%n was not a parametrized type.", yyval.pn) ;
1759: yyval.pn= yypvt[-3].pn->tdef() ;
1760: yyval.pn->tp = any_type ; } break;
1761: case 61:
1762: # line 884 "gram.y"
1763: {
1764: yyval.p = new basetype(yypvt[-0].t,0);
1765: if ( yypvt[-0].t == TYPEDEF ) in_typedef = yyval.pt;
1766: if (DECL_TYPE == -1) DECL_TYPE = 0;
1767: } break;
1768: case 62:
1769: # line 890 "gram.y"
1770: { yyval.p = new basetype(EXTERN,0);
1771: yyval.pb->b_linkage = yypvt[-0].s;
1772: if (DECL_TYPE == -1) DECL_TYPE = 0;
1773: } break;
1774: case 63:
1775: # line 895 "gram.y"
1776: {
1777: templp->check_tname(yypvt[-0].pn);
1778: yyval.p = new basetype(TYPE,yypvt[-0].pn);
1779: if (DECL_TYPE == -1) DECL_TYPE = 0;
1780: } break;
1781: case 64:
1782: # line 901 "gram.y"
1783: { // modified tn_list TNAME
1784: yyval.p = new basetype(TYPE,yypvt[-0].pn);
1785: //xxx qualifier currently ignored...
1786: if (DECL_TYPE == -1) DECL_TYPE = 0;
1787: } break;
1788: case 65:
1789: # line 907 "gram.y"
1790: {
1791: yyval.pb = parametrized_basetype(yypvt[-3].pn,(expr_unlist(yypvt[-1].el)));
1792: } break;
1793: case 68:
1794: # line 913 "gram.y"
1795: {
1796: if (DECL_TYPE == TNAME)
1797: yyval.p = new basetype(TYPE,yypvt[-0].pn);
1798: // else if (DECL_TYPE == TSCOPE)
1799: // yyval.p = 0;
1800: else
1801: if (DECL_TYPE == 0 &&
1802: yypvt[-0].p->base == TNAME)
1803: yyval.p = new basetype(TYPE,yypvt[-0].pn);
1804: else
1805: yyval.p = new basetype(yypvt[-0].t,0);
1806: DECL_TYPE = -1;
1807: } break;
1808: case 70:
1809: # line 930 "gram.y"
1810: {
1811: if ( DECL_TYPE != -1 ) {
1812: switch (yypvt[-1].pb->base) { Pbase bt;
1813: case COBJ: case EOBJ:
1814: bt = new basetype(0,0);
1815: *bt = *yypvt[-1].pb;
1816: DEL(yypvt[-1].pb);
1817: yypvt[-1].pb = bt;
1818: }
1819: yyval.p = yypvt[-1].pb->type_adj(yypvt[-0].t);
1820: }
1821: DECL_TYPE = 0;
1822: } break;
1823: case 71:
1824: # line 944 "gram.y"
1825: {
1826: //error('d',"decl_type: %d $1: %t $2: %n",DECL_TYPE,yypvt[-1].pb,yypvt[-0].pn);
1827: if ( DECL_TYPE != -1 )
1828: yyval.p = yypvt[-1].pb->name_adj(yypvt[-0].pn);
1829: /*XXX*/ else if(yypvt[-1].pb==0) yyval.p=new basetype(TYPE,yypvt[-0].pn);
1830: DECL_TYPE = 0;
1831: } break;
1832: case 72:
1833: # line 951 "gram.y"
1834: { yyval.p = yypvt[-1].pb->base_adj(yypvt[-0].pb); } break;
1835: case 73:
1836: # line 952 "gram.y"
1837: { yyval.p = yypvt[-1].pb->base_adj(yypvt[-0].pb); } break;
1838: case 74:
1839: # line 954 "gram.y"
1840: {
1841: if (DECL_TYPE == TYPE) {
1842: switch (yypvt[-1].pb->base) { Pbase bt;
1843: case COBJ: case EOBJ:
1844: bt = new basetype(0,0);
1845: *bt = *yypvt[-1].pb;
1846: DEL(yypvt[-1].pb);
1847: yypvt[-1].pb = bt;
1848: }
1849: yyval.p = yypvt[-1].pb->type_adj(yypvt[-0].t);
1850: }
1851: /*XXX*/ else if (DECL_TYPE == TSCOPE) {
1852: /*XXX*/ error('i',"type decl_marker(tscope)");
1853: /*XXX*/ // yyval.p = yypvt[-1].p;//ignore(?)
1854: /*XXX*/ }
1855: else
1856: yyval.p = yypvt[-1].pb->name_adj(yypvt[-0].pn);
1857: DECL_TYPE = -1;
1858: } break;
1859: case 75:
1860: # line 976 "gram.y"
1861: {yypvt[-2].el->add(new expr(ELIST,yypvt[-0].pe,NULL)) ; } break;
1862: case 76:
1863: # line 977 "gram.y"
1864: { yyval.el =
1865: new elist(new expr(ELIST,yypvt[-0].pe,NULL)); } break;
1866: case 77:
1867: # line 981 "gram.y"
1868: {yypvt[-0].pn->n_template_arg = template_actual_arg_dummy ;
1869: yyval.pe = yypvt[-0].pn; /* keep yacc happy */ } break;
1870: case 78:
1871: # line 984 "gram.y"
1872: { yyval.pe = yypvt[-0].pe ; } break;
1873: case 79:
1874: # line 989 "gram.y"
1875: { enumcheck:
1876: Ptype tx = yypvt[-0].pn->tp;
1877: yyval.p = yypvt[-0].p;
1878: if ( tx->base == TYPE ) {
1879: yyval.p = Pbase(tx)->b_name;
1880: tx = yyval.pn->tp;
1881: if ( tx->base != EOBJ
1882: || strcmp(yyval.pn->string,yypvt[-0].pn->string)
1883: )
1884: error("%n of type%t redeclared as enum.",yypvt[-0].pn,tx);
1885: } else if ( tx->base != EOBJ )
1886: error("%n of type%t redeclared as enum",yypvt[-0].pn,tx);
1887: } break;
1888: case 80:
1889: # line 1002 "gram.y"
1890: { goto enumcheck; } break;
1891: case 81:
1892: # line 1005 "gram.y"
1893: { yyval.p = end_enum(0,yypvt[-1].nl); } break;
1894: case 82:
1895: # line 1006 "gram.y"
1896: { yyval.p = end_enum(yypvt[-3].pn,yypvt[-1].nl); } break;
1897: case 83:
1898: # line 1007 "gram.y"
1899: { yyval.pb = (Pbase)yypvt[-0].pn->tp; } break;
1900: case 84:
1901: # line 1011 "gram.y"
1902: { if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn); } break;
1903: case 85:
1904: # line 1013 "gram.y"
1905: { if( yypvt[-0].p)
1906: if (yypvt[-2].p)
1907: yypvt[-2].nl->add(yypvt[-0].pn);
1908: else
1909: yyval.nl = new nlist(yypvt[-0].pn);
1910: } break;
1911: case 88:
1912: # line 1023 "gram.y"
1913: { yyval.pn = NULL ;} break;
1914: case 91:
1915: # line 1031 "gram.y"
1916: { templp->collect(yypvt[-1].t, yypvt[-0].pn) ; } break;
1917: case 92:
1918: # line 1033 "gram.y"
1919: { templp->collect(yypvt[-1].t, yypvt[-0].pn) ; } break;
1920: case 93:
1921: # line 1035 "gram.y"
1922: {templp->collect(Ndata(yypvt[-1].p,yypvt[-0].pn)); } break;
1923: case 94:
1924: # line 1041 "gram.y"
1925: { yyval.p = yypvt[-0].pn; } break;
1926: case 95:
1927: # line 1043 "gram.y"
1928: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp;
1929: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p;
1930: yyval.p = yypvt[-0].p;
1931: } break;
1932: case 96:
1933: # line 1048 "gram.y"
1934: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp;
1935: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p;
1936: } break;
1937: case 97:
1938: # line 1052 "gram.y"
1939: { Freturns(yypvt[-0].p) = yypvt[-1].pn->tp;
1940: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p;
1941: } break;
1942: case 98:
1943: # line 1058 "gram.y"
1944: { yyval.p = yypvt[-0].pn; yyval.pn->tp = moe_type; } break;
1945: case 99:
1946: # line 1060 "gram.y"
1947: { yyval.p = yypvt[-2].pn;
1948: yyval.pn->tp = moe_type;
1949: yyval.pn->n_initializer = yypvt[-0].pe;
1950: } break;
1951: case 100:
1952: # line 1065 "gram.y"
1953: { yyval.p = 0; } break;
1954: case 101:
1955: # line 1069 "gram.y"
1956: { parsing_class_members = 0;
1957: RESTORE_STATE();
1958: switch ( NEXTTOK() ) {
1959: case TYPE: case AGGR: case ENUM: case EOFTOK:
1960: error("`;' or declaratorX afterCD");
1961: la_backup(yychar,yylval);
1962: yychar = SM;
1963: break;
1964: }
1965: la_backup(yychar,yylval);
1966: yychar = -1;
1967: restore_text();
1968: ++bl_level; // scope weirdness!
1969: ++in_mem_fct;
1970: } break;
1971: case 102:
1972: # line 1085 "gram.y"
1973: {
1974: --in_mem_fct;
1975: --bl_level; // scope weirdness!
1976: if ( yychar == ID ) {
1977: // (yuk!) adjust lex level
1978: --yylval.pn->lex_level;
1979: }
1980: ccl->mem_list = name_unlist(yypvt[-3].nl);
1981: if ( --in_class_decl ) // nested class
1982: // continue to parse enclosing class
1983: parsing_class_members = 1;
1984: ccl->nest_list = nested_type;
1985: if ( nested_tn ) nested_restore();
1986: nested_type = nested_type_vec[in_class_decl];
1987: nested_tn = nested_tn_vec[in_class_decl];
1988: end_cl();
1989: declTag = 1;
1990: //POP_SCOPE();
1991: } break;
1992: case 103:
1993: # line 1105 "gram.y"
1994: { aggrcheck:
1995: yyval.pb = (Pbase)yypvt[-0].pn->tp;
1996: if ( yyval.p->base == TYPE ) {
1997: Pname nx = yyval.pb->b_name;
1998: yyval.pb = (Pbase)nx->tp;
1999: if ( yyval.p->base != COBJ
2000: || strcmp(nx->string,yypvt[-0].pn->string)
2001: )
2002: error("%n of type%t redeclared as%k.",yypvt[-0].pn,yyval.pb,yypvt[-1].t);
2003: } else if ( yyval.p->base != COBJ )
2004: error("%n of type%t redeclared as%k",yypvt[-0].pn,yyval.pb,yypvt[-1].t);
2005: check_tag();
2006: } break;
2007: case 104:
2008: # line 1119 "gram.y"
2009: {
2010: Pname p = parametrized_typename(yypvt[-3].pn, (expr_unlist(yypvt[-1].el))) ;
2011: yyval.pb = (Pbase)p->tp;
2012: check_tag();
2013: } break;
2014: case 105:
2015: # line 1125 "gram.y"
2016: {
2017: goto aggrcheck;
2018: } break;
2019: case 108:
2020: # line 1135 "gram.y"
2021: { yyval.pbc = yypvt[-0].pbc; } break;
2022: case 109:
2023: # line 1136 "gram.y"
2024: { yyval.pbc = 0; } break;
2025: case 111:
2026: # line 1141 "gram.y"
2027: { if (yypvt[-0].pbc) { yyval.pbc = yypvt[-0].pbc; yyval.pbc->next = yypvt[-2].pbc; } } break;
2028: case 112:
2029: # line 1144 "gram.y"
2030: { yyval.pbc = dobase(0,yypvt[-0].pn); } break;
2031: case 113:
2032: # line 1145 "gram.y"
2033: { yyval.pbc = dobase(yypvt[-1].t,yypvt[-0].pn); } break;
2034: case 114:
2035: # line 1146 "gram.y"
2036: { yyval.pbc = dobase(0,yypvt[-0].pn,yypvt[-1].t); } break;
2037: case 115:
2038: # line 1147 "gram.y"
2039: { yyval.pbc = dobase(yypvt[-2].t,yypvt[-0].pn,yypvt[-1].t); } break;
2040: case 116:
2041: # line 1148 "gram.y"
2042: { yyval.pbc = dobase(yypvt[-1].t,yypvt[-0].pn,yypvt[-2].t); } break;
2043: case 117:
2044: # line 1152 "gram.y"
2045: {//PUSH_CLASS_SCOPE(0);
2046: parsing_class_members = 1;
2047: yyval.p = start_cl(yypvt[-1].t,0,0);
2048: nested_tn_vec[in_class_decl] = nested_tn;
2049: nested_type_vec[in_class_decl++] = nested_type;
2050: nested_tn = nested_type = 0;
2051: SAVE_STATE();
2052: } break;
2053: case 118:
2054: # line 1162 "gram.y"
2055: { //PUSH_CLASS_SCOPE(yypvt[-2].pn->string);
2056: parsing_class_members = 1;
2057: yyval.p = start_cl(yypvt[-3].t,yypvt[-2].pn,yypvt[-1].pbc);
2058: nested_tn_vec[in_class_decl] = nested_tn;
2059: nested_type_vec[in_class_decl++] = nested_type;
2060: nested_tn = nested_type = 0;
2061: SAVE_STATE();
2062: } break;
2063: case 119:
2064: # line 1172 "gram.y"
2065: { yyval.p = yypvt[-0].pn; } break;
2066: case 120:
2067: # line 1173 "gram.y"
2068: { yyval.p=yypvt[-0].p; } break;
2069: case 121:
2070: # line 1176 "gram.y"
2071: { yyval.p = yypvt[-0].pn; } break;
2072: case 122:
2073: # line 1177 "gram.y"
2074: { yyval.p=yypvt[-0].p; } break;
2075: case 123:
2076: # line 1181 "gram.y"
2077: {
2078: if (yypvt[-0].p) {
2079: if (yypvt[-1].p)
2080: yypvt[-1].nl->add_list(yypvt[-0].pn);
2081: else
2082: yyval.nl = new nlist(yypvt[-0].pn);
2083: }
2084: } break;
2085: case 124:
2086: # line 1189 "gram.y"
2087: { yyval.p = 0; } break;
2088: case 125:
2089: # line 1191 "gram.y"
2090: {
2091: error( "ZizedTD must be atG, notC scope" );
2092: error('i', "cannot recover from previous error" );
2093: } break;
2094: case 132:
2095: # line 1204 "gram.y"
2096: { yyval.p = new name;
2097: yyval.pn->base = yypvt[-1].t;
2098: } break;
2099: case 133:
2100: # line 1214 "gram.y"
2101: { Pname n = Ncopy(yypvt[-1].pn);
2102: if (n->n_oper == TYPE) {
2103: error('s',"visibilityD for conversion operator");
2104: // n->tp = Ptype(n->n_initializer);
2105: n->tp = Ptype(n->cond);
2106: n->cond = 0;
2107: // n->n_initializer = 0;
2108: n->n_oper = 0;
2109: sig_name(n);
2110: }
2111: n->n_qualifier = yypvt[-2].pn;
2112: n->base = PR;
2113: yyval.p = n;
2114: } break;
2115: case 134:
2116: # line 1243 "gram.y"
2117: { yyval.p = yypvt[-0].pn; } break;
2118: case 135:
2119: # line 1245 "gram.y"
2120: { yyval.p = Ncopy(yypvt[-0].pn);
2121: yyval.pn->n_oper = DTOR;
2122: } break;
2123: case 136:
2124: # line 1249 "gram.y"
2125: { yyval.p = new name(oper_name(yypvt[-0].t));
2126: yyval.pn->n_oper = yypvt[-0].t;
2127: } break;
2128: case 137:
2129: # line 1253 "gram.y"
2130: { Pname n = yypvt[-0].pn;
2131: n->string = "_type";
2132: n->n_oper = TYPE;
2133: n->cond = Pexpr(n->tp);
2134: // n->n_initializer = Pexpr(n->tp);
2135: n->tp = 0;
2136: yyval.p = n;
2137: } break;
2138: case 152:
2139: # line 1277 "gram.y"
2140: { yyval.t = CALL; } break;
2141: case 153:
2142: # line 1278 "gram.y"
2143: { yyval.t = DEREF; } break;
2144: case 159:
2145: # line 1284 "gram.y"
2146: { yyval.t = NEW; } break;
2147: case 160:
2148: # line 1285 "gram.y"
2149: { yyval.t = DELETE; } break;
2150: case 161:
2151: # line 1286 "gram.y"
2152: { yyval.t = REF; } break;
2153: case 162:
2154: # line 1287 "gram.y"
2155: { yyval.t = CM; } break;
2156: case 163:
2157: # line 1288 "gram.y"
2158: { yyval.t = REFMUL;
2159: if (yypvt[-0].t == DOT) error(".* cannot be overloaded");
2160: } break;
2161: case 164:
2162: # line 1294 "gram.y"
2163: { if ( yypvt[-0].pn != sta_name ) {
2164: // error('d',"tn_list: tscope: pn1: %s", yypvt[-0].pn->string);
2165: Ptype t = yypvt[-0].pn->tp;
2166: while ( t->base == TYPE )
2167: t = Pbase(t)->b_name->tp;
2168: Pname n = Pbase(t)->b_name;
2169: if (NEXTTOK() == TNAME
2170: && strcmp(n->string,yylval.pn->string)==0){
2171: // ctor -- change to ID to avoid
2172: // parsing as type spec
2173: yychar = ID;
2174: yylval.pn = Ncopy(yylval.pn);
2175: yylval.pn->n_oper = TNAME;
2176: }
2177: }
2178: yyval.pn = yypvt[-0].pn;
2179: } break;
2180: case 165:
2181: # line 1312 "gram.y"
2182: { error('s', "CNs do not nest, use typedef x::y y_in_x"); } break;
2183: case 166:
2184: # line 1317 "gram.y"
2185: { yyval.pn = yypvt[-0].pn;
2186: //xxx qualifier currently ignored...
2187: // yyval.pn = Ncopy( yypvt[-0].pn );
2188: // yyval.pn->n_oper = TNAME;
2189: // yyval.pn->n_qualifier = yypvt[-1].pn;
2190: } break;
2191: case 167:
2192: # line 1324 "gram.y"
2193: { yyval.pn = yypvt[-0].pn;
2194: // yyval.pn = Ncopy( yypvt[-0].pn );
2195: // yyval.pn->n_oper = TNAME;
2196: } break;
2197: case 168:
2198: # line 1331 "gram.y"
2199: { yyval.i = 0; } break;
2200: case 169:
2201: # line 1333 "gram.y"
2202: { /* const/volatile function */
2203: switch ( yypvt[-0].t ) {
2204: case VOLATILE:
2205: error('s',"volatile functions");
2206: break;
2207: case CONST:
2208: yyval.i = (yypvt[-1].i | 1);
2209: break;
2210: default:
2211: if ( NEXTTOK() != SM
2212: && yychar != COLON
2213: && yychar != LC ) {
2214: la_backup(yychar,yylval);
2215: yylval.t = yypvt[-0].t;
2216: la_backup(TYPE,yylval);
2217: yylval.t = SM;
2218: yychar = SM;
2219: error("syntax error: unexpected%k (did you forget a `;'?)",yypvt[-0].t);
2220: } else error("FD syntax: unexpected%k",yypvt[-0].t);
2221: break;
2222: }
2223: } break;
2224: case 170:
2225: # line 1358 "gram.y"
2226: { Freturns(yypvt[-0].p) = yypvt[-1].pn->tp;
2227: yypvt[-1].pn->tp = yypvt[-0].pt;
2228: } break;
2229: case 171:
2230: # line 1362 "gram.y"
2231: { /* function with no argument */
2232: yypvt[-3].pn->tp = new fct(yypvt[-3].pn->tp,0,1);
2233: Pfct(yypvt[-3].pn->tp)->f_const = (yypvt[-0].i & 1);
2234: } break;
2235: case 172:
2236: # line 1367 "gram.y"
2237: { Pname n = yypvt[-1].pn;
2238: yyval.p = Ncopy(n);
2239: //??? what if tname is qualified ???
2240: if (ccl && strcmp(n->string,ccl->string)) n->hide();
2241: yyval.pn->n_oper = TNAME;
2242: Freturns(yypvt[-0].p) = yyval.pn->tp;
2243: yyval.pn->tp = yypvt[-0].pt;
2244: } break;
2245: case 173:
2246: # line 1380 "gram.y"
2247: {
2248: yypvt[-3].pn->tp = new fct(yypvt[-3].pn->tp,yypvt[-1].pn,1);
2249: in_arg_list = 0;
2250: end_al(yypvt[-2].pl,0);
2251: //RESTORE_STATE();
2252: //POP_SCOPE(); // similar to end_al()
2253: } break;
2254: case 174:
2255: # line 1388 "gram.y"
2256: {
2257: Pptr p = new ptr( PTR, 0 );
2258: Ptyp(p) = new basetype(TYPE,yypvt[-5].pn);
2259: Freturns( yypvt[-0].p ) = Ptype(p);
2260: yypvt[-2].pn->tp = yypvt[-0].pt;
2261: yyval.p = yypvt[-2].pn;
2262: if (DECL_TYPE == -1) DECL_TYPE = 0;
2263: } break;
2264: case 175:
2265: # line 1397 "gram.y"
2266: { yyval.p = Ncopy(yypvt[-3].pn);
2267: yyval.pn->n_oper = TNAME;
2268: yyval.pn->tp = new fct(0,yypvt[-1].pn,1);
2269: } break;
2270: case 176:
2271: # line 1402 "gram.y"
2272: { /* function with no argument */
2273: yyval.p = Ncopy(yypvt[-3].pn);
2274: yyval.pn->n_oper = TNAME;
2275: yyval.pn->tp = new fct(0,0,1);
2276: Pfct(yypvt[-3].pn->tp)->f_const = (yypvt[-0].i & 1);
2277: } break;
2278: case 177:
2279: # line 1409 "gram.y"
2280: { memptrdcl(yypvt[-3].pn,yypvt[-5].pn,yypvt[-0].pt,yypvt[-2].pn);
2281: yyval.p = yypvt[-2].p;
2282: } break;
2283: case 179:
2284: # line 1414 "gram.y"
2285: { yyval.p = Ncopy(yypvt[-0].pn);
2286: yyval.pn->n_qualifier = yypvt[-2].pn;
2287: error(strict_opt?0:'w',"`.' used for qualification; please use `::' (anachronism)");
2288: } break;
2289: case 180:
2290: # line 1419 "gram.y"
2291: { yyval.p = yypvt[-0].p;
2292: if ( yypvt[-1].pn != sta_name ) {
2293: set_scope(yypvt[-1].pn);
2294: yyval.pn->n_qualifier = yypvt[-1].pn;
2295: }
2296: } break;
2297: case 181:
2298: # line 1426 "gram.y"
2299: { yyval.p = Ncopy(yypvt[-0].pn);
2300: yyval.pn->n_qualifier = yypvt[-2].pn;
2301: error(ansi_opt?0:'w',"anachronism `.' used for qualification; please use `::'");
2302: if ( yypvt[-3].pn != sta_name ) {
2303: set_scope(yypvt[-3].pn);
2304: yypvt[-2].pn->n_qualifier = yypvt[-3].pn;
2305: }
2306: } break;
2307: case 182:
2308: # line 1444 "gram.y"
2309: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp;
2310: yypvt[-0].pn->tp = yypvt[-1].pt;
2311: yyval.p = yypvt[-0].p;
2312: } break;
2313: case 183:
2314: # line 1449 "gram.y"
2315: { yyval.p = Ncopy(yypvt[-0].pn);
2316: yyval.pn->n_oper = TNAME;
2317: // cannot evaluate at this point: defer until data_dcl
2318: if ( in_typedef ) {
2319: defer_check = 1;
2320: in_tag = yypvt[-0].pn;
2321: }
2322: yypvt[-0].pn->hide();
2323: defer_check = 0;
2324: yyval.pn->tp = yypvt[-1].pt;
2325: } break;
2326: case 184:
2327: # line 1461 "gram.y"
2328: { yyval.p = Ncopy(yypvt[-1].pn);
2329: yyval.pn->n_oper = TNAME;
2330: if ( in_typedef ) {
2331: defer_check = 1;
2332: in_tag = yypvt[-1].pn;
2333: }
2334: yypvt[-1].pn->hide();
2335: defer_check = 0;
2336: yyval.pn->tp = yypvt[-0].pt;
2337: } break;
2338: case 185:
2339: # line 1472 "gram.y"
2340: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp;
2341: yypvt[-1].pn->tp = yypvt[-0].pt;
2342: } break;
2343: case 186:
2344: # line 1489 "gram.y"
2345: {
2346: yyval.p = yypvt[-1].p;
2347: in_arg_list = 0;
2348: end_al(yypvt[-2].pl,0);
2349: //RESTORE_STATE();
2350: //POP_SCOPE(); // similar to end_al()
2351: } break;
2352: case 187:
2353: # line 1499 "gram.y"
2354: { yyval.p = yypvt[-0].pn; } break;
2355: case 188:
2356: # line 1501 "gram.y"
2357: { yyval.p = Ncopy(yypvt[-0].pn);
2358: yyval.pn->n_oper = TNAME;
2359: yypvt[-0].pn->hide();
2360: yyval.pn->tp = yypvt[-1].pt;
2361: } break;
2362: case 189:
2363: # line 1507 "gram.y"
2364: {
2365: yyval.p = new name;
2366: NOT_EXPECT_ID();
2367: } break;
2368: case 190:
2369: # line 1512 "gram.y"
2370: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp;
2371: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p;
2372: yyval.p = yypvt[-0].p;
2373: } break;
2374: case 191:
2375: # line 1517 "gram.y"
2376: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp;
2377: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p;
2378: } break;
2379: case 192:
2380: # line 1521 "gram.y"
2381: { Freturns(yypvt[-0].p) = yypvt[-1].pn->tp;
2382: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p;
2383: } break;
2384: case 193:
2385: # line 1537 "gram.y"
2386: {
2387: // error('d', "arg_lp arg_decl rp in_arg_list: %d", in_arg_list );
2388: yyval.p = yypvt[-1].p;
2389: in_arg_list = 0;
2390: end_al(yypvt[-2].pl,0);
2391: //RESTORE_STATE();
2392: //POP_SCOPE(); // similar to end_al()
2393: } break;
2394: case 194:
2395: # line 1548 "gram.y"
2396: { yyval.p = new name; } break;
2397: case 195:
2398: # line 1550 "gram.y"
2399: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp;
2400: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p;
2401: yyval.p = yypvt[-0].p;
2402: NOT_EXPECT_ID();
2403: } break;
2404: case 196:
2405: # line 1556 "gram.y"
2406: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp;
2407: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p;
2408: } break;
2409: case 197:
2410: # line 1561 "gram.y"
2411: { yyval.p = new name; } break;
2412: case 198:
2413: # line 1563 "gram.y"
2414: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp;
2415: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p;
2416: yyval.p = yypvt[-0].p;
2417: NOT_EXPECT_ID();
2418: } break;
2419: case 199:
2420: # line 1569 "gram.y"
2421: { Vtype(yypvt[-0].p) = yypvt[-1].pn->tp;
2422: yypvt[-1].pn->tp = (Ptype)yypvt[-0].p;
2423: } break;
2424: case 200:
2425: # line 1573 "gram.y"
2426: { Freturns(yypvt[-0].p) = yypvt[-2].pn->tp;
2427: yypvt[-2].pn->tp = yypvt[-0].pt;
2428: yyval.p = yypvt[-2].p;
2429: } break;
2430: case 201:
2431: # line 1578 "gram.y"
2432: { Vtype(yypvt[-0].p) = yypvt[-2].pn->tp;
2433: yypvt[-2].pn->tp = yypvt[-0].pt;
2434: yyval.p = yypvt[-2].p;
2435: } break;
2436: case 202:
2437: # line 1585 "gram.y"
2438: { yyval.p = new name; } break;
2439: case 203:
2440: # line 1587 "gram.y"
2441: { Ptyp(yypvt[-1].p) = yypvt[-0].pn->tp;
2442: yypvt[-0].pn->tp = (Ptype)yypvt[-1].p;
2443: yyval.p = yypvt[-0].p;
2444: } break;
2445: case 204:
2446: # line 1597 "gram.y"
2447: {
2448: yyval.p = 0;
2449: } break;
2450: case 205:
2451: # line 1601 "gram.y"
2452: {
2453: error( "ZizedTD must be atG, not local scope" );
2454: error('i', "cannot recover from previous error" );
2455: } break;
2456: case 206:
2457: # line 1606 "gram.y"
2458: {
2459: if (yypvt[-0].p)
2460: if (yypvt[-1].p)
2461: yypvt[-1].sl->add(yypvt[-0].ps);
2462: else {
2463: yyval.sl = new slist(yypvt[-0].ps);
2464: stmt_seen = 1;
2465: }
2466: } break;
2467: case 207:
2468: # line 1617 "gram.y"
2469: {
2470: yyval.p = yypvt[-0].p;
2471: if (yypvt[-0].p) stmt_seen = 1;
2472: } break;
2473: case 208:
2474: # line 1624 "gram.y"
2475: {
2476: yyval.p = 0;
2477: check_decl();
2478: } break;
2479: case 209:
2480: # line 1631 "gram.y"
2481: { yyval.p = yypvt[-1].p;
2482: /* if ($<pe>$ == dummy) error("empty condition");*/
2483: stmt_seen = 1;
2484: } break;
2485: case 210:
2486: # line 1638 "gram.y"
2487: {//PUSH_BLOCK_SCOPE
2488: cd_vec[cdi] = cd;
2489: stmt_vec[cdi] = stmt_seen;
2490: tn_vec[cdi] = modified_tn;
2491: lcl_blk_vec[cdi++] = local_blk;
2492: lcl_tn_vec[cdi] = local_tn;
2493: local_blk = 0;
2494: local_tn = 0;
2495: cd = 0;
2496: stmt_seen = 0;
2497: modified_tn = 0;
2498: } break;
2499: case 211:
2500: # line 1651 "gram.y"
2501: { Pname n = name_unlist(cd);
2502: Pstmt ss = stmt_unlist(yypvt[-1].sl);
2503: yyval.p = new block(yypvt[-3].l,n,ss,yypvt[-0].l);
2504: if ( local_tn ) local_restore();
2505: if ( local_blk ) local_name();
2506: if (modified_tn) restore();
2507: cd = cd_vec[--cdi];
2508: stmt_seen = stmt_vec[cdi];
2509: modified_tn = tn_vec[cdi];
2510: local_tn = lcl_tn_vec[cdi];
2511: local_blk = lcl_blk_vec[cdi];
2512: if (cdi < 0) error('i',"block level(%d)",cdi);
2513: NOT_EXPECT_ID();
2514: //POP_SCOPE(); // similar to end_al()
2515: } break;
2516: case 212:
2517: # line 1667 "gram.y"
2518: { yyval.p = new block(yypvt[-1].l,0,0,yypvt[-0].l); NOT_EXPECT_ID();} break;
2519: case 213:
2520: # line 1669 "gram.y"
2521: { yyval.p = new block(yypvt[-2].l,0,0,yypvt[-0].l); NOT_EXPECT_ID();} break;
2522: case 214:
2523: # line 1673 "gram.y"
2524: { yyval.p = new estmt(SM,curloc,yypvt[-0].pe,0); } break;
2525: case 215:
2526: # line 1675 "gram.y"
2527: { yyval.p = new stmt(BREAK,yypvt[-0].l,0); } break;
2528: case 216:
2529: # line 1677 "gram.y"
2530: { yyval.p = new stmt(CONTINUE,yypvt[-0].l,0); } break;
2531: case 217:
2532: # line 1679 "gram.y"
2533: { yyval.p = new lstmt(GOTO,yypvt[-1].l,yypvt[-0].pn,0); } break;
2534: case 218:
2535: # line 1680 "gram.y"
2536: { stmt_seen=1; } break;
2537: case 219:
2538: # line 1681 "gram.y"
2539: { yyval.p = new estmt(DO,yypvt[-4].l,yypvt[-0].pe,yypvt[-2].ps); } break;
2540: case 220:
2541: # line 1683 "gram.y"
2542: {
2543: if (stmt_seen)
2544: yyval.p = new estmt(ASM,curloc,(Pexpr)yypvt[-1].s,0);
2545: else {
2546: Pname n = new name(make_name('A'));
2547: n->tp = new basetype(ASM,(Pname)yypvt[-1].s);
2548: if (cd)
2549: cd->add_list(n);
2550: else
2551: cd = new nlist(n);
2552: yyval.p = 0;
2553: }
2554: } break;
2555: case 221:
2556: # line 1698 "gram.y"
2557: {
2558: if ( NEXTTOK() != SM ) {
2559: error("`;' missing afterS");
2560: la_backup(yychar,yylval);
2561: yychar = SM;
2562: }
2563: } break;
2564: case 224:
2565: # line 1709 "gram.y"
2566: { yyval.p = new estmt(SM,yypvt[-0].l,dummy,0); } break;
2567: case 225:
2568: # line 1711 "gram.y"
2569: { yyval.p = new estmt(RETURN,yypvt[-2].l,yypvt[-1].pe,0); } break;
2570: case 226:
2571: # line 1713 "gram.y"
2572: {
2573: error("local linkage specification");
2574: yyval.p = yypvt[-0].pn;
2575: } break;
2576: case 227:
2577: # line 1718 "gram.y"
2578: { Pname n = yypvt[-0].pn;
2579: if (n) {
2580: //error('d',"adding local dcl of%n%t ll %d in_typedef%t",n,n->tp,n->lex_level,in_typedef);
2581: if (stmt_seen) {
2582: yyval.p = new block(n->where,n,0);
2583: yyval.ps->base = DCL;
2584: }
2585: else {
2586: if (cd)
2587: cd->add_list(n);
2588: else
2589: cd = new nlist(n);
2590: yyval.p = 0;
2591: }
2592: } // if n
2593: } break;
2594: case 228:
2595: # line 1735 "gram.y"
2596: {
2597: Pname n = yypvt[-0].pn;
2598: error(&n->where,"%n's definition is nested (did you forget a ``}''?)",n);
2599: if (cd)
2600: cd->add_list(n);
2601: else
2602: cd = new nlist(n);
2603: yyval.p = 0;
2604: } break;
2605: case 230:
2606: # line 1746 "gram.y"
2607: { yyval.p = new ifstmt(yypvt[-2].l,yypvt[-1].pe,yypvt[-0].ps,0); } break;
2608: case 231:
2609: # line 1748 "gram.y"
2610: { yyval.p = new ifstmt(yypvt[-4].l,yypvt[-3].pe,yypvt[-2].ps,yypvt[-0].ps); } break;
2611: case 232:
2612: # line 1750 "gram.y"
2613: { yyval.p = new estmt(WHILE,yypvt[-2].l,yypvt[-1].pe,yypvt[-0].ps); } break;
2614: case 233:
2615: # line 1751 "gram.y"
2616: { stmt_seen=1; } break;
2617: case 234:
2618: # line 1752 "gram.y"
2619: { yyval.p = new forstmt(yypvt[-8].l,yypvt[-5].ps,yypvt[-4].pe,yypvt[-2].pe,yypvt[-0].ps); } break;
2620: case 235:
2621: # line 1754 "gram.y"
2622: { yyval.p = new estmt(SWITCH,yypvt[-2].l,yypvt[-1].pe,yypvt[-0].ps); } break;
2623: case 236:
2624: # line 1755 "gram.y"
2625: { yyval.p = yypvt[-1].pn; stmt_seen=1; } break;
2626: case 237:
2627: # line 1756 "gram.y"
2628: { Pname n = yypvt[-1].pn;
2629: yyval.p = new lstmt(LABEL,n->where,n,yypvt[-0].ps);
2630: } break;
2631: case 238:
2632: # line 1759 "gram.y"
2633: { yyval.p = new name(yypvt[-1].pn->string); stmt_seen=1; } break;
2634: case 239:
2635: # line 1760 "gram.y"
2636: { Pname n = yypvt[-1].pn;
2637: yyval.p = new lstmt(LABEL,n->where,n,yypvt[-0].ps);
2638: } break;
2639: case 240:
2640: # line 1763 "gram.y"
2641: { stmt_seen=1; } break;
2642: case 241:
2643: # line 1764 "gram.y"
2644: { if (yypvt[-2].pe == dummy) error("empty case label");
2645: yyval.p = new estmt(CASE,yypvt[-4].l,yypvt[-2].pe,yypvt[-0].ps);
2646: } break;
2647: case 242:
2648: # line 1767 "gram.y"
2649: { stmt_seen=1; } break;
2650: case 243:
2651: # line 1768 "gram.y"
2652: { yyval.p = new stmt(DEFAULT,yypvt[-3].l,yypvt[-0].ps); } break;
2653: case 244:
2654: # line 1775 "gram.y"
2655: { Pexpr e = expr_unlist(yypvt[-0].el);
2656: while (e && e->e1==dummy) {
2657: register Pexpr ee2 = e->e2;
2658: if (ee2) error("EX inEL");
2659: delete e;
2660: e = ee2;
2661: }
2662: yyval.p = e;
2663: } break;
2664: case 245:
2665: # line 1787 "gram.y"
2666: { yyval.el = new elist(new expr(ELIST,yypvt[-0].pe,0)); } break;
2667: case 246:
2668: # line 1789 "gram.y"
2669: { yypvt[-2].el->add(new expr(ELIST,yypvt[-0].pe,0)); } break;
2670: case 248:
2671: # line 1794 "gram.y"
2672: {
2673: if ( in_arg_list )
2674: error( "syntax error: IrL not permitted in AL" );
2675: else if ( in_binit_list )
2676: error( "syntax error: IrL not permitted inMIr" );
2677: else
2678: init_seen = 1;
2679: Pexpr e;
2680: if (yypvt[-1].p)
2681: e = yypvt[-1].pe;
2682: else
2683: e = new expr(ELIST,dummy,0);
2684: yyval.p = new expr(ILIST,e,0);
2685: } break;
2686: case 249:
2687: # line 1811 "gram.y"
2688: { bbinop: yyval.p = new expr(yypvt[-1].t,yypvt[-2].pe,yypvt[-0].pe); } break;
2689: case 250:
2690: # line 1812 "gram.y"
2691: { goto bbinop; } break;
2692: case 251:
2693: # line 1813 "gram.y"
2694: { goto bbinop; } break;
2695: case 252:
2696: # line 1814 "gram.y"
2697: { goto bbinop; } break;
2698: case 253:
2699: # line 1815 "gram.y"
2700: { goto bbinop; } break;
2701: case 254:
2702: # line 1816 "gram.y"
2703: { goto bbinop; } break;
2704: case 255:
2705: # line 1817 "gram.y"
2706: { goto bbinop; } break;
2707: case 256:
2708: # line 1818 "gram.y"
2709: { goto bbinop; } break;
2710: case 257:
2711: # line 1819 "gram.y"
2712: { goto bbinop; } break;
2713: case 258:
2714: # line 1820 "gram.y"
2715: { goto bbinop; } break;
2716: case 259:
2717: # line 1821 "gram.y"
2718: { goto bbinop; } break;
2719: case 260:
2720: # line 1822 "gram.y"
2721: { goto bbinop; } break;
2722: case 261:
2723: # line 1823 "gram.y"
2724: { goto bbinop; } break;
2725: case 262:
2726: # line 1824 "gram.y"
2727: { goto bbinop; } break;
2728: case 263:
2729: # line 1825 "gram.y"
2730: { goto bbinop; } break;
2731: case 264:
2732: # line 1826 "gram.y"
2733: { goto bbinop; } break;
2734: case 265:
2735: # line 1827 "gram.y"
2736: { goto bbinop; } break;
2737: case 266:
2738: # line 1829 "gram.y"
2739: { yyval.p = new qexpr(yypvt[-4].pe,yypvt[-2].pe,yypvt[-0].pe); } break;
2740: case 267:
2741: # line 1831 "gram.y"
2742: { yyval.p = new expr(DELETE,yypvt[-0].pe,0); } break;
2743: case 268:
2744: # line 1833 "gram.y"
2745: {
2746: if(yypvt[-2].pe != dummy) {
2747: if ( warning_opt || strict_opt )
2748: error(strict_opt?0:'w',"v in `delete[v]' is redundant; use `delete[] instead (anachronism)");
2749: }
2750: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe);
2751: } break;
2752: case 269:
2753: # line 1841 "gram.y"
2754: { yyval.p = new expr(GDELETE,yypvt[-0].pe,0); } break;
2755: case 270:
2756: # line 1843 "gram.y"
2757: {
2758: if(yypvt[-2].pe != dummy) {
2759: if ( warning_opt || strict_opt )
2760: error(strict_opt?0:'w',"v in `::delete[v]' is redundant; use `::delete[] instead (anachronism)");
2761: }
2762: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe);
2763: } break;
2764: case 272:
2765: # line 1854 "gram.y"
2766: { binop: yyval.p = new expr(yypvt[-1].t,yypvt[-2].pe,yypvt[-0].pe); } break;
2767: case 273:
2768: # line 1855 "gram.y"
2769: { goto binop; } break;
2770: case 274:
2771: # line 1856 "gram.y"
2772: { goto binop; } break;
2773: case 275:
2774: # line 1857 "gram.y"
2775: { goto binop; } break;
2776: case 276:
2777: # line 1858 "gram.y"
2778: { goto binop; } break;
2779: case 277:
2780: # line 1859 "gram.y"
2781: { goto binop; } break;
2782: case 278:
2783: # line 1860 "gram.y"
2784: { goto binop; } break;
2785: case 279:
2786: # line 1861 "gram.y"
2787: { goto binop; } break;
2788: case 280:
2789: # line 1862 "gram.y"
2790: { goto binop; } break;
2791: case 281:
2792: # line 1863 "gram.y"
2793: { goto binop; } break;
2794: case 282:
2795: # line 1864 "gram.y"
2796: { goto binop; } break;
2797: case 283:
2798: # line 1865 "gram.y"
2799: { goto binop; } break;
2800: case 284:
2801: # line 1866 "gram.y"
2802: { goto binop; } break;
2803: case 285:
2804: # line 1867 "gram.y"
2805: { goto binop; } break;
2806: case 286:
2807: # line 1868 "gram.y"
2808: { goto binop; } break;
2809: case 287:
2810: # line 1869 "gram.y"
2811: { goto binop; } break;
2812: case 288:
2813: # line 1870 "gram.y"
2814: { goto binop; } break;
2815: case 289:
2816: # line 1872 "gram.y"
2817: { yyval.p = new qexpr(yypvt[-4].pe,yypvt[-2].pe,yypvt[-0].pe); } break;
2818: case 290:
2819: # line 1874 "gram.y"
2820: { yyval.p = new expr(DELETE,yypvt[-0].pe,0); } break;
2821: case 291:
2822: # line 1876 "gram.y"
2823: {
2824: if(yypvt[-2].pe != dummy) {
2825: if ( warning_opt || strict_opt )
2826: error(strict_opt?0:'w',"v in `delete[v]' is redundant; use `delete[] instead (anachronism)");
2827: }
2828: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe);
2829: } break;
2830: case 292:
2831: # line 1884 "gram.y"
2832: { yyval.p = new expr(GDELETE,yypvt[-0].pe,0); } break;
2833: case 293:
2834: # line 1886 "gram.y"
2835: {
2836: if(yypvt[-2].pe != dummy) {
2837: if ( warning_opt || strict_opt )
2838: error(strict_opt?0:'w',"v in `::delete[v]' is redundant; use `::delete[] instead (anachronism)");
2839: }
2840: yyval.p = new expr(DELETE,yypvt[-0].pe,yypvt[-2].pe);
2841: } break;
2842: case 294:
2843: # line 1893 "gram.y"
2844: {
2845: init_seen = 0;
2846: } break;
2847: case 295:
2848: # line 1897 "gram.y"
2849: { yyval.p = dummy; } break;
2850: case 296:
2851: # line 1900 "gram.y"
2852: { goto new1; } break;
2853: case 297:
2854: # line 1902 "gram.y"
2855: { new1:
2856: Ptype t = yypvt[-0].pn->tp;
2857: yyval.p = new texpr(NEW,t,0);
2858: } break;
2859: case 298:
2860: # line 1906 "gram.y"
2861: { goto new3; } break;
2862: case 299:
2863: # line 1908 "gram.y"
2864: { new3:
2865: Ptype t = yypvt[-0].pn->tp;
2866: yyval.p = new texpr(GNEW,t,0);
2867: } break;
2868: case 300:
2869: # line 1913 "gram.y"
2870: { yyval.p = new expr(yypvt[-0].t,yypvt[-1].pe,0); } break;
2871: case 301:
2872: # line 1915 "gram.y"
2873: { yyval.p = new texpr(CAST,yypvt[-1].pn->tp,yypvt[-0].pe); } break;
2874: case 302:
2875: # line 1917 "gram.y"
2876: { yyval.p = new expr(DEREF,yypvt[-0].pe,0); } break;
2877: case 303:
2878: # line 1919 "gram.y"
2879: { yyval.p = new expr(ADDROF,0,yypvt[-0].pe); } break;
2880: case 304:
2881: # line 1921 "gram.y"
2882: { yyval.p = new expr(UMINUS,0,yypvt[-0].pe); } break;
2883: case 305:
2884: # line 1923 "gram.y"
2885: { yyval.p = new expr(UPLUS,0,yypvt[-0].pe); } break;
2886: case 306:
2887: # line 1925 "gram.y"
2888: { yyval.p = new expr(NOT,0,yypvt[-0].pe); } break;
2889: case 307:
2890: # line 1927 "gram.y"
2891: { yyval.p = new expr(COMPL,0,yypvt[-0].pe); } break;
2892: case 308:
2893: # line 1929 "gram.y"
2894: { yyval.p = new expr(yypvt[-1].t,0,yypvt[-0].pe); } break;
2895: case 309:
2896: # line 1931 "gram.y"
2897: {
2898: yyval.p = new texpr(SIZEOF,0,yypvt[-0].pe);
2899: in_sizeof = 0;
2900: } break;
2901: case 310:
2902: # line 1936 "gram.y"
2903: {
2904: yyval.p = new texpr(SIZEOF,yypvt[-0].pn->tp,0);
2905: in_sizeof = 0;
2906: } break;
2907: case 311:
2908: # line 1941 "gram.y"
2909: { yyval.p = new expr(DEREF,yypvt[-3].pe,yypvt[-1].pe); } break;
2910: case 312:
2911: # line 1943 "gram.y"
2912: { yyval.p = new ref(REF,yypvt[-2].pe,yypvt[-0].pn); } break;
2913: case 313:
2914: # line 1945 "gram.y"
2915: { yyval.p = new expr(yypvt[-1].t,yypvt[-2].pe,yypvt[-0].pe); } break;
2916: case 314:
2917: # line 1947 "gram.y"
2918: { yyval.p = new ref(REF,yypvt[-2].pe,Ncopy(yypvt[-0].pn)); } break;
2919: case 315:
2920: # line 1949 "gram.y"
2921: { yyval.p = new ref(DOT,yypvt[-2].pe,yypvt[-0].pn); } break;
2922: case 316:
2923: # line 1951 "gram.y"
2924: { yyval.p = new ref(DOT,yypvt[-2].pe,Ncopy(yypvt[-0].pn)); } break;
2925: case 318:
2926: # line 1954 "gram.y"
2927: {
2928: if ( init_seen )
2929: error( "syntax error:IrL illegal within ()");
2930: } break;
2931: case 319:
2932: # line 1960 "gram.y"
2933: {
2934: if ( yypvt[-1].p == dummy )
2935: error("syntax error: nullE");
2936: yyval.p = yypvt[-1].p;
2937: } break;
2938: case 320:
2939: # line 1966 "gram.y"
2940: { yyval.p = zero; } break;
2941: case 321:
2942: # line 1968 "gram.y"
2943: { yyval.p = new expr(ICON,0,0);
2944: yyval.pe->string = copy_if_need_be(yypvt[-0].s);
2945: } break;
2946: case 322:
2947: # line 1972 "gram.y"
2948: { yyval.p = new expr(FCON,0,0);
2949: yyval.pe->string = copy_if_need_be(yypvt[-0].s);
2950: } break;
2951: case 323:
2952: # line 1976 "gram.y"
2953: { yyval.p = new expr(STRING,0,0);
2954: yyval.pe->string = copy_if_need_be(yypvt[-0].s);
2955: } break;
2956: case 324:
2957: # line 1980 "gram.y"
2958: { yyval.p = new expr(CCON,0,0);
2959: yyval.pe->string = copy_if_need_be(yypvt[-0].s);
2960: } break;
2961: case 325:
2962: # line 1984 "gram.y"
2963: { yyval.p = new expr(THIS,0,0); } break;
2964: case 326:
2965: # line 1988 "gram.y"
2966: { yyval.p = new texpr(VALUE,tok_to_type(yypvt[-3].t),yypvt[-1].pe); } break;
2967: case 327:
2968: # line 1993 "gram.y"
2969: { yyval.p = new texpr(VALUE,yypvt[-3].pn->tp,yypvt[-1].pe); } break;
2970: case 328:
2971: # line 1994 "gram.y"
2972: { goto new2; } break;
2973: case 329:
2974: # line 1996 "gram.y"
2975: { new2:
2976: Ptype t = yypvt[-0].pn->tp;
2977: yyval.p=new texpr(NEW,t,0);
2978: yyval.pe->e2 = yypvt[-2].pe;
2979: } break;
2980: case 330:
2981: # line 2001 "gram.y"
2982: { goto new4; } break;
2983: case 331:
2984: # line 2003 "gram.y"
2985: { new4:
2986: Ptype t = yypvt[-0].pn->tp;
2987: yyval.p = new texpr(GNEW,t,0);
2988: yyval.pe->e2 = yypvt[-2].pe;
2989: } break;
2990: case 332:
2991: # line 2009 "gram.y"
2992: {
2993: Pexpr ee = yypvt[-1].pe;
2994: Pexpr e = yypvt[-3].pe;
2995: if (e->base==NEW || e->base==GNEW)
2996: e->e1 = ee;
2997: else
2998: yyval.p = new call(e,ee);
2999: } break;
3000: case 333:
3001: # line 2021 "gram.y"
3002: {
3003: yyval.pn =parametrized_typename(yypvt[-3].pn,(expr_unlist(yypvt[-1].el)));
3004: } break;
3005: case 334:
3006: # line 2027 "gram.y"
3007: {
3008: yyval.pn = yypvt[-0].pn;
3009: curr_scope = yypvt[-0].pn;
3010: } break;
3011: case 335:
3012: # line 2031 "gram.y"
3013: { yyval.pn = sta_name; } break;
3014: case 336:
3015: # line 2032 "gram.y"
3016: { yyval.pn = yypvt[-1].pn; } break;
3017: case 337:
3018: # line 2037 "gram.y"
3019: { yyval.p = yypvt[-0].pn; } break;
3020: case 338:
3021: # line 2039 "gram.y"
3022: { yyval.p = Ncopy(yypvt[-0].pn);
3023: yyval.pn->n_qualifier = yypvt[-1].pn;
3024: } break;
3025: case 339:
3026: # line 2043 "gram.y"
3027: { yyval.p = new name(oper_name(yypvt[-0].t));
3028: yyval.pn->n_oper = yypvt[-0].t;
3029: } break;
3030: case 340:
3031: # line 2047 "gram.y"
3032: { yyval.p = new name(oper_name(yypvt[-0].t));
3033: yyval.pn->n_oper = yypvt[-0].t;
3034: yyval.pn->n_qualifier = yypvt[-2].pn;
3035: } break;
3036: case 341:
3037: # line 2052 "gram.y"
3038: { yyval.p = yypvt[-0].p;
3039: sig_name(yyval.pn);
3040: } break;
3041: case 342:
3042: # line 2056 "gram.y"
3043: { yyval.p = yypvt[-0].p;
3044: sig_name(yyval.pn);
3045: yyval.pn->n_qualifier = yypvt[-2].pn;
3046: } break;
3047: case 343:
3048: # line 2061 "gram.y"
3049: {
3050: if (strcmp(yypvt[-2].pn->string,yypvt[-0].pn->string)) error("syntax error: inconsistent destructor notation");
3051: yyval.p = new name(oper_name(DTOR));
3052: yyval.pn->n_oper = DTOR;
3053: yyval.pn->n_qualifier = yypvt[-2].pn;
3054: } break;
3055: case 344:
3056: # line 2073 "gram.y"
3057: { yyval.p = Ncast(yypvt[-2].p,yypvt[-1].pn); } break;
3058: case 345:
3059: # line 2076 "gram.y"
3060: { check_cast(); } break;
3061: case 346:
3062: # line 2080 "gram.y"
3063: {
3064: TOK t = yypvt[-0].t;
3065:
3066: switch (t) {
3067: case FRIEND:
3068: case OVERLOAD:
3069: case REGISTER:
3070: case STATIC:
3071: case EXTERN:
3072: case AUTO:
3073: case VIRTUAL:
3074: error("%k in operatorT",t);
3075: t = INT;
3076:
3077: }
3078:
3079: yyval.p = new basetype(t,0);
3080:
3081: } break;
3082: case 347:
3083: # line 2099 "gram.y"
3084: { yyval.p = new basetype(TYPE,yypvt[-0].pn); } break;
3085: case 348:
3086: # line 2101 "gram.y"
3087: {
3088: if ( DECL_TYPE != -1 ) {
3089: switch (yypvt[-1].pb->base) { Pbase bt;
3090: case COBJ: case EOBJ:
3091: bt = new basetype(0,0);
3092: *bt = *yypvt[-1].pb;
3093: DEL(yypvt[-1].pb);
3094: yypvt[-1].pb = bt;
3095: }
3096: yyval.p = yypvt[-1].pb->type_adj(yypvt[-0].t);
3097: }
3098: DECL_TYPE = 0;
3099: } break;
3100: case 349:
3101: # line 2115 "gram.y"
3102: {
3103: if ( DECL_TYPE != -1 )
3104: yyval.p = yypvt[-1].pb->name_adj(yypvt[-0].pn);
3105: DECL_TYPE = 0;
3106: } break;
3107: case 350:
3108: # line 2122 "gram.y"
3109: { yyval.p = Ncast(yypvt[-1].p,yypvt[-0].pn); } break;
3110: case 351:
3111: # line 2125 "gram.y"
3112: { yyval.p = Ncast(yypvt[-1].p,yypvt[-0].pn); } break;
3113: case 352:
3114: # line 2128 "gram.y"
3115: {
3116: // ENTER_NAME(yypvt[-0].pn);
3117: yyval.p = Ndata(yypvt[-1].p,yypvt[-0].pn);
3118: } break;
3119: case 353:
3120: # line 2133 "gram.y"
3121: {
3122: // ENTER_NAME(yypvt[-1].pn);
3123: } break;
3124: case 354:
3125: # line 2137 "gram.y"
3126: { yyval.p = Ndata(yypvt[-4].p,yypvt[-3].pn);
3127: yyval.pn->n_initializer = yypvt[-0].pe;
3128: } break;
3129: case 355:
3130: # line 2143 "gram.y"
3131: {//PUSH_ARG_SCOPE
3132: //SAVE_STATE();
3133: check_decl();
3134: in_arg_list=1;
3135: yyval.pl = modified_tn;
3136: modified_tn = 0;
3137: } break;
3138: case 356:
3139: # line 2153 "gram.y"
3140: {
3141: yyval.p = new fct(0,name_unlist(yypvt[-3].nl),yypvt[-2].t);
3142: if ( NEXTTOK() != COLON ) in_arg_list=0;
3143: //in_arg_list=0;
3144: Pfct(yyval.pt)->f_const = (yypvt[-0].i & 1);
3145: if ( parsing_class_members
3146: || (NEXTTOK()!=LC && yychar!=COLON)) {
3147: end_al(yypvt[-4].pl,1);
3148: //POP_SCOPE(); // similar to end_al()
3149: } else
3150: end_al(yypvt[-4].pl,0);
3151: //RESTORE_STATE();
3152: } break;
3153: case 357:
3154: # line 2169 "gram.y"
3155: {
3156: if (yypvt[-0].p)
3157: if (yypvt[-2].p)
3158: yypvt[-2].nl->add(yypvt[-0].pn);
3159: else {
3160: error("AD syntax");
3161: yyval.nl = new nlist(yypvt[-0].pn);
3162: }
3163: else
3164: error("AD syntax");
3165: } break;
3166: case 358:
3167: # line 2181 "gram.y"
3168: {
3169: if (yypvt[-0].p) yyval.nl = new nlist(yypvt[-0].pn);
3170: } break;
3171: case 360:
3172: # line 2187 "gram.y"
3173: { yyval.p = 0; } break;
3174: case 361:
3175: # line 2191 "gram.y"
3176: { yyval.t = 1; } break;
3177: case 362:
3178: # line 2193 "gram.y"
3179: { yyval.t = ELLIPSIS; } break;
3180: case 363:
3181: # line 2195 "gram.y"
3182: { yyval.t = ELLIPSIS; } break;
3183: case 364:
3184: # line 2199 "gram.y"
3185: {
3186: yyval.p = new ptr(PTR,0);
3187: EXPECT_ID();
3188: } break;
3189: case 365:
3190: # line 2204 "gram.y"
3191: {
3192: yyval.p = new ptr(RPTR,0);
3193: EXPECT_ID();
3194: } break;
3195: case 366:
3196: # line 2209 "gram.y"
3197: { yyval.p = doptr(PTR,yypvt[-0].t); } break;
3198: case 367:
3199: # line 2211 "gram.y"
3200: {
3201: switch ( yypvt[-0].t ) {
3202: case CONST:
3203: yypvt[-1].pp->b_const = 1; break;
3204: case VOLATILE:
3205: error('w',"\"volatile\" not implemented (ignored)");
3206: break;
3207: default:
3208: error( "syntax error: *%k", yypvt[-0].t );
3209: }
3210: yyval.p = yypvt[-1].pp;
3211: } break;
3212: case 368:
3213: # line 2224 "gram.y"
3214: { yyval.p = doptr(RPTR,yypvt[-0].t); } break;
3215: case 369:
3216: # line 2226 "gram.y"
3217: { goto memptr1; } break;
3218: case 370:
3219: # line 2228 "gram.y"
3220: {
3221: memptr1:
3222: yyval.p = new ptr(PTR,0);
3223: yyval.pp->memof = Pclass(Pbase(yypvt[-0].pn->tp)->b_name->tp);
3224: EXPECT_ID();
3225: } break;
3226: case 371:
3227: # line 2235 "gram.y"
3228: {
3229: yypvt[-1].t = yypvt[-0].t;
3230: goto memptr2;
3231: } break;
3232: case 372:
3233: # line 2240 "gram.y"
3234: {
3235: memptr2:
3236: yyval.p = doptr(PTR,yypvt[-0].t);
3237: yyval.pp->memof = Pclass(Pbase(yypvt[-1].pn->tp)->b_name->tp);
3238: } break;
3239: case 373:
3240: # line 2247 "gram.y"
3241: { yyval.p = new vec(0,yypvt[-1].pe!=dummy?yypvt[-1].pe:0 ); } break;
3242: case 374:
3243: # line 2248 "gram.y"
3244: { yyval.p = new vec(0,0); } break;
3245: }
3246: goto yystack; /* stack new state and value */
3247: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.