#line 2 "asm.y"#include "asm.h"union { uvlong l; double d;} u; #line 9 "asm.y"typedef union { Inst* inst; Addr* addr; vlong ival; double fval; String* string; Sym* sym; List* list;} YYSTYPE;extern int yyerrflag;#ifndef YYMAXDEPTH#define YYMAXDEPTH 150#endifYYSTYPE yylval;YYSTYPE yyval;#define TOKI0 57346#define TOKI1 57347#define TOKI2 57348#define TOKI3 57349#define TCONST 57350#define TOKSB 57351#define TOKFP 57352#define TOKHEAP 57353#define TOKDB 57354#define TOKDW 57355#define TOKDL 57356#define TOKDF 57357#define TOKDS 57358#define TOKVAR 57359#define TOKEXT 57360#define TOKMOD 57361#define TOKLINK 57362#define TOKENTRY 57363#define TOKARRAY 57364#define TOKINDIR 57365#define TOKAPOP 57366#define TOKLDTS 57367#define TOKEXCS 57368#define TOKEXC 57369#define TOKETAB 57370#define TOKSRC 57371#define TID 57372#define TFCONST 57373#define TSTRING 57374#define YYEOFCODE 1#define YYERRCODE 2short yyexca[] ={-1, 1, 1, -1, -2, 0,-1, 61, 4, 54, 5, 54, 6, 54, 7, 54, 8, 54, 9, 54, 10, 54, 11, 54, 12, 54, 13, 54, 46, 54, -2, 46,-1, 140, 44, 44, -2, 50,-1, 159, 44, 43, -2, 45,};#define YYNPROD 70#define YYPRIVATE 57344#define YYLAST 561short yyact[] ={ 64, 59, 107, 65, 162, 161, 31, 160, 158, 34, 42, 43, 44, 45, 156, 47, 48, 33, 50, 51, 52, 30, 32, 54, 55, 148, 39, 38, 63, 66, 67, 105, 100, 70, 99, 36, 98, 96, 90, 69, 57, 172, 85, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 165, 163, 126, 151, 61, 58, 53, 49, 101, 60, 41, 103, 40, 46, 102, 143, 144, 106, 56, 108, 109, 110, 111, 112, 113, 153, 152, 116, 117, 118, 7, 115, 114, 119, 108, 108, 120, 121, 127, 128, 129, 130, 6, 132, 133, 134, 135, 136, 131, 137, 1, 140, 103, 35, 145, 142, 146, 29, 28, 27, 26, 68, 149, 150, 5, 8, 9, 10, 11, 12, 13, 14, 16, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 4, 74, 75, 76, 159, 62, 138, 125, 2, 82, 83, 84, 3, 164, 0, 122, 29, 28, 27, 26, 166, 167, 168, 0, 169, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 173, 124, 123, 175, 0, 177, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 39, 38, 0, 0, 39, 38, 63, 0, 0, 36, 143, 144, 0, 36, 0, 141, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 72, 73, 74, 75, 76, 37, 104, 0, 0, 61, 0, 41, 0, 40, 139, 41, 0, 40, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 176, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, 174, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 171, 80, 79, 77, 78, 72, 73, 74, 75, 76, 170, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 157, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 155, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 154, 79, 77, 78, 72, 73, 74, 75, 76, 0, 147, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 97, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 95, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 92, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 91, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 87, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 39, 38, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 86, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 71, 37, 0, 0, 0, 0, 0, 41, 0, 40};short yypact[] ={-1000,-1000, 96,-1000, -22, -23,-1000,-1000, 512, 512, 512, 512, 512, 26, 512, 512, 20, 512, 512, 512,-1000, 19, 512, 512, 29, 16, 17, 17, 17,-1000, 138, -5, 512,-1000, 507,-1000,-1000,-1000, 512, 512, 512, 512, 494, 466, 453, 443, -6, 425, 402,-1000, 384, 374, 361, -7, 535, 333, -8, -10,-1000, -12, 512,-1000,-1000, 512, 174,-1000, -13,-1000,-1000, 512, 535, 512, 512, 512, 512, 512, 512, 78, 76, 512, 512, 512,-1000,-1000,-1000, 39, 512, 512, 133, 13, 512, 512, 512, 512, -23, 512, 512, 512, 512, 512, 183, 535,-1000, 157, 179, 17, 320, -19, 535, 126, 126,-1000,-1000,-1000, 512, 512, 258, 349, 281,-1000, -19, -19,-1000,-1000,-1000, 38,-1000, 535, 310, 292, 535, -30, 535, 535, 269, 535, 535,-1000, -36, 512,-1000, 49, -40, -42, -43,-1000,-1000, 12, 512, 205, 205,-1000,-1000,-1000, 11, 512, 512, 512, 17, 535,-1000,-1000,-1000,-1000, 535,-1000, 251, 535, 241,-1000, -1, 512,-1000, 228, 512, 200, 512, 535};short yypgo[] ={ 0, 148, 144, 83, 106, 0, 6, 1, 142, 141, 3, 2, 109, 103, 95};short yyr1[] ={ 0, 13, 2, 2, 1, 1, 1, 1, 6, 6, 12, 12, 11, 11, 3, 3, 3, 3, 3, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 8, 8, 7, 7, 7, 9, 9, 9, 10, 10, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5};short yyr2[] ={ 0, 1, 0, 2, 3, 5, 1, 1, 2, 1, 0, 2, 1, 3, 4, 6, 4, 2, 1, 4, 4, 4, 4, 4, 4, 5, 5, 5, 4, 4, 6, 8, 2, 4, 6, 4, 1, 4, 2, 12, 4, 4, 2, 2, 1, 2, 1, 1, 2, 4, 1, 4, 4, 1, 1, 2, 2, 2, 3, 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3};short yychk[] ={-1000, -13, -2, -1, 40, 21, -14, -3, 22, 23, 24, 25, 26, 27, 28, 30, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 17, 16, 15, 14, 43, -6, 45, 40, -5, -4, 18, 40, 10, 9, 48, 46, -5, -5, -5, -5, 40, -5, -5, 40, -5, -5, -5, 40, -5, -5, 42, 11, 42, -7, 45, 40, -9, 11, -5, -10, -7, -7, -3, 44, -5, 44, 9, 10, 11, 12, 13, 7, 8, 6, 5, 4, -4, -4, -4, -5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, -5, -10, -5, 46, 44, -5, -11, -5, -5, -5, -5, -5, -5, 7, 8, -5, -5, -5, 47, -11, -11, 18, 41, 40, 10, 42, -5, -5, -5, -5, -6, -5, -5, -5, -5, -5, -7, -8, 45, -10, 46, -10, 19, 20, -7, -12, 44, 44, -5, -5, 18, 41, 40, 44, 44, 44, 44, 44, -5, 47, 47, 47, 42, -5, 42, -5, -5, -5, -7, 44, 44, 42, -5, 44, -5, 44, -5};short yydef[] ={ 2, -2, 1, 3, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 9, 0, 59, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 38, 0, 0, 0, 42, 0, 0, -2, 47, 0, 0, 50, 0, 17, 4, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 48, 0, 0, 0, 10, 19, 12, 60, 61, 62, 63, 64, 0, 0, 67, 68, 69, 58, 20, 21, 22, 23, 24, 0, 28, 29, 0, 0, 33, 0, 35, 37, 0, 40, 41, 14, 0, 0, -2, 0, 0, 0, 0, 16, 5, 0, 0, 65, 66, 25, 26, 27, 0, 0, 0, 0, 0, -2, 49, 51, 52, 11, 13, 30, 0, 34, 0, 15, 0, 0, 31, 0, 0, 0, 0, 39};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, 45, 13, 6, 0, 46, 47, 11, 9, 44, 10, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 7, 0, 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, 48};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};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]; if(yyn < 0) goto ret0; } if(yyn == 0) { /* error ... attempt to resume parsing */ switch(yyerrflag) { case 0: /* brand new error */ yyerror("syntax error"); yynerrs++; if(yydebug >= 1) { fprint(2, "%s", yystatname(yystate)); fprint(2, "saw %s\n", yytokname(yychar)); } case 1: case 2: /* incompletely recovered error ... try again */ yyerrflag = 3; /* find a state where "error" is a legal shift action */ while(yyp >= yys) { yyn = yypact[yyp->yys] + YYERRCODE; if(yyn >= 0 && yyn < YYLAST) { yystate = yyact[yyn]; /* simulate a shift of "error" */ if(yychk[yystate] == YYERRCODE) goto yystack; } /* the current yyp has no shift onn "error", pop stack */ if(yydebug >= 2) fprint(2, "error recovery pops state %d, uncovers %d\n", yyp->yys, (yyp-1)->yys ); yyp--; } /* there is no state on the stack with an error shift ... abort */ goto ret1; case 3: /* no shift yet; clobber input char */ if(yydebug >= 2) fprint(2, "error recovery discards %s\n", yytokname(yychar)); if(yychar == YYEOFCODE) goto ret1; yychar = -1; goto yynewstate; /* try again in the same state */ } } /* reduction by production yyn */ if(yydebug >= 2) fprint(2, "reduce %d in:\n\t%s", yyn, yystatname(yystate)); yypt = yyp; yyp -= yyr2[yyn]; yyval = (yyp+1)->yyv; yym = yyn; /* consult goto table to find next state */ yyn = yyr1[yyn]; yyg = yypgo[yyn]; yyj = yyg + yyp->yys + 1; if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn) yystate = yyact[yyg]; switch(yym) { case 1:#line 41 "asm.y"{ assem(yypt[-0].yyv.inst);Lines 1–500 of 877. Load more
#line 2 "asm.y" #include "asm.h" union { uvlong l; double d; } u; #line 9 "asm.y" typedef union { Inst* inst; Addr* addr; vlong ival; double fval; String* string; Sym* sym; List* list; } YYSTYPE; extern int yyerrflag; #ifndef YYMAXDEPTH #define YYMAXDEPTH 150 #endif YYSTYPE yylval; YYSTYPE yyval; #define TOKI0 57346 #define TOKI1 57347 #define TOKI2 57348 #define TOKI3 57349 #define TCONST 57350 #define TOKSB 57351 #define TOKFP 57352 #define TOKHEAP 57353 #define TOKDB 57354 #define TOKDW 57355 #define TOKDL 57356 #define TOKDF 57357 #define TOKDS 57358 #define TOKVAR 57359 #define TOKEXT 57360 #define TOKMOD 57361 #define TOKLINK 57362 #define TOKENTRY 57363 #define TOKARRAY 57364 #define TOKINDIR 57365 #define TOKAPOP 57366 #define TOKLDTS 57367 #define TOKEXCS 57368 #define TOKEXC 57369 #define TOKETAB 57370 #define TOKSRC 57371 #define TID 57372 #define TFCONST 57373 #define TSTRING 57374 #define YYEOFCODE 1 #define YYERRCODE 2 short yyexca[] = {-1, 1, 1, -1, -2, 0, -1, 61, 4, 54, 5, 54, 6, 54, 7, 54, 8, 54, 9, 54, 10, 54, 11, 54, 12, 54, 13, 54, 46, 54, -2, 46, -1, 140, 44, 44, -2, 50, -1, 159, 44, 43, -2, 45, }; #define YYNPROD 70 #define YYPRIVATE 57344 #define YYLAST 561 short yyact[] = { 64, 59, 107, 65, 162, 161, 31, 160, 158, 34, 42, 43, 44, 45, 156, 47, 48, 33, 50, 51, 52, 30, 32, 54, 55, 148, 39, 38, 63, 66, 67, 105, 100, 70, 99, 36, 98, 96, 90, 69, 57, 172, 85, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 165, 163, 126, 151, 61, 58, 53, 49, 101, 60, 41, 103, 40, 46, 102, 143, 144, 106, 56, 108, 109, 110, 111, 112, 113, 153, 152, 116, 117, 118, 7, 115, 114, 119, 108, 108, 120, 121, 127, 128, 129, 130, 6, 132, 133, 134, 135, 136, 131, 137, 1, 140, 103, 35, 145, 142, 146, 29, 28, 27, 26, 68, 149, 150, 5, 8, 9, 10, 11, 12, 13, 14, 16, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 4, 74, 75, 76, 159, 62, 138, 125, 2, 82, 83, 84, 3, 164, 0, 122, 29, 28, 27, 26, 166, 167, 168, 0, 169, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 173, 124, 123, 175, 0, 177, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 39, 38, 0, 0, 39, 38, 63, 0, 0, 36, 143, 144, 0, 36, 0, 141, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 72, 73, 74, 75, 76, 37, 104, 0, 0, 61, 0, 41, 0, 40, 139, 41, 0, 40, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 176, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 77, 78, 72, 73, 74, 75, 76, 174, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 171, 80, 79, 77, 78, 72, 73, 74, 75, 76, 170, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 157, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 155, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 154, 79, 77, 78, 72, 73, 74, 75, 76, 0, 147, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 97, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 95, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 92, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 91, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 87, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 39, 38, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 86, 81, 80, 79, 77, 78, 72, 73, 74, 75, 76, 0, 0, 71, 37, 0, 0, 0, 0, 0, 41, 0, 40 }; short yypact[] = { -1000,-1000, 96,-1000, -22, -23,-1000,-1000, 512, 512, 512, 512, 512, 26, 512, 512, 20, 512, 512, 512, -1000, 19, 512, 512, 29, 16, 17, 17, 17,-1000, 138, -5, 512,-1000, 507,-1000,-1000,-1000, 512, 512, 512, 512, 494, 466, 453, 443, -6, 425, 402,-1000, 384, 374, 361, -7, 535, 333, -8, -10,-1000, -12, 512,-1000,-1000, 512, 174,-1000, -13,-1000,-1000, 512, 535, 512, 512, 512, 512, 512, 512, 78, 76, 512, 512, 512,-1000,-1000,-1000, 39, 512, 512, 133, 13, 512, 512, 512, 512, -23, 512, 512, 512, 512, 512, 183, 535,-1000, 157, 179, 17, 320, -19, 535, 126, 126,-1000,-1000,-1000, 512, 512, 258, 349, 281,-1000, -19, -19,-1000,-1000,-1000, 38,-1000, 535, 310, 292, 535, -30, 535, 535, 269, 535, 535,-1000, -36, 512, -1000, 49, -40, -42, -43,-1000,-1000, 12, 512, 205, 205,-1000,-1000,-1000, 11, 512, 512, 512, 17, 535, -1000,-1000,-1000,-1000, 535,-1000, 251, 535, 241,-1000, -1, 512,-1000, 228, 512, 200, 512, 535 }; short yypgo[] = { 0, 148, 144, 83, 106, 0, 6, 1, 142, 141, 3, 2, 109, 103, 95 }; short yyr1[] = { 0, 13, 2, 2, 1, 1, 1, 1, 6, 6, 12, 12, 11, 11, 3, 3, 3, 3, 3, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 8, 8, 7, 7, 7, 9, 9, 9, 10, 10, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; short yyr2[] = { 0, 1, 0, 2, 3, 5, 1, 1, 2, 1, 0, 2, 1, 3, 4, 6, 4, 2, 1, 4, 4, 4, 4, 4, 4, 5, 5, 5, 4, 4, 6, 8, 2, 4, 6, 4, 1, 4, 2, 12, 4, 4, 2, 2, 1, 2, 1, 1, 2, 4, 1, 4, 4, 1, 1, 2, 2, 2, 3, 1, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3 }; short yychk[] = { -1000, -13, -2, -1, 40, 21, -14, -3, 22, 23, 24, 25, 26, 27, 28, 30, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 17, 16, 15, 14, 43, -6, 45, 40, -5, -4, 18, 40, 10, 9, 48, 46, -5, -5, -5, -5, 40, -5, -5, 40, -5, -5, -5, 40, -5, -5, 42, 11, 42, -7, 45, 40, -9, 11, -5, -10, -7, -7, -3, 44, -5, 44, 9, 10, 11, 12, 13, 7, 8, 6, 5, 4, -4, -4, -4, -5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, -5, -10, -5, 46, 44, -5, -11, -5, -5, -5, -5, -5, -5, 7, 8, -5, -5, -5, 47, -11, -11, 18, 41, 40, 10, 42, -5, -5, -5, -5, -6, -5, -5, -5, -5, -5, -7, -8, 45, -10, 46, -10, 19, 20, -7, -12, 44, 44, -5, -5, 18, 41, 40, 44, 44, 44, 44, 44, -5, 47, 47, 47, 42, -5, 42, -5, -5, -5, -7, 44, 44, 42, -5, 44, -5, 44, -5 }; short yydef[] = { 2, -2, 1, 3, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 9, 0, 59, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 38, 0, 0, 0, 42, 0, 0, -2, 47, 0, 0, 50, 0, 17, 4, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 48, 0, 0, 0, 10, 19, 12, 60, 61, 62, 63, 64, 0, 0, 67, 68, 69, 58, 20, 21, 22, 23, 24, 0, 28, 29, 0, 0, 33, 0, 35, 37, 0, 40, 41, 14, 0, 0, -2, 0, 0, 0, 0, 16, 5, 0, 0, 65, 66, 25, 26, 27, 0, 0, 0, 0, 0, -2, 49, 51, 52, 11, 13, 30, 0, 34, 0, 15, 0, 0, 31, 0, 0, 0, 0, 39 }; 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, 45, 13, 6, 0, 46, 47, 11, 9, 44, 10, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 7, 0, 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, 48 }; 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 }; long yytok3[] = { 0 }; #define YYFLAG -1000 #define yyclearin yychar = -1 #define yyerrok yyerrflag = 0 #ifdef yydebug #include "y.debug" #else #define yydebug 0 char* 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; } long yylex1(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; } int yyparse(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]; if(yyn < 0) goto ret0; } if(yyn == 0) { /* error ... attempt to resume parsing */ switch(yyerrflag) { case 0: /* brand new error */ yyerror("syntax error"); yynerrs++; if(yydebug >= 1) { fprint(2, "%s", yystatname(yystate)); fprint(2, "saw %s\n", yytokname(yychar)); } case 1: case 2: /* incompletely recovered error ... try again */ yyerrflag = 3; /* find a state where "error" is a legal shift action */ while(yyp >= yys) { yyn = yypact[yyp->yys] + YYERRCODE; if(yyn >= 0 && yyn < YYLAST) { yystate = yyact[yyn]; /* simulate a shift of "error" */ if(yychk[yystate] == YYERRCODE) goto yystack; } /* the current yyp has no shift onn "error", pop stack */ if(yydebug >= 2) fprint(2, "error recovery pops state %d, uncovers %d\n", yyp->yys, (yyp-1)->yys ); yyp--; } /* there is no state on the stack with an error shift ... abort */ goto ret1; case 3: /* no shift yet; clobber input char */ if(yydebug >= 2) fprint(2, "error recovery discards %s\n", yytokname(yychar)); if(yychar == YYEOFCODE) goto ret1; yychar = -1; goto yynewstate; /* try again in the same state */ } } /* reduction by production yyn */ if(yydebug >= 2) fprint(2, "reduce %d in:\n\t%s", yyn, yystatname(yystate)); yypt = yyp; yyp -= yyr2[yyn]; yyval = (yyp+1)->yyv; yym = yyn; /* consult goto table to find next state */ yyn = yyr1[yyn]; yyg = yypgo[yyn]; yyj = yyg + yyp->yys + 1; if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn) yystate = yyact[yyg]; switch(yym) { case 1: #line 41 "asm.y" { assem(yypt[-0].yyv.inst);