📄 y.tab.c
字号:
#ifndef lint
static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/02/91\n\
Modified 11/4/96 by Wensong Zhang to make getenv() function right\n\
and to remove the warning of unreferenced yyerrlab and yynewerror labels";
#endif
#define YYBYACC 1
#line 2 "tiger.grm"
#include <stdio.h>
#include "util.h"
#include "errormsg.h"
int yylex(void); /* function prototype */
void yyerror(char *s)
{
EM_error(EM_tokPos, "%s", s);
}
#line 15 "tiger.grm"
typedef union {
int pos;
int ival;
string sval;
} YYSTYPE;
#line 25 "y.tab.c"
#define ID 257
#define STRING 258
#define INT 259
#define COMMA 260
#define COLON 261
#define SEMICOLON 262
#define LPAREN 263
#define RPAREN 264
#define LBRACK 265
#define RBRACK 266
#define LBRACE 267
#define RBRACE 268
#define DOT 269
#define PLUS 270
#define MINUS 271
#define TIMES 272
#define DIVIDE 273
#define EQ 274
#define NEQ 275
#define LT 276
#define LE 277
#define GT 278
#define GE 279
#define AND 280
#define OR 281
#define ASSIGN 282
#define ARRAY 283
#define IF 284
#define THEN 285
#define ELSE 286
#define WHILE 287
#define FOR 288
#define TO 289
#define DO 290
#define LET 291
#define IN 292
#define END 293
#define OF 294
#define BREAK 295
#define NIL 296
#define FUNCTION 297
#define VAR 298
#define TYPE 299
#define UMINUS 300
#define YYERRCODE 256
short yylhs[] = { -1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 3, 3, 4, 4, 9,
9, 5, 5, 10, 10, 6, 6, 11, 11, 7,
7, 8, 8, 12, 12, 13, 13, 13, 14, 17,
17, 17, 17, 18, 18, 15, 15, 16, 16, 16,
16,
};
short yylen[] = { 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6, 1, 4, 8, 1, 1, 3, 3, 3, 4,
3, 4, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 2, 3, 3, 3, 4, 1,
3, 2, 3, 1, 3, 3, 4, 3, 5, 4,
6, 4, 5, 1, 2, 1, 1, 1, 4, 1,
2, 3, 3, 3, 5, 4, 6, 6, 8, 7,
9,
};
short yydefred[] = { 0,
0, 0, 2, 3, 0, 0, 0, 0, 0, 0,
15, 4, 0, 0, 6, 7, 8, 9, 10, 12,
16, 0, 0, 0, 0, 0, 0, 0, 42, 0,
0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
56, 57, 58, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 38,
0, 0, 0, 0, 46, 0, 19, 0, 17, 0,
43, 0, 0, 0, 0, 0, 0, 0, 55, 0,
0, 33, 34, 0, 0, 0, 0, 0, 0, 0,
0, 0, 21, 0, 0, 39, 0, 0, 47, 45,
0, 0, 0, 0, 0, 0, 0, 52, 0, 22,
41, 0, 0, 0, 0, 0, 0, 0, 0, 0,
60, 0, 0, 59, 53, 0, 0, 0, 0, 0,
0, 0, 0, 0, 61, 0, 0, 49, 0, 0,
0, 0, 0, 0, 0, 62, 63, 0, 0, 0,
0, 0, 65, 0, 0, 0,
};
short yydgoto[] = { 30,
14, 15, 16, 17, 18, 19, 20, 21, 62, 31,
66, 39, 40, 41, 42, 43, 124, 118,
};
short yysindex[] = { -92,
-242, -183, 0, 0, -252, -92, -92, -92, -234, -192,
0, 0, 725, -248, 0, 0, 0, 0, 0, 0,
0, -92, -193, -92, -254, -217, -92, -131, 0, 483,
-219, 0, 605, -51, -220, -190, -185, -178, -205, -192,
0, 0, 0, -92, -92, -92, -92, -92, -92, -92,
-92, -92, -92, -92, -92, -92, -161, -92, 725, 0,
-90, -163, 645, -162, 0, -153, 0, 725, 0, -92,
0, -92, -92, -92, -128, -245, -142, -133, 0, -180,
-180, 0, 0, -123, -123, -123, -123, -123, -123, 765,
443, 685, 0, 725, -92, 0, -154, -92, 0, 0,
567, 725, 523, -196, -118, -92, -198, 0, -148, 0,
0, -92, -63, -92, -92, -108, -246, -105, -126, 725,
0, -235, -125, 0, 0, 725, -85, 725, -28, -81,
-80, -92, -243, -92, 0, -75, -79, 0, -92, -66,
-76, 725, -57, -92, 725, 0, 0, 725, -55, -92,
-69, 725, 0, 725, -92, 725,
};
short yyrindex[] = { 0,
0, 41, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 81, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -251,
0, 0, 0, 0, 0, 0, 0, 0, 0, -86,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 524, 0,
-33, 0, 0, 0, 0, 0, 0, 566, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 121,
161, 0, 0, 201, 241, 284, 324, 364, 404, 444,
484, 0, 0, 606, 0, 0, 1, 0, 0, 0,
806, 646, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -36, 0, 0, 0, 0, 0, 0, -209,
0, 0, 0, 0, 0, 686, 0, 726, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -191,
0, -188, 0, 0, -179, 0, 0, 766, 0, 0,
0, -170, 0, -155, 0, -124,
};
short yygindex[] = { 2,
0, 0, 0, 0, 0, 0, 0, 0, 138, -40,
107, 195, 0, 0, 0, 0, 0, -122,
};
#define YYTABLESIZE 1105
short yytable[] = { 136,
20, 13, 64, 28, 2, 3, 4, 32, 33, 34,
5, 29, 44, 65, 131, 105, 56, 143, 6, 22,
57, 116, 35, 59, 61, 63, 153, 132, 68, 100,
144, 7, 135, 58, 8, 9, 106, 109, 10, 67,
1, 44, 11, 12, 71, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 91, 92, 121, 94,
116, 74, 1, 2, 3, 4, 75, 117, 122, 5,
60, 76, 64, 101, 102, 103, 64, 6, 77, 23,
5, 24, 66, 25, 123, 26, 78, 66, 66, 66,
7, 46, 47, 8, 9, 93, 61, 10, 27, 113,
96, 11, 12, 68, 36, 37, 38, 120, 68, 68,
68, 98, 67, 126, 99, 128, 129, 67, 67, 67,
31, 70, 1, 2, 3, 4, 70, 70, 70, 5,
22, 107, 69, 142, 104, 145, 69, 6, 119, 112,
148, 69, 69, 69, 125, 152, 44, 45, 46, 47,
7, 154, 130, 8, 9, 134, 156, 10, 133, 108,
32, 11, 12, 1, 2, 3, 4, 71, 137, 95,
5, 64, 71, 71, 71, 140, 141, 147, 6, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 7, 146, 149, 8, 9, 127, 150, 10, 151,
25, 116, 11, 12, 155, 54, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 44, 45,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
40, 48, 111, 138, 79, 0, 0, 0, 73, 0,
30, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 0, 0, 0, 0, 0, 0, 0,
20, 139, 20, 0, 20, 20, 20, 0, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 26, 0, 20, 20, 0, 0, 20,
20, 0, 20, 20, 0, 0, 0, 20, 20, 20,
1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 27, 0, 1, 1, 0, 0, 1,
1, 0, 1, 1, 0, 0, 0, 1, 1, 1,
5, 0, 5, 0, 5, 0, 5, 0, 5, 0,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 0, 28, 0, 5, 5, 0, 0, 5,
5, 0, 5, 5, 0, 0, 0, 5, 5, 5,
31, 0, 31, 0, 31, 0, 31, 0, 31, 0,
31, 31, 0, 0, 31, 31, 31, 31, 31, 31,
31, 31, 0, 29, 0, 31, 31, 0, 0, 31,
31, 0, 31, 31, 0, 0, 0, 31, 31, 31,
32, 0, 32, 0, 32, 0, 32, 0, 32, 0,
32, 32, 0, 0, 32, 32, 32, 32, 32, 32,
32, 32, 0, 24, 0, 32, 32, 0, 0, 32,
32, 0, 32, 32, 0, 0, 0, 32, 32, 32,
25, 0, 25, 0, 25, 0, 25, 0, 25, 0,
0, 0, 0, 0, 25, 25, 25, 25, 25, 25,
25, 25, 0, 23, 0, 25, 25, 0, 0, 25,
25, 0, 25, 25, 0, 0, 0, 25, 25, 25,
30, 0, 30, 0, 30, 0, 30, 0, 30, 0,
0, 0, 0, 0, 30, 30, 30, 30, 30, 30,
30, 30, 0, 18, 0, 30, 30, 0, 0, 30,
30, 0, 30, 30, 0, 0, 0, 30, 30, 30,
0, 0, 0, 26, 0, 26, 0, 26, 0, 26,
0, 26, 0, 0, 0, 0, 0, 26, 26, 26,
26, 26, 26, 26, 26, 37, 0, 0, 26, 26,
0, 0, 26, 26, 0, 26, 26, 0, 0, 0,
26, 26, 26, 27, 0, 27, 0, 27, 0, 27,
0, 27, 0, 0, 0, 0, 0, 27, 27, 27,
27, 27, 27, 27, 27, 36, 0, 0, 27, 27,
0, 0, 27, 27, 0, 27, 27, 0, 0, 0,
27, 27, 27, 28, 0, 28, 0, 28, 0, 28,
0, 28, 0, 0, 0, 0, 0, 28, 28, 28,
28, 28, 28, 28, 28, 13, 0, 0, 28, 28,
0, 0, 28, 28, 0, 28, 28, 0, 0, 0,
28, 28, 28, 29, 0, 29, 0, 29, 0, 29,
0, 29, 0, 0, 0, 0, 0, 29, 29, 29,
29, 29, 29, 29, 29, 11, 0, 0, 29, 29,
0, 0, 29, 29, 0, 29, 29, 0, 0, 0,
29, 29, 29, 24, 0, 24, 0, 24, 0, 24,
0, 24, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 24, 24, 51, 0, 0, 24, 24,
0, 0, 24, 24, 0, 24, 24, 0, 0, 0,
24, 24, 24, 23, 70, 23, 0, 23, 0, 23,
0, 23, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 23, 14, 0, 0, 23, 23,
0, 0, 23, 23, 0, 23, 23, 0, 0, 0,
23, 23, 23, 18, 0, 18, 0, 18, 0, 18,
0, 18, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 0, 50, 0, 0, 18, 18,
0, 115, 18, 18, 0, 18, 18, 0, 0, 0,
18, 18, 18, 0, 0, 37, 0, 37, 0, 37,
0, 37, 0, 37, 0, 0, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 0, 0,
37, 37, 114, 0, 37, 37, 0, 37, 37, 0,
0, 0, 37, 37, 37, 36, 0, 36, 0, 36,
0, 36, 0, 36, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 0, 0, 0, 72,
36, 36, 0, 0, 36, 36, 0, 36, 36, 0,
0, 0, 36, 36, 36, 13, 0, 13, 0, 13,
97, 13, 0, 13, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 0, 0, 0, 0,
13, 13, 0, 0, 13, 13, 0, 13, 13, 0,
0, 0, 13, 13, 13, 11, 0, 11, 0, 11,
110, 11, 0, 11, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 0, 0, 0, 0,
11, 11, 0, 0, 11, 11, 0, 11, 11, 0,
0, 0, 11, 11, 11, 51, 0, 51, 0, 51,
0, 51, 0, 51, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 0, 0, 0, 0,
51, 51, 0, 0, 51, 51, 0, 51, 51, 0,
0, 0, 51, 51, 51, 14, 0, 14, 0, 14,
0, 14, 0, 14, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 0, 0, 0, 0, 0, 0,
14, 14, 0, 0, 14, 14, 0, 14, 14, 0,
0, 0, 14, 14, 14, 50, 0, 50, 0, 50,
0, 50, 0, 50, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
50, 0, 0, 0, 50, 50, 0, 50, 50, 0,
0, 0, 50, 50, 50,
};
short yycheck[] = { 122,
0, 0, 257, 256, 257, 258, 259, 6, 7, 8,
263, 264, 264, 268, 261, 261, 265, 261, 271, 262,
269, 257, 257, 22, 23, 24, 149, 274, 27, 70,
274, 284, 268, 282, 287, 288, 282, 78, 291, 257,
0, 293, 295, 296, 264, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56, 257, 58,
257, 282, 256, 257, 258, 259, 257, 264, 267, 263,
264, 257, 264, 72, 73, 74, 268, 271, 257, 263,
0, 265, 292, 267, 283, 269, 292, 297, 298, 299,
284, 272, 273, 287, 288, 257, 95, 291, 282, 98,
264, 295, 296, 292, 297, 298, 299, 106, 297, 298,
299, 274, 292, 112, 268, 114, 115, 297, 298, 299,
0, 292, 256, 257, 258, 259, 297, 298, 299, 263,
262, 274, 264, 132, 263, 134, 292, 271, 257, 294,
139, 297, 298, 299, 293, 144, 270, 271, 272, 273,
284, 150, 261, 287, 288, 282, 155, 291, 264, 293,
0, 295, 296, 256, 257, 258, 259, 292, 294, 260,
263, 257, 297, 298, 299, 257, 257, 257, 271, 270,
271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
281, 284, 268, 260, 287, 288, 260, 274, 291, 257,
0, 257, 295, 296, 274, 292, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
264, 268, 95, 127, 40, -1, -1, -1, 290, -1,
0, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, -1, -1, -1, -1, -1, -1, -1,
260, 290, 262, -1, 264, 265, 266, -1, 268, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
260, -1, 262, -1, 264, -1, 266, -1, 268, -1,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, -1, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
260, -1, 262, -1, 264, -1, 266, -1, 268, -1,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, -1, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
260, -1, 262, -1, 264, -1, 266, -1, 268, -1,
270, 271, -1, -1, 274, 275, 276, 277, 278, 279,
280, 281, -1, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
260, -1, 262, -1, 264, -1, 266, -1, 268, -1,
270, 271, -1, -1, 274, 275, 276, 277, 278, 279,
280, 281, -1, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
260, -1, 262, -1, 264, -1, 266, -1, 268, -1,
-1, -1, -1, -1, 274, 275, 276, 277, 278, 279,
280, 281, -1, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
260, -1, 262, -1, 264, -1, 266, -1, 268, -1,
-1, -1, -1, -1, 274, 275, 276, 277, 278, 279,
280, 281, -1, 0, -1, 285, 286, -1, -1, 289,
290, -1, 292, 293, -1, -1, -1, 297, 298, 299,
-1, -1, -1, 260, -1, 262, -1, 264, -1, 266,
-1, 268, -1, -1, -1, -1, -1, 274, 275, 276,
277, 278, 279, 280, 281, 0, -1, -1, 285, 286,
-1, -1, 289, 290, -1, 292, 293, -1, -1, -1,
297, 298, 299, 260, -1, 262, -1, 264, -1, 266,
-1, 268, -1, -1, -1, -1, -1, 274, 275, 276,
277, 278, 279, 280, 281, 0, -1, -1, 285, 286,
-1, -1, 289, 290, -1, 292, 293, -1, -1, -1,
297, 298, 299, 260, -1, 262, -1, 264, -1, 266,
-1, 268, -1, -1, -1, -1, -1, 274, 275, 276,
277, 278, 279, 280, 281, 0, -1, -1, 285, 286,
-1, -1, 289, 290, -1, 292, 293, -1, -1, -1,
297, 298, 299, 260, -1, 262, -1, 264, -1, 266,
-1, 268, -1, -1, -1, -1, -1, 274, 275, 276,
277, 278, 279, 280, 281, 0, -1, -1, 285, 286,
-1, -1, 289, 290, -1, 292, 293, -1, -1, -1,
297, 298, 299, 260, -1, 262, -1, 264, -1, 266,
-1, 268, 270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 280, 280, 281, 0, -1, -1, 285, 286,
-1, -1, 289, 290, -1, 292, 293, -1, -1, -1,
297, 298, 299, 260, 262, 262, -1, 264, -1, 266,
-1, 268, 270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 280, 281, 281, 0, -1, -1, 285, 286,
-1, -1, 289, 290, -1, 292, 293, -1, -1, -1,
297, 298, 299, 260, -1, 262, -1, 264, -1, 266,
-1, 268, 270, 271, 272, 273, 274, 275, 276, 277,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -