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