|
|
1.1 root 1: # define CSETLIT 257
2: # define EOFX 258
3: # define IDENT 259
4: # define INTLIT 260
5: # define REALLIT 261
6: # define STRINGLIT 262
7: # define BREAK 263
8: # define BY 264
9: # define CASE 265
10: # define CREATE 266
11: # define DEFAULT 267
12: # define DO 268
13: # define DYNAMIC 269
14: # define ELSE 270
15: # define END 271
16: # define EVERY 272
17: # define FAIL 273
18: # define GLOBAL 274
19: # define IF 275
20: # define INITIAL 276
21: # define LINK 277
22: # define LOCAL 278
23: # define NEXT 279
24: # define NOT 280
25: # define OF 281
26: # define PROCEDURE 282
27: # define RECORD 283
28: # define REPEAT 284
29: # define RETURN 285
30: # define STATIC 286
31: # define SUSPEND 287
32: # define THEN 288
33: # define TO 289
34: # define UNTIL 290
35: # define WHILE 291
36: # define ASSIGN 292
37: # define AT 293
38: # define AUGACT 294
39: # define AUGAND 295
40: # define AUGEQ 296
41: # define AUGEQV 297
42: # define AUGGE 298
43: # define AUGGT 299
44: # define AUGLE 300
45: # define AUGLT 301
46: # define AUGNE 302
47: # define AUGNEQV 303
48: # define AUGSEQ 304
49: # define AUGSGE 305
50: # define AUGSGT 306
51: # define AUGSLE 307
52: # define AUGSLT 308
53: # define AUGSNE 309
54: # define BACKSLASH 310
55: # define BANG 311
56: # define BAR 312
57: # define CARET 313
58: # define CARETASGN 314
59: # define COLON 315
60: # define COMMA 316
61: # define CONCAT 317
62: # define CONCATASGN 318
63: # define CONJUNC 319
64: # define DIFF 320
65: # define DIFFASGN 321
66: # define DOT 322
67: # define EQUIV 323
68: # define INTER 324
69: # define INTERASGN 325
70: # define LBRACE 326
71: # define LBRACK 327
72: # define LCONCAT 328
73: # define LCONCATASGN 329
74: # define LEXEQ 330
75: # define LEXGE 331
76: # define LEXGT 332
77: # define LEXLE 333
78: # define LEXLT 334
79: # define LEXNE 335
80: # define LPAREN 336
81: # define MCOLON 337
82: # define MINUS 338
83: # define MINUSASGN 339
84: # define MOD 340
85: # define MODASGN 341
86: # define NOTEQUIV 342
87: # define NUMEQ 343
88: # define NUMGE 344
89: # define NUMGT 345
90: # define NUMLE 346
91: # define NUMLT 347
92: # define NUMNE 348
93: # define PCOLON 349
94: # define PLUS 350
95: # define PLUSASGN 351
96: # define QMARK 352
97: # define RBRACE 353
98: # define RBRACK 354
99: # define REVASSIGN 355
100: # define REVSWAP 356
101: # define RPAREN 357
102: # define SCANASGN 358
103: # define SEMICOL 359
104: # define SLASH 360
105: # define SLASHASGN 361
106: # define STAR 362
107: # define STARASGN 363
108: # define SWAP 364
109: # define TILDE 365
110: # define UNION 366
111: # define UNIONASGN 367
112:
113: # line 123 "icon.g"
114: #include "itran.h"
115: #include "sym.h"
116: #include "tree.h"
117: #include "../h/keyword.h"
118: #define YYSTYPE nodeptr
119: #define YYMAXDEPTH 500
120: #define yyclearin yychar = -1
121: #define yyerrok yyerrflag = 0
122: extern int yychar;
123: extern short yyerrflag;
124: #ifndef YYMAXDEPTH
125: #define YYMAXDEPTH 150
126: #endif
127: #ifndef YYSTYPE
128: #define YYSTYPE int
129: #endif
130: YYSTYPE yylval, yyval;
131:
132: # line 134 "icon.g"
133: int argcnt;
134: int idflag;
135: int i;
136: #ifdef XPX
137: int cstack[50]; /* context stack expression lists */
138: int stacktop = 0; /* stack top */
139: nodeptr cswitch();
140: #endif XPX
141: # define YYERRCODE 256
142:
143: # line 469 "icon.g"
144:
145:
146: #ifdef XPX
147: pushcs(val)
148: int val;
149: {
150: stacktop = stacktop + 1;
151: cstack[stacktop] = val;
152: }
153:
154: popcs()
155: {
156: stacktop = stacktop - 1;
157: }
158:
159: nodeptr cswitch(x,y)
160: nodeptr x, y;
161: {
162: if (cstack[stacktop]) return(CREATENODE(y,x));
163: else return(x);
164: }
165: #endif XPX
166: short yyexca[] ={
167: -1, 1,
168: 0, -1,
169: -2, 0,
170: -1, 21,
171: 359, 32,
172: -2, 30,
173: -1, 104,
174: 359, 32,
175: -2, 30,
176: -1, 111,
177: 359, 32,
178: -2, 30,
179: };
180: # define YYNPROD 204
181: # define YYLAST 642
182: short yyact[]={
183:
184: 32, 89, 170, 60, 86, 87, 88, 62, 207, 94,
185: 59, 281, 287, 112, 175, 240, 97, 90, 288, 93,
186: 172, 21, 111, 61, 45, 285, 275, 270, 98, 91,
187: 177, 92, 169, 249, 96, 95, 284, 44, 112, 277,
188: 254, 239, 233, 256, 208, 113, 103, 112, 171, 166,
189: 176, 251, 174, 252, 85, 68, 46, 73, 290, 266,
190: 167, 47, 112, 66, 69, 258, 67, 81, 74, 243,
191: 64, 65, 48, 283, 79, 246, 278, 257, 245, 80,
192: 63, 244, 76, 112, 184, 262, 84, 77, 182, 181,
193: 207, 242, 78, 25, 70, 289, 83, 250, 183, 110,
194: 253, 280, 100, 247, 72, 198, 71, 112, 236, 75,
195: 82, 32, 89, 101, 60, 86, 87, 88, 62, 197,
196: 94, 59, 112, 26, 20, 112, 112, 97, 90, 112,
197: 93, 3, 112, 180, 61, 45, 194, 40, 17, 98,
198: 91, 18, 92, 209, 38, 96, 95, 109, 44, 31,
199: 179, 37, 28, 178, 106, 39, 107, 210, 16, 35,
200: 255, 279, 274, 235, 108, 85, 68, 46, 73, 273,
201: 24, 234, 47, 30, 66, 69, 264, 67, 81, 74,
202: 99, 64, 65, 48, 102, 79, 12, 196, 2, 9,
203: 80, 63, 14, 76, 13, 10, 237, 84, 77, 261,
204: 193, 58, 57, 78, 56, 70, 55, 83, 54, 53,
205: 52, 51, 50, 49, 43, 72, 41, 71, 173, 168,
206: 75, 82, 89, 165, 60, 86, 87, 88, 62, 150,
207: 94, 59, 36, 191, 115, 4, 114, 97, 90, 34,
208: 93, 105, 23, 104, 61, 45, 27, 11, 19, 98,
209: 91, 12, 92, 22, 9, 96, 95, 211, 44, 13,
210: 10, 15, 215, 212, 214, 8, 7, 201, 202, 203,
211: 204, 205, 206, 42, 6, 85, 68, 46, 73, 222,
212: 213, 5, 47, 1, 66, 69, 0, 67, 81, 74,
213: 0, 64, 65, 48, 0, 79, 0, 0, 0, 0,
214: 80, 63, 224, 76, 0, 0, 0, 84, 77, 223,
215: 225, 227, 0, 78, 0, 70, 228, 83, 185, 186,
216: 187, 188, 189, 190, 226, 72, 0, 71, 0, 119,
217: 75, 82, 121, 0, 118, 117, 135, 136, 137, 138,
218: 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
219: 0, 0, 248, 149, 134, 232, 0, 0, 124, 33,
220: 0, 126, 0, 0, 163, 131, 0, 0, 0, 125,
221: 0, 151, 152, 153, 154, 155, 156, 263, 238, 129,
222: 0, 133, 0, 164, 157, 158, 159, 160, 161, 162,
223: 291, 128, 0, 241, 0, 123, 122, 0, 116, 0,
224: 29, 132, 0, 130, 120, 0, 0, 127, 0, 0,
225: 0, 0, 0, 271, 0, 0, 265, 0, 267, 268,
226: 269, 0, 0, 0, 0, 0, 0, 0, 0, 272,
227: 0, 259, 260, 0, 0, 0, 0, 0, 0, 0,
228: 282, 192, 0, 195, 0, 0, 0, 0, 0, 0,
229: 0, 0, 286, 229, 230, 0, 0, 0, 0, 0,
230: 0, 0, 282, 292, 293, 0, 0, 0, 0, 0,
231: 199, 200, 0, 216, 217, 218, 219, 220, 221, 0,
232: 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
233: 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
236: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
237: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
238: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
239: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
240: 231, 0, 0, 0, 0, 0, 0, 0, 0, 0,
241: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
242: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
243: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
244: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
245: 0, 0, 0, 0, 0, 0, 0, 0, 0, 195,
246: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
247: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
248: 0, 276 };
249: short yypact[]={
250:
251: -125,-1000, -23,-1000,-1000,-1000,-1000,-1000,-1000,-121,
252: -1000,-235,-1000,-1000, -88,-223,-1000,-1000,-1000,-136,
253: -1000,-145,-157,-146,-1000,-121,-290,-122,-172,-337,
254: -236,-307,-1000,-1000, 40,-1000, 41,-268,-318,-310,
255: -1000,-160,-1000,-238, -35, -35, -35, -35, -35, -35,
256: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-145,
257: -1000,-1000,-145,-1000,-145,-1000,-154,-1000,-1000,-1000,
258: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
259: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
260: -1000,-145,-145,-145,-145,-145,-145,-145,-145,-226,
261: -1000,-292,-1000,-157,-145,-157,-145,-1000,-1000,-1000,
262: -1000,-145, -35, -35, -35, -35, -35, -35, -35, -35,
263: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
264: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
265: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -35,
266: -35,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
267: -1000,-1000,-1000,-1000,-1000, -35,-1000,-1000, -35,-1000,
268: -1000,-1000,-1000, -35,-1000,-1000,-1000,-1000, -35, -35,
269: -35,-145,-311,-1000,-151,-1000,-1000,-1000,-1000,-1000,
270: -1000,-236,-1000,-145,-312,-344,-145,-1000,-1000,-1000,
271: -1000,-197,-212,-187,-190,-193,-236,-156,-157,-324,
272: -226,-174,-308,-306,-1000,-307,-1000,-1000,-1000,-1000,
273: -1000,-1000,-164,-1000,-268,-318,-310,-1000,-1000,-1000,
274: -1000,-314,-272,-1000,-145,-145,-1000,-231,-1000,-1000,
275: -145,-231,-145,-267,-145,-145,-145,-1000,-330,-1000,
276: -1000,-1000,-1000, -35,-1000,-145,-1000,-1000,-1000,-231,
277: -231,-331,-145,-1000,-315,-194,-256,-236,-236,-236,
278: -1000,-1000,-281,-317,-332,-1000,-1000,-1000,-145,-341,
279: -1000,-220,-257,-1000,-1000,-1000,-236,-1000,-256,-145,
280: -145,-1000,-236,-236 };
281: short yypgo[]={
282:
283: 0, 283, 188, 281, 274, 266, 265, 261, 158, 253,
284: 157, 248, 143, 247, 246, 243, 152, 242, 241, 173,
285: 378, 149, 359, 239, 236, 234, 159, 232, 151, 229,
286: 144, 223, 155, 219, 137, 218, 216, 273, 214, 213,
287: 212, 211, 210, 209, 208, 206, 204, 202, 201, 200,
288: 196, 199, 136, 187, 176, 171, 169, 163, 162, 161,
289: 101, 160 };
290: short yyr1[]={
291:
292: 0, 1, 2, 2, 3, 3, 3, 3, 7, 7,
293: 8, 8, 9, 6, 11, 4, 5, 17, 13, 12,
294: 12, 10, 10, 14, 14, 18, 18, 18, 15, 15,
295: 16, 16, 20, 20, 19, 19, 21, 21, 22, 22,
296: 22, 22, 22, 22, 24, 24, 24, 24, 25, 25,
297: 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
298: 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
299: 25, 25, 25, 23, 23, 23, 26, 26, 27, 27,
300: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
301: 29, 29, 29, 29, 28, 28, 31, 31, 30, 30,
302: 33, 33, 33, 33, 32, 32, 35, 35, 35, 35,
303: 34, 34, 36, 36, 36, 37, 37, 37, 37, 37,
304: 37, 37, 39, 39, 39, 39, 39, 39, 39, 39,
305: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
306: 39, 38, 38, 38, 38, 38, 38, 38, 38, 38,
307: 38, 38, 38, 38, 49, 51, 38, 38, 53, 54,
308: 38, 38, 38, 55, 56, 38, 57, 58, 38, 38,
309: 38, 38, 45, 45, 46, 46, 47, 47, 48, 42,
310: 42, 42, 43, 43, 44, 59, 59, 60, 60, 50,
311: 50, 40, 40, 40, 40, 41, 61, 61, 61, 52,
312: 52, 1, 5, 19 };
313: short yyr2[]={
314:
315: 0, 2, 0, 2, 1, 1, 1, 2, 1, 3,
316: 1, 1, 0, 3, 0, 6, 6, 0, 6, 0,
317: 1, 1, 3, 0, 4, 1, 1, 1, 0, 3,
318: 0, 3, 0, 1, 1, 3, 1, 3, 1, 3,
319: 3, 3, 3, 3, 1, 1, 1, 1, 1, 1,
320: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
321: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
322: 1, 1, 1, 1, 3, 5, 1, 3, 1, 3,
323: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
324: 1, 1, 1, 1, 1, 3, 1, 1, 1, 3,
325: 1, 1, 1, 1, 1, 3, 1, 1, 1, 1,
326: 1, 3, 1, 3, 3, 1, 2, 2, 2, 2,
327: 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
328: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
329: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
330: 2, 1, 1, 2, 0, 0, 5, 3, 0, 0,
331: 5, 4, 3, 0, 0, 6, 0, 0, 6, 3,
332: 2, 2, 2, 4, 2, 4, 2, 4, 2, 1,
333: 2, 2, 4, 6, 6, 1, 3, 3, 3, 1,
334: 3, 1, 1, 1, 1, 6, 1, 1, 1, 1,
335: 3, 3, 4, 1 };
336: short yychk[]={
337:
338: -1000, -1, -2, 256, 258, -3, -4, -5, -6, 277,
339: 283, -13, 274, 282, -2, -7, -8, 259, 262, -11,
340: 359, 256, -9, -17, 258, 316, 259, -14, -16, -20,
341: -19, -21, 256, -22, -23, -26, -27, -28, -30, -32,
342: -34, -36, -37, -38, 293, 280, 312, 317, 328, -39,
343: -40, -41, -42, -43, -44, -45, -46, -47, -48, 266,
344: 259, 279, 263, 336, 326, 327, 319, 322, 311, 320,
345: 350, 362, 360, 313, 324, 365, 338, 343, 348, 330,
346: 335, 323, 366, 352, 342, 310, 260, 261, 262, 257,
347: 273, 285, 287, 275, 265, 291, 290, 272, 284, -10,
348: 259, 259, -8, 336, -15, -18, 276, 278, 286, 269,
349: 271, 359, 319, 352, -24, -25, 358, 295, 294, 289,
350: 364, 292, 356, 355, 318, 329, 321, 367, 351, 339,
351: 363, 325, 361, 341, 314, 296, 297, 298, 299, 300,
352: 301, 302, 303, 304, 305, 306, 307, 308, 309, 312,
353: -29, 330, 331, 332, 333, 334, 335, 343, 344, 345,
354: 346, 347, 348, 323, 342, -31, 317, 328, -33, 350,
355: 320, 366, 338, -35, 362, 324, 360, 340, 313, 310,
356: 293, 327, 326, 336, 322, -37, -37, -37, -37, -37,
357: -37, -19, -20, -49, -52, -20, -53, 273, 259, -20,
358: -20, -19, -19, -19, -19, -19, -19, 316, 336, -12,
359: -10, -16, -10, -19, -16, -21, -22, -22, -22, -22,
360: -22, -22, -26, -26, -28, -30, -32, -34, -34, -37,
361: -37, -20, -19, 353, -55, -57, 259, -50, -20, 353,
362: 359, -50, 288, 281, 268, 268, 268, 259, -12, 357,
363: 271, 359, 359, 264, 354, -61, 315, 349, 337, -50,
364: -50, -51, 316, -52, -54, -19, 326, -19, -19, -19,
365: 357, -26, -19, -56, -58, 357, -20, 354, 270, -59,
366: -60, 267, -19, 354, 353, 357, -19, 353, 359, 315,
367: 315, -60, -19, -19 };
368: short yydef[]={
369:
370: 2, -2, 0, 2, 1, 3, 4, 5, 6, 0,
371: 14, 0, 12, 17, 0, 7, 8, 10, 11, 0,
372: 23, -2, 0, 0, 201, 0, 0, 28, 0, 0,
373: 33, 34, 203, 36, 38, 73, 76, 78, 94, 98,
374: 104, 110, 112, 115, 0, 0, 0, 0, 0, 0,
375: 141, 142, 143, 144, 145, 146, 147, 148, 149, 0,
376: 151, 152, 32, 154, 32, 158, 0, 122, 123, 124,
377: 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
378: 135, 136, 137, 138, 139, 140, 191, 192, 193, 194,
379: 179, 32, 32, 0, 0, 0, 0, 0, 0, 13,
380: 21, 0, 9, 19, -2, 0, 0, 25, 26, 27,
381: 202, -2, 0, 0, 0, 0, 0, 0, 0, 0,
382: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
383: 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
384: 64, 65, 66, 67, 68, 69, 70, 71, 72, 0,
385: 0, 80, 81, 82, 83, 84, 85, 86, 87, 88,
386: 89, 90, 91, 92, 93, 0, 96, 97, 0, 100,
387: 101, 102, 103, 0, 106, 107, 108, 109, 0, 0,
388: 0, 32, 163, 166, 0, 116, 117, 118, 119, 120,
389: 121, 150, 153, 32, 0, 199, 32, 170, 171, 180,
390: 181, 0, 0, 172, 174, 176, 178, 0, 19, 0,
391: 20, 0, 0, 0, 31, 35, 37, 39, 40, 41,
392: 42, 43, 74, 77, 79, 95, 99, 105, 111, 113,
393: 114, 0, 33, 162, 32, 32, 169, 155, 189, 157,
394: 32, 159, 0, 0, 0, 0, 0, 22, 0, 15,
395: 16, 24, 29, 0, 161, 0, 196, 197, 198, 164,
396: 167, 0, 32, 200, 0, 182, 0, 173, 175, 177,
397: 18, 75, 0, 0, 0, 156, 190, 160, 0, 0,
398: 185, 0, 0, 195, 165, 168, 183, 184, 0, 0,
399: 0, 186, 187, 188 };
400: #ifndef lint
401: static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83";
402: #endif not lint
403:
404: #
405: # define YYFLAG -1000
406: # define YYERROR goto yyerrlab
407: # define YYACCEPT return(0)
408: # define YYABORT return(1)
409:
410: /* parser for yacc output */
411:
412: #ifdef YYDEBUG
413: int yydebug = 0; /* 1 for debugging */
414: #endif
415: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
416: int yychar = -1; /* current input token number */
417: int yynerrs = 0; /* number of errors */
418: short yyerrflag = 0; /* error recovery flag */
419:
420: yyparse() {
421:
422: short yys[YYMAXDEPTH];
423: short yyj, yym;
424: register YYSTYPE *yypvt;
425: register short yystate, *yyps, yyn;
426: register YYSTYPE *yypv;
427: register short *yyxi;
428:
429: yystate = 0;
430: yychar = -1;
431: yynerrs = 0;
432: yyerrflag = 0;
433: yyps= &yys[-1];
434: yypv= &yyv[-1];
435:
436: yystack: /* put a state and value onto the stack */
437:
438: #ifdef YYDEBUG
439: if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );
440: #endif
441: if( ++yyps> &yys[YYMAXDEPTH] ) { syserr( "yacc stack overflow" ); return(1); }
442: *yyps = yystate;
443: ++yypv;
444: *yypv = yyval;
445:
446: yynewstate:
447:
448: yyn = yypact[yystate];
449:
450: if( yyn<= YYFLAG ) goto yydefault; /* simple state */
451:
452: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
453: if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;
454:
455: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
456: yychar = -1;
457: yyval = yylval;
458: yystate = yyn;
459: if( yyerrflag > 0 ) --yyerrflag;
460: goto yystack;
461: }
462:
463: yydefault:
464: /* default state action */
465:
466: if( (yyn=yydef[yystate]) == -2 ) {
467: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
468: /* look through exception table */
469:
470: for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */
471:
472: while( *(yyxi+=2) >= 0 ){
473: if( *yyxi == yychar ) break;
474: }
475: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */
476: }
477:
478: if( yyn == 0 ){ /* error */
479: /* error ... attempt to resume parsing */
480:
481: switch( yyerrflag ){
482:
483: case 0: /* brand new error */
484:
485: yyerror( yychar, yylval, yystate );
486: yyerrlab:
487: ++yynerrs;
488:
489: case 1:
490: case 2: /* incompletely recovered error ... try again */
491:
492: yyerrflag = 3;
493:
494: /* find a state where "error" is a legal shift action */
495:
496: while ( yyps >= yys ) {
497: yyn = yypact[*yyps] + YYERRCODE;
498: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
499: yystate = yyact[yyn]; /* simulate a shift of "error" */
500: goto yystack;
501: }
502: yyn = yypact[*yyps];
503:
504: /* the current yyps has no shift onn "error", pop stack */
505:
506: #ifdef YYDEBUG
507: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
508: #endif
509: --yyps;
510: --yypv;
511: }
512:
513: /* there is no state on the stack with an error shift ... abort */
514:
515: yyabort:
516: return(1);
517:
518:
519: case 3: /* no shift yet; clobber input char */
520:
521: #ifdef YYDEBUG
522: if( yydebug ) printf( "error recovery discards char %d\n", yychar );
523: #endif
524:
525: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
526: yychar = -1;
527: goto yynewstate; /* try again in the same state */
528:
529: }
530:
531: }
532:
533: /* reduction by production yyn */
534:
535: #ifdef YYDEBUG
536: if( yydebug ) printf("reduce %d\n",yyn);
537: #endif
538: yyps -= yyr2[yyn];
539: yypvt = yypv;
540: yypv -= yyr2[yyn];
541: yyval = yypv[1];
542: yym=yyn;
543: /* consult goto table to find next state */
544: yyn = yyr1[yyn];
545: yyj = yypgo[yyn] + *yyps + 1;
546: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
547: switch(yym){
548:
549: case 1:
550: # line 144 "icon.g"
551: {gout(globfile);} break;
552: case 4:
553: # line 149 "icon.g"
554: {
555: if (!nocode)
556: rout(globfile, STR0(yypvt[-0]));
557: nocode = 0;
558: loc_init();
559: } break;
560: case 5:
561: # line 155 "icon.g"
562: {
563: if (!nocode)
564: codegen(yypvt[-0]);
565: nocode = 0;
566: treeinit();
567: loc_init();
568: } break;
569: case 10:
570: # line 168 "icon.g"
571: {addlfile(STR0(yypvt[-0]));} break;
572: case 11:
573: # line 169 "icon.g"
574: {addlfile(STR0(yypvt[-0]));} break;
575: case 12:
576: # line 171 "icon.g"
577: {idflag = F_GLOBAL;} break;
578: case 14:
579: # line 173 "icon.g"
580: {idflag = F_ARGUMENT;} break;
581: case 15:
582: # line 173 "icon.g"
583: {
584: install(STR0(yypvt[-3]),F_RECORD|F_GLOBAL,(int)yypvt[-1]);
585: yyval = yypvt[-3];
586: } break;
587: case 16:
588: # line 178 "icon.g"
589: {
590: yyval = (nodeptr)PROCNODE(yypvt[-5],yypvt[-2],yypvt[-1],yypvt[-0]);
591: } break;
592: case 17:
593: # line 182 "icon.g"
594: {idflag = F_ARGUMENT;} break;
595: case 18:
596: # line 182 "icon.g"
597: {
598: yyval = yypvt[-3];
599: install(STR0(yypvt[-3]),F_PROC|F_GLOBAL,(int)yypvt[-1]);
600: } break;
601: case 19:
602: # line 187 "icon.g"
603: {yyval = (int)0;} break;
604: case 20:
605: # line 188 "icon.g"
606: {yyval = (nodeptr)yypvt[-0];} break;
607: case 21:
608: # line 191 "icon.g"
609: {
610: install(STR0(yypvt[-0]),idflag,0);
611: yyval = (nodeptr)1;
612: } break;
613: case 22:
614: # line 195 "icon.g"
615: {
616: install(STR0(yypvt[-0]),idflag,0);
617: yyval = (nodeptr)((int)yypvt[-2] + 1);
618: } break;
619: case 25:
620: # line 203 "icon.g"
621: {idflag = F_DYNAMIC;} break;
622: case 26:
623: # line 204 "icon.g"
624: {idflag = F_STATIC;} break;
625: case 27:
626: # line 205 "icon.g"
627: {idflag = F_DYNAMIC;} break;
628: case 28:
629: # line 207 "icon.g"
630: {yyval = EMPTYNODE;} break;
631: case 29:
632: # line 208 "icon.g"
633: {yyval = yypvt[-1];} break;
634: case 30:
635: # line 210 "icon.g"
636: {yyval = EMPTYNODE;} break;
637: case 31:
638: # line 211 "icon.g"
639: {yyval = SLISTNODE(yypvt[-1], yypvt[-2], yypvt[-0]);} break;
640: case 32:
641: # line 213 "icon.g"
642: {yyval = EMPTYNODE;} break;
643: case 35:
644: # line 217 "icon.g"
645: {yyval = CONJNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
646: case 37:
647: # line 220 "icon.g"
648: {yyval = SCANNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
649: case 39:
650: # line 223 "icon.g"
651: {binop: yyval = BINOPNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
652: case 40:
653: # line 224 "icon.g"
654: {yyval = AUGOPNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
655: case 41:
656: # line 225 "icon.g"
657: {yyval = SCANNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
658: case 42:
659: # line 226 "icon.g"
660: {yyval = CONJNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
661: case 43:
662: # line 227 "icon.g"
663: {yyval = ACTIVNODE(yypvt[-1],yypvt[-0],yypvt[-2]);} break;
664: case 74:
665: # line 261 "icon.g"
666: {yyval = TONODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
667: case 75:
668: # line 262 "icon.g"
669: {yyval = TOBYNODE(yypvt[-3],yypvt[-4],yypvt[-2],yypvt[-0]);} break;
670: case 77:
671: # line 265 "icon.g"
672: {yyval = ALTNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
673: case 79:
674: # line 268 "icon.g"
675: {goto binop;} break;
676: case 95:
677: # line 286 "icon.g"
678: {goto binop;} break;
679: case 99:
680: # line 292 "icon.g"
681: {goto binop;} break;
682: case 105:
683: # line 300 "icon.g"
684: {goto binop;} break;
685: case 111:
686: # line 308 "icon.g"
687: {goto binop;} break;
688: case 113:
689: # line 311 "icon.g"
690: {yyval = LIMITNODE(yypvt[-2],yypvt[-0]);} break;
691: case 114:
692: # line 312 "icon.g"
693: {yyval = ACTIVNODE(yypvt[-1], yypvt[-0], yypvt[-2]);} break;
694: case 116:
695: # line 315 "icon.g"
696: {yyval = ACTIVNODE(yypvt[-1], yypvt[-0], EMPTYNODE);} break;
697: case 117:
698: # line 316 "icon.g"
699: {yyval = NOTNODE(yypvt[-0]);} break;
700: case 118:
701: # line 317 "icon.g"
702: {yyval = BARNODE(yypvt[-0]);} break;
703: case 119:
704: # line 318 "icon.g"
705: {yyval = BARNODE(yypvt[-0]);} break;
706: case 120:
707: # line 319 "icon.g"
708: {yyval = BARNODE(yypvt[-0]);} break;
709: case 121:
710: # line 320 "icon.g"
711: {yyval = UNOPNODE(yypvt[-1],yypvt[-0]);} break;
712: case 150:
713: # line 351 "icon.g"
714: {yyval = CREATENODE(yypvt[-1],yypvt[-0]);} break;
715: case 151:
716: # line 352 "icon.g"
717: {VAL0(yypvt[-0]) = putloc(STR0(yypvt[-0]),0);} break;
718: case 152:
719: # line 353 "icon.g"
720: {yyval = NEXTNODE(yypvt[-0]);} break;
721: case 153:
722: # line 354 "icon.g"
723: {yyval = BREAKNODE(yypvt[-1],yypvt[-0]);} break;
724: case 154:
725: # line 355 "icon.g"
726: {
727: #ifdef XPX
728: pushcs(0);
729: #endif XPX
730: } break;
731: case 155:
732: # line 359 "icon.g"
733: {
734: #ifdef XPX
735: popcs();
736: #endif XPX
737: } break;
738: case 156:
739: # line 363 "icon.g"
740: {
741: if ((yypvt[-2])->n_type == N_ELIST)
742: yyval = INVOKNODE(yypvt[-4],EMPTYNODE,yypvt[-2]);
743: else
744: yyval = yypvt[-2]; } break;
745: case 157:
746: # line 368 "icon.g"
747: {yyval = yypvt[-1];} break;
748: case 158:
749: # line 369 "icon.g"
750: {
751: #ifdef XPX
752: pushcs(0);
753: #endif XPX
754: } break;
755: case 159:
756: # line 373 "icon.g"
757: {
758: #ifdef XPX
759: popcs();
760: #endif XPX
761: } break;
762: case 160:
763: # line 377 "icon.g"
764: {
765: yyval = LISTNODE(yypvt[-4],yypvt[-2]);} break;
766: case 161:
767: # line 379 "icon.g"
768: {yyval = BINOPNODE(yypvt[-2],yypvt[-3],yypvt[-1]);} break;
769: case 162:
770: # line 380 "icon.g"
771: {yyval = INVOKNODE(yypvt[-1],yypvt[-2],LISTNODE(yypvt[-1],EMPTYNODE));} break;
772: case 163:
773: # line 381 "icon.g"
774: {
775: #ifdef XPX
776: pushcs(1);
777: #endif XPX
778: } break;
779: case 164:
780: # line 385 "icon.g"
781: {
782: #ifdef XPX
783: popcs();
784: #else XPX
785: err("missing semicolon or operator", 0);
786: #endif XPX
787: } break;
788: case 165:
789: # line 391 "icon.g"
790: {
791: yyval = INVOKNODE(yypvt[-4],yypvt[-5],LISTNODE(yypvt[-4],yypvt[-2]));
792: } break;
793: case 166:
794: # line 394 "icon.g"
795: {
796: #ifdef XPX
797: pushcs(0);
798: #endif XPX
799: } break;
800: case 167:
801: # line 398 "icon.g"
802: {
803: #ifdef XPX
804: popcs();
805: #endif XPX
806: } break;
807: case 168:
808: # line 402 "icon.g"
809: {
810: yyval = INVOKNODE(yypvt[-4],yypvt[-5],yypvt[-2]);
811: } break;
812: case 169:
813: # line 405 "icon.g"
814: {yyval = FIELDNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
815: case 170:
816: # line 406 "icon.g"
817: {yyval = KEYNODE(yypvt[-1], K_FAIL);} break;
818: case 171:
819: # line 407 "icon.g"
820: {
821: if ((i = klocate(STR0(yypvt[-0]))) == NULL)
822: err("invalid keyword",STR0(yypvt[-0]));
823: yyval = KEYNODE(yypvt[-1], i);
824: } break;
825: case 172:
826: # line 413 "icon.g"
827: {yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
828: case 173:
829: # line 414 "icon.g"
830: {yyval = LOOPNODE(yypvt[-3],yypvt[-2],yypvt[-0]);} break;
831: case 174:
832: # line 416 "icon.g"
833: {yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
834: case 175:
835: # line 417 "icon.g"
836: {yyval = LOOPNODE(yypvt[-3],yypvt[-2],yypvt[-0]);} break;
837: case 176:
838: # line 419 "icon.g"
839: {yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
840: case 177:
841: # line 420 "icon.g"
842: {yyval = LOOPNODE(yypvt[-3],yypvt[-2],yypvt[-0]);} break;
843: case 178:
844: # line 422 "icon.g"
845: {yyval = LOOPNODE(yypvt[-1],yypvt[-0],EMPTYNODE);} break;
846: case 179:
847: # line 424 "icon.g"
848: {yyval = RETNODE(yypvt[-0],EMPTYNODE);} break;
849: case 180:
850: # line 425 "icon.g"
851: {yyval = RETNODE(yypvt[-1],yypvt[-0]);} break;
852: case 181:
853: # line 426 "icon.g"
854: {yyval = SUSPNODE(yypvt[-1],yypvt[-0]);} break;
855: case 182:
856: # line 428 "icon.g"
857: {yyval = IFNODE(yypvt[-3],yypvt[-2],yypvt[-0],EMPTYNODE);} break;
858: case 183:
859: # line 429 "icon.g"
860: {yyval = IFNODE(yypvt[-5],yypvt[-4],yypvt[-2],yypvt[-0]);} break;
861: case 184:
862: # line 431 "icon.g"
863: {yyval = CASENODE(yypvt[-5],yypvt[-4],yypvt[-1]);} break;
864: case 186:
865: # line 434 "icon.g"
866: {yyval = CLISTNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
867: case 187:
868: # line 436 "icon.g"
869: {yyval = CCLSNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
870: case 188:
871: # line 437 "icon.g"
872: {yyval = CCLSNODE(yypvt[-1],yypvt[-2],yypvt[-0]);} break;
873: case 189:
874: # line 439 "icon.g"
875: {
876: #ifdef XPX
877: yyval = cswitch(yypvt[-0],yypvt[-0]);
878: #endif XPX
879: } break;
880: case 190:
881: # line 444 "icon.g"
882: {
883: #ifdef XPX
884: yyval = ELISTNODE(yypvt[-1],yypvt[-2],cswitch(yypvt[-0],yypvt[-1]));
885: #else XPX
886: yyval = ELISTNODE(yypvt[-1],yypvt[-2],yypvt[-0]);
887: #endif XPX
888: } break;
889: case 191:
890: # line 452 "icon.g"
891: {VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_INTLIT,0);} break;
892: case 192:
893: # line 453 "icon.g"
894: {VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_REALLIT,0);} break;
895: case 193:
896: # line 454 "icon.g"
897: {VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_STRLIT,VAL1(yypvt[-0]));} break;
898: case 194:
899: # line 455 "icon.g"
900: {VAL0(yypvt[-0]) = putlit(STR0(yypvt[-0]),F_CSETLIT,VAL1(yypvt[-0]));} break;
901: case 195:
902: # line 457 "icon.g"
903: {yyval = (nodeptr)SECTNODE(yypvt[-2],yypvt[-5],yypvt[-3],yypvt[-1]);} break;
904: case 200:
905: # line 464 "icon.g"
906: {yyval = SLISTNODE(yypvt[-1], yypvt[-2], yypvt[-0]);} break;
907: }
908: goto yystack; /* stack new state and value */
909:
910: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.