John Florenmerged?3498f2b15 years agoHistory
1249 lines · 30.8 KB · C
RawDownload
 #line	2	"a.y"#include "a.h" #line	4	"a.y"typedef union {	Sym	*sym;	long	lval;	double	dval;	char	sval[8];	Gen	gen;} YYSTYPE;extern	int	yyerrflag;#ifndef	YYMAXDEPTH#define	YYMAXDEPTH	150#endifYYSTYPE	yylval;YYSTYPE	yyval;#define	LMOVW	57346#define	LMOVD	57347#define	LMOVB	57348#define	LSWAP	57349#define	LADDW	57350#define	LCMP	57351#define	LBRA	57352#define	LFMOV	57353#define	LFCONV	57354#define	LFADD	57355#define	LCPOP	57356#define	LTRAP	57357#define	LJMPL	57358#define	LXORW	57359#define	LNOP	57360#define	LEND	57361#define	LRETT	57362#define	LUNIMP	57363#define	LTEXT	57364#define	LDATA	57365#define	LRETRN	57366#define	LCONST	57367#define	LSP	57368#define	LSB	57369#define	LFP	57370#define	LPC	57371#define	LCREG	57372#define	LFLUSH	57373#define	LREG	57374#define	LFREG	57375#define	LR	57376#define	LC	57377#define	LF	57378#define	LFSR	57379#define	LFPQ	57380#define	LPSR	57381#define	LSCHED	57382#define	LFCONST	57383#define	LSCONST	57384#define	LNAME	57385#define	LLAB	57386#define	LVAR	57387#define YYEOFCODE 1#define YYERRCODE 2short	yyexca[] ={-1, 1,	1, -1,	-2, 0,};#define	YYNPROD	139#define	YYPRIVATE 57344#define	yydebug	1#define	YYLAST	741short	yyact[] ={  50,  46,  45,  44,  79,  91,  39, 137,  43,  88, 225, 222,  77, 326,  72,  70,  77, 329,  67,  74, 312,  93,  83,  85, 311,  41,  90, 310,  96, 103, 111, 111, 303, 104, 106, 118, 118,  71,  76, 294, 293,  84,  86, 292,   2,  64,  63,  97, 100, 118, 129, 291, 133, 290, 313, 232,  42,  58, 263,  59, 130, 221, 307, 220, 141, 142, 143,  58,  68,  59,  80,  61,  64,  63,  88,  38, 190,  77, 154,  52, 101, 102,  53, 174, 107, 117, 119,  77, 166,  60,  93,  62, 136, 165,  47, 168,  48, 135,  61,  65, 134, 306, 175, 176, 305,  58, 304,  59, 300, 299, 298, 297,  57, 118, 265, 187,  60, 189,  62,  88, 184, 183, 208,  48, 214, 211,  65, 206, 209, 213, 210, 182, 181, 218, 219, 229, 230, 231, 179, 177, 234, 235, 171, 128, 164,  58,  52,  59, 238,  53, 163, 236, 162, 161, 160, 157, 243, 244, 245, 247, 192, 193, 108, 156, 155, 188, 153, 254, 256, 258, 260, 262, 152, 151, 150, 264, 149, 148, 266, 147, 146, 145, 144, 127, 170, 126, 125, 272, 124, 123, 276, 273, 277, 122, 121, 120, 118, 118, 118, 118, 118, 237,  37, 118, 118, 118,  36,  33,  34,  35, 274,  32, 249, 250, 251, 275,  58, 253,  59, 159, 267, 131, 288,  57,  55, 224,  58,  52,  59,  56,  53, 284,  40,  66,  75,  78,  82,  52, 270, 271,  53, 296,  92, 295,  64,  63, 278, 279, 280, 281, 282, 327, 191, 285, 286, 287, 255, 257, 259, 261, 158,  58,  52,  59, 233,  53,  93, 283,  55, 224,  61, 301, 268,  56, 269,  55,   8,  58,  52,  59,  56,  53, 116,  73, 118, 118, 115,  55,  60,  58,  62,  59,  56,   1,  54,  48,  87,  51,  65, 139, 140, 317, 319,  69, 314, 315, 316, 318,  49, 321, 324, 169, 325,   0,  58,  89,  59, 289,  98,  99, 227, 226, 228,   0, 105, 109,   0, 133, 114, 141,  64,  63, 322, 323, 308, 309,  64,  63, 110, 113,   0,   0, 207,   0, 212, 215, 216, 217,   0, 227, 226, 228, 267,   0,   0,  58,  61,  59, 227, 226, 228, 320,  61,  58,  58,  59,  59, 239, 240, 241, 242,   0,   0, 246,  60, 248,  62,   0, 253, 252,   0,  48,  62,  77,  65,   0,   0, 112, 172, 173,  65,   0,   0, 178,   9,   0,   0, 180, 195, 196, 197, 198, 199, 185, 186,   0,  10,  11,  12,  14,  15,  26,  17,  13,  23,  24,  25,  21,  18,  16,  27,  28,  19,  22,  29,  30,  31,  64,  63,   0, 197, 198, 199,  20, 202, 200, 201, 195, 196, 197, 198, 199,   6,   0,   0,   4,   3,   5,   0,   0,   7,  64,  63,  61, 138,   0, 139, 140,  55,   0,  58,  52,  59,  56,  53,  54,   0,  57,   0,   0,   0,  60,   0,  62,  64,  63,   0,  61,  48,   0,  51,  65,   0,   0,  58,   0,  59, 302,  64, 328,   0,   0,   0,   0,   0,  94,  95,  62,   0,   0,  61,   0,  48,  64,  63,  65,   0,   0,  52,   0,   0,  53,   0,   0,  61,   0,   0,   0,  60,   0,  62,   0,   0,   0,   0,  48,   0,  81,  65,  61, 158, 132,  60,   0,  62,   0,  58,   0,  59,  48,   0,   0,  65,  64,  63,   0,   0,  60,   0,  62,   0,   0,   0,   0,  48,  64,  63,  65, 204, 203, 202, 200, 201, 195, 196, 197, 198, 199,   0,  61,  64,  63,  64,  63,   0,   0,  64,  63,   0,   0,   0,  61,   0,   0,   0,   0,   0,  94,  95,  62,   0,  64,  63,   0,  48,   0,  61,  65,  61, 167,  95,  62,  61,   0,   0,  58, 112,  59,   0,  65,  64,  63,   0, 132,  60, 223,  62,  61,  62,   0,   0,  48,  62, 112,  65,   0,  65, 112,   0,  77,  65,  64,  63,   0,   0,  60,  61,  62,   0,   0,   0,   0,  48,   0,   0,  65, 200, 201, 195, 196, 197, 198, 199,   0,  60,   0,  62,  61,   0,   0,   0, 112,   0,   0,  65, 204, 203, 202, 200, 201, 195, 196, 197, 198, 199,   0,   0,  62,   0,   0,   0,   0, 112,   0,   0,  65, 204, 203, 202, 200, 201, 195, 196, 197, 198, 199, 203, 202, 200, 201, 195, 196, 197, 198, 199,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 205,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 194};short	yypact[] ={-1000, 392,-1000, 155, 151, 152, 148,-1000, 144,  17, 418, 235, 321, 465, 582,  25,  25,  60,  60, 272, 534,  15, -50, 194, 194, 228, 272, 103,  60, 601, 601,  60,-1000,-1000, 622, 622,-1000,-1000,-1000, 136, 135, 134, 130, 129, 127, 126, 124,-1000, 563,-1000,   0, 561,-1000,  40,-1000,-1000,  37,-1000,-1000,  32, 447,-1000,-1000, 622, 622, 622, 123, 122, 121, 120, 118, 117, 115,-1000, 114, 113, 107, 622, 105, 104,  96, 209,  95,  94,  93,  91,  85, 546,-1000, 442,  83,  60,  60,  23, 447, 290,  80,  79,-1000,-1000,  60,  73,  72,  62,  61,-1000,  60,  60, 219,-1000,  58,  16, 622, 240,-1000, 392, 392, 682,-1000, 661,  63, 247,  63, 582, 582, 582, 272, 272,   2, 554, 322,-1000,-1000,   0, 622, 622, 622,  -5, 256, 622, 622,-1000,-1000,-1000, 184, 582, 582, 582, 582, 272, 272, 494, 272, 582,-1000, 194, 194,  36,-1000, 166, 272, 272, 272, 272, 272,-1000,  -2, 290,-1000,-1000,  55, 272,-1000,-1000, 313,  -5,-1000, 272,-1000, 272,-1000, 194, 194, 228,  25,-1000,-1000,-1000,-1000, 567, 284, 622,-1000,-1000,-1000, 622, 622, 622, 622, 622, 260, 223, 622, 622, 622,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 622, 272,-1000,  -8, -10,-1000,-1000,-1000, -18, -21, -22, 284, 290,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,  52,-1000,  51,-1000,  50,-1000,  49,-1000, 181,-1000, 534,-1000, -29,-1000,-1000,-1000,  47,  45,-1000,-1000,-1000,  42,   3, 419, 419,-1000,-1000,-1000, 622, 622, 639, 428, 691, -34, -37,-1000,-1000,-1000,-1000,-1000, -41,  -6, 272, 272, 174, 174,-1000,-1000,-1000, 194, 228, -46, -49, 389, 389,-1000,-1000,-1000, 214,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, 479, -44, 327,-1000};short	yypgo[] ={   0,   0,  50,  10,   7,  94, 221,   6, 308,   1,   3,  56,  25,   2,   4,   5,   8, 303, 293,  44, 286, 282, 276, 296};short	yyr1[] ={   0,  18,  18,  20,  19,  21,  19,  19,  19,  19,  19,  19,  19,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  22,  15,  15,  15,   7,  16,  17,   9,  10,  10,  11,  11,  13,  13,  14,  14,  12,   5,   5,   6,   6,   6,   6,   6,   8,   8,   8,  23,  23,   4,   4,   4,   3,   3,   3,   1,   1,   1,   1,   1,   1,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2};short	yyr2[] ={   0,   0,   2,   0,   4,   0,   4,   4,   4,   2,   1,   2,   2,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   6,   6,   4,   4,   6,   6,   4,   4,   4,   4,   4,   4,   3,   3,   3,   5,   5,   4,   3,   3,   4,   4,   3,   2,   4,   4,   4,   6,   6,   2,   3,   4,   4,   6,   4,   6,   4,   4,   2,   3,   3,   3,   3,   2,   4,   6,   6,   6,   6,   2,   4,   2,   2,   1,   1,   1,   1,   1,   4,   1,   4,   2,   2,   2,   3,   2,   1,   4,   3,   5,   5,   1,   4,   4,   5,   7,   0,   1,   0,   2,   2,   1,   1,   1,   1,   1,   2,   2,   2,   3,   1,   3,   3,   3,   3,   3,   4,   4,   3,   3,   3};short	yychk[] ={-1000, -18, -19,  54,  53,  55,  50,  58, -22,   2,  14,  15,  16,  21,  17,  18,  27,  20,  26,  30,  41,  25,  31,  22,  23,  24,  19,  28,  29,  32,  33,  34,  56,  56,  57,  57,  58,  58,  58,  -7,  -6, -12, -11, -16, -10, -13,  -9,  -5,  60,  -8,  -1,  62,  43,  46,  47,  40,  45,  49,  42,  44,  53,  35,  55,  10,   9,  63,  -6,  -7, -11, -17, -10, -12, -13,  48,  -7,  -6, -12,  62,  -6, -14, -11,  62,  -6,  -7, -12,  -7, -12, -23,  59, -23,  -7, -15,  -6,  -1,  53,  54,  -7, -12, -23, -23, -12, -11, -11, -10,  -7, -23,  -7, -11,  59, -23,  -8,  -1,  60,  -8, -23, -20, -21,  -2,  -1,  -2,  59,  59,  59,  59,  59,  59,  59,  59,  -5,  -2,  60,  -6,  52,  -1,  60,  60,  60,  -4,   7,   9,  10,  -1,  -1,  -1,  59,  59,  59,  59,  59,  59,  59,  59,  59,  59,  -1,  59,  59,  59,  51,  10,  59,  59,  59,  59,  59, -15,  -1,  53, -15,  -6,  -5,  59, -23, -23,  60,  -4,  -4,  59, -23,  59, -23,  59,  59,  59,  59, -23, -23,  -7, -11,  59,  60,  12, -19, -19,  58,   9,  10,  11,  12,  13,   7,   8,   6,   5,   4,  58,  -7,  -6,  -9,  -7, -16, -10,  -6,  -7,  -9,  -6,  -6,  -6,  -7,  -7,  61,  59,   9,  61,  -5,  -3,  37,  36,  38,  -1,  -1,  -1,  60,   8,  -1,  -1,  -7, -11, -10,  -6,  -6,  -6,  -6,  -7,  -7,  -7,  -6,  -7,  -6, -11, -11, -11,  -6,  51,  -7,  -5,  -7,  -5,  -7,  -5,  -7,  -5,  -7,  60,  -4,  59,  -7,  39,  -5,  -5, -11, -11, -10,  -7, -12, -12,  -1,  -1,  -2,  -2,  -2,  -2,  -2,   7,   8,  -2,  -2,  -2,  -1,  -5,  61,  61,  61,  61,  61,  -3,  -4,  59,  59,  59,  59, -15,  -6,  61,  59,  59,  59,  59,  -2,  -2,  61,  61,  61,  60,  -7,  -7,  -7,  -9,  -7,  -9, -11, -10, -12, -12, -13, -14,  62,  37,  10,  61};short	yydef[] ={   1,  -2,   2,   0,   0,   0,   0,  10,   0,   0,   0,   0,   0,   0,   0,   0,   0, 114, 114,   0,   0, 114, 114,   0,   0,   0,   0, 114, 114,   0,   0, 114,   3,   5,   0,   0,   9,  11,  12,   0,   0,   0,   0,   0,   0,   0,   0,  91,   0, 109,   0,   0,  97,   0,  92,  95,   0,  94, 104,   0, 116, 122, 123,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 115,   0,   0, 114, 114,   0, 116, 116, 114,   0,  61,  67, 114,   0,   0,   0,   0,  76, 114, 114, 115,  81,   0,   0,   0,   0,  87,   0,   0,   0, 128,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  99, 100, 103,   0,   0,   0,   0,   0,   0,   0, 124, 125, 126,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 103,   0,   0,   0, 101,   0,   0,   0,   0,   0,   0,  50,   0, 116,  51,  52,   0,   0,  56,  57,   0,  89,  90, 115,  60,   0,  68,   0,   0,   0,   0,  77,  78,  79,  80,   0,   0,   0,   4,   6,   7,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   8,  13,  26,  63,  14,  23,  24,  27,  46,  64,  31,  33,  35,  48,  62, 106,   0,   0, 127,   0,   0, 119, 120, 121,   0,   0,   0,   0, 116, 117, 118,  15,  18,  25,  28,  32,  34,  36,  47,  49,  16,  29,  17,  30,  19,  20,  21,  22, 102,  37,  91,  40,  91,  41,  91,  44,  91,  45,   0,  89,   0,  55,   0,  58,  59,  69,  70,  72,  74,  75,  82,   0,   0, 129, 130, 131, 132, 133,   0,   0, 136, 137, 138,   0,   0, 110, 111,  98,  96, 105,   0,   0,   0,   0,   0,   0,  53,  54,  88,   0,   0,   0,   0, 134, 135, 107, 108, 112,   0,  38,  39,  42,  65,  43,  66,  71,  73,  83,  84,  85,  86,   0,   0,   0, 113};short	yytok1[] ={   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  62,  13,   6,   0,  60,  61,  11,   9,  59,  10,   0,  12,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  56,  58,   7,  57,   8,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   4,   0,  63};short	yytok2[] ={   2,   3,  14,  15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55};long	yytok3[] ={   0};#define YYFLAG 		-1000#define	yyclearin	yychar = -1#define	yyerrok		yyerrflag = 0 #ifdef	yydebug#include	"y.debug"#else#define	yydebug		0char*	yytoknames[1];		/* for debugging */char*	yystates[1];		/* for debugging */#endif /*	parser for yacc output	*/ int	yynerrs = 0;		/* number of errors */int	yyerrflag = 0;		/* error recovery flag */ extern	int	fprint(int, char*, ...);extern	int	sprint(char*, char*, ...); char*yytokname(int yyc){	static char x[16]; 	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))	if(yytoknames[yyc-1])		return yytoknames[yyc-1];	sprint(x, "<%d>", yyc);	return x;} char*yystatname(int yys){	static char x[16]; 	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))	if(yystates[yys])		return yystates[yys];	sprint(x, "<%d>\n", yys);	return x;} longyylex1(void){	long yychar;	long *t3p;	int c; 	yychar = yylex();	if(yychar <= 0) {		c = yytok1[0];		goto out;	}	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {		c = yytok1[yychar];		goto out;	}	if(yychar >= YYPRIVATE)		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {			c = yytok2[yychar-YYPRIVATE];			goto out;		}	for(t3p=yytok3;; t3p+=2) {		c = t3p[0];		if(c == yychar) {			c = t3p[1];			goto out;		}		if(c == 0)			break;	}	c = 0; out:	if(c == 0)		c = yytok2[1];	/* unknown char */	if(yydebug >= 3)		fprint(2, "lex %.4lux %s\n", yychar, yytokname(c));	return c;} intyyparse(void){	struct	{		YYSTYPE	yyv;		int	yys;	} yys[YYMAXDEPTH], *yyp, *yypt;	short *yyxi;	int yyj, yym, yystate, yyn, yyg;	long yychar;	YYSTYPE save1, save2;	int save3, save4; 	save1 = yylval;	save2 = yyval;	save3 = yynerrs;	save4 = yyerrflag; 	yystate = 0;	yychar = -1;	yynerrs = 0;	yyerrflag = 0;	yyp = &yys[-1];	goto yystack; ret0:	yyn = 0;	goto ret; ret1:	yyn = 1;	goto ret; ret:	yylval = save1;	yyval = save2;	yynerrs = save3;	yyerrflag = save4;	return yyn; yystack:	/* put a state and value onto the stack */	if(yydebug >= 4)		fprint(2, "char %s in %s", yytokname(yychar), yystatname(yystate)); 	yyp++;	if(yyp >= &yys[YYMAXDEPTH]) {		yyerror("yacc stack overflow");		goto ret1;	}	yyp->yys = yystate;	yyp->yyv = yyval; yynewstate:	yyn = yypact[yystate];	if(yyn <= YYFLAG)		goto yydefault; /* simple state */	if(yychar < 0)		yychar = yylex1();	yyn += yychar;	if(yyn < 0 || yyn >= YYLAST)		goto yydefault;	yyn = yyact[yyn];	if(yychk[yyn] == yychar) { /* valid shift */		yychar = -1;		yyval = yylval;		yystate = yyn;		if(yyerrflag > 0)			yyerrflag--;		goto yystack;	} yydefault:	/* default state action */	yyn = yydef[yystate];	if(yyn == -2) {		if(yychar < 0)			yychar = yylex1(); 		/* look through exception table */		for(yyxi=yyexca;; yyxi+=2)			if(yyxi[0] == -1 && yyxi[1] == yystate)				break;		for(yyxi += 2;; yyxi += 2) {			yyn = yyxi[0];			if(yyn < 0 || yyn == yychar)				break;		}		yyn = yyxi[1];

Lines 1–500 of 1249.