📄 gram.c
字号:
0, 1, 0, 2, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 5, 6, 5, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 6, 3, 4, 5, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 1, 3, 1, 1, 1, 3, 3, 2, 0, 3, 0, 2, 3, 1, 3, 1, 1, 1, 3, 1, 3, 3, 4, 0, 2, 1, 3, 1, 3, 1, 1, 2, 4, 1, 3, 0, 1, 3, 3, 0, 4, 1, 3, 1, 3, 1, 2, 2, 3, 1, 1, 3, 5, 1, 3, 0, 1, 7, 1, 3, 2, 2, 3, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 3, 3, 1, 3, 1, 1, 3, 0, 1, 1, 3, 1, 3, 1, 1, 1, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, 5, 5, 0, 1, 1, 1, 1, 1, 1, 1, 5, 1, 3, 1, 1, 3, 3, 3, 3, 2, 3, 1, 7, 2, 2, 6, 2, 2, 5, 3, 4, 5, 2, 1, 1, 10, 1, 3, 4, 3, 3, 1, 1, 3, 3, 7, 7, 0, 1, 3, 1, 3, 1, 2, 1, 1, 1, 3, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 2, 3, 1, 3, 3, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 3, 1, 3, 1, 1, 1, 2, 2, 2, 1, 3, 3, 4, 4, 1, 3, 1, 5, 1, 1, 1, 3, 3, 3, 3, 3, 3, 1, 5, 5, 5, 0 };short yychk[]={-1000, -1, -71, -2, 256, 3, 1, -72, -73, -74, 19, 38, 4, 61, 24, 70, 45, -8, 41, -11, -46, -77, -78, -79, -80, -81, -82, 67, 44, 58,-106, 34,-107, 37, 36, 40, -9, 28, 43, 54, 42, 51,-103, 56,-108, 21, 30,-109,-110, 49, -32, 65, -15, 50, -10, 31, 20, 46, 47, 48,-111, 25, 59, 69, 53, 64, 29, 35, 32, 55, 26, 73, 33, 22, 68,-112,-114,-115,-117,-118,-119,-121, 63, 74, 60, 23, 66, 39, 52, 57, 27, -17, 5, -75, -76, -76, -76, -76, 45, -86, 79, -34, -30, 15, 79, -86, 79, 79, 79, 79, 79,-102, 84, -83, -83, -75,-106, 71, -75, -75, -75, -7, 83, -83, -83, -83, -83, -83, -86, -36, -30, -75, -75, -75, 75, -75, -75, -75,-104, -75, -75, -75, -75,-113, -41, 83, 85, 75, -36, -45, -40, -13, 13, 14, 5, 7, 8, 9, 81, 82,-113, 75,-113,-116, -41, 83,-113, 79, -75, -75, -75, -75, -75, -35, -34, -35, -34, -34, -76, -30, -23, 75, -30, -47, 86, 84, -33, -30, -30, -30, -90, 75, -97, -98,-100, -30, -84, -91, -30, -47, 75, -88, 75, -88, -33, -47, -30, -30, -90, -97,-105, -70, -67, -55, -66, 15, 75, 77, -29, 75, -4, 7, 75, 76, -22, -43, -37, 83, -38, 75, -44, -36, -45, -13, 91, -39, -37, -39, 75,-105, -3, 7, -30, 75, -30, -40,-122, -41, 75,-123, 83, 85, -16, 16, -13, 83, 84, 85, 86, -40, -40, -26, 79, -6, -36, 75, 79, -27, -38, -5, -28, -37, -44, 75, -27,-120,-120,-120,-120, -40, 83, -23, -23, -34, -83, 76, -24, -31, -30, 83, -87, 75, -86, 15, -87, -48, -36, 75, -8, 84, 79, -85, -92, -30, -3, -37, -37, 75, -33, 84, 79, -64, -68, 75, -69, -65, -55, -66, -37, -19, -39, -20, -37, 72, -37, 76, 79, -13, 83, 84, 85, -14, 90, 89, 88, 87, 86, 92, 94, 93, 96, 95, 97, -3, -37, -38, -37, -37, -37, -86, -96, -3, 76, 76, 79, -40, -37, 83, 85, -40, -40, -40, -40, -40, 76, 79, -26, -26, -26, 79, 79, 79, -38, -5, -28,-120,-120, -23, -87, 76, 79, -7, -93, -94, -33, 84, 76, 79, -99,-101, -12, 15, -18, -30, -91, 76, 79, 77, -89, 76, -89, 83, -62, -61, -49, -55, -53, -54, -50, -44, 13, 14, 5, 6, -52, 7, 81, 82, -51, 75, 12, 11, 10, 8, 9, -67, -68, 75, -63, -60, -59, -58, 81, 82, -57, -56, 7, -55, 75, 79, -64, -68, 76, 78, 79, -30, 76, -43, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, 76, 79, 76, 75, 79, 76,-123, -40, 76, -6, 79, -38, -5, -38, -5, -38, -5, 79, 79, 79, -7, -31, 76, 79, -95, -42, -37, 83, -36, 76, 79, 82, 79, -92, -37, -86, 71, 76, 84, 79, 83, 83, -53, -51, -53, -51, -59, 76, 79, 78, 81, 82, 83, 84, -58, -58, 85, -59, -55, -65, -68, -29, 75, -39, -37, -3, -38, -96, -3, -86, -21, -30, -38, -21, -21, -21, -95, 78,-101, -12, -30, -21, -30, -89, -61, -49, -55, -53, -49, -59, -60, -58, -58, -57, -57, -57, 76, 77, 76, 79, 76, 76, -37, 76, 77, 76, 76, 76, -42, -37, 76, -63, -59, -3, -25, -37, 76, 79, 79, -3, -37 };short yydef[]={ 1, -2, 0, 0, 9, 10, 2, 3, 4, 5, 0, 266, 8, 17, 17, 17, 17, 255, 0, 30, -2, 32, 33, 34, 35, 36, 37, 110, 40, 110, 229, 266, 0, 266, 266, 266, 57, 110, 110, 110, 110, 110, -2, 105, 0, 266, 266, 241, 242, 266, 244, 266, 266, 266, 45, 114, 250, 266, 266, 266, 269, 266, 262, 263, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 0, 0, 0, 0, 282, 266, 266, 266, 266, 266, 285, 286, 287, 289, 290, 291, 6, 29, 7, 20, 20, 0, 0, 17, 0, 256, 22, 18, 19, 0, 0, 256, 0, 0, 0, 98, 106, 0, 38, 0, 267, 231, 232, 0, 234, 235, 44, 267, 0, 0, 0, 0, 98, 0, 0, 205, 0, 240, 0, 0, 210, 210, 0, 0, 0, 0, 0, 0, 270, -2, 272, 273, 0, 221, 222, 0, 0, 212, 213, 214, 215, 216, 217, 197, 198, 274, 0, 275, 276, -2, 293, 280, 0, 326, 326, 326, 326, 0, 11, 21, 12, 22, 22, 0, 110, 16, 0, 83, 255, 64, 0, 63, 83, 67, 69, 71, 0, 96, 0, 0, 0, 39, 75, 77, 78, 0, 0, 0, 0, 60, 0, 66, 68, 70, 95, 113, 0, 116, 120, 124, 125, 0, 0, 206, -2, 0, 249, 0, 245, 0, 258, 260, 0, 180, 0, 182, 183, 184, 0, 0, 247, 211, 248, 0, 112, 251, 94, -2, 0, 257, 298, 0, 219, 0, 296, 299, 300, 0, 304, 0, 0, 0, 0, 0, 227, 298, 277, 0, 309, 311, 0, 0, 281, -2, 314, 315, 0, -2, 0, 283, 284, 288, 305, 306, 326, 326, 13, 14, 22, 83, 23, 0, 25, 27, 28, 57, 85, 0, 0, 82, 0, 73, 0, 99, 0, 0, 0, 79, 0, 268, 0, 268, 0, 61, 0, 0, 121, 122, 130, 0, 133, 0, 138, 238, 0, 0, 177, -2, 0, 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, 200, 201, 202, 203, 204, 261, 0, 180, 189, 195, 0, 0, 0, 92, -2, 295, 0, 0, 301, 302, 303, 223, 224, 225, 226, 228, 294, 0, 279, 0, 278, 0, 0, 0, 180, 0, 0, 307, 308, 15, 57, 24, 0, 43, 0, 0, 62, 65, 72, 0, 0, 100, 102, 104, 107, 108, 76, 41, 0, 0, 255, 0, 58, 0, 0, 118, 139, 142, 151, 143, 144, 145, 146, 147, 148, 149, 150, 154, 0, 0, 155, 0, 160, 161, 162, 158, 159, 117, 123, 130, 0, 0, -2, 163, 0, 0, 168, 171, 173, 174, 0, 0, 135, 136, 207, 210, 0, 239, 0, 259, 185, 186, 187, 188, -2, 191, 192, 193, 194, 196, 181, 0, 236, 0, 0, 255, 297, 298, 220, 310, 0, -2, 317, -2, 319, -2, 321, 0, 0, 0, 42, 26, 84, 0, 86, 88, 91, 90, 74, 97, 0, 0, 0, 80, 81, 0, 233, 268, 115, 0, 0, 0, 152, 156, 153, 157, 131, 126, 0, 130, 0, 0, 0, 0, 164, 165, 0, 0, 0, 134, 137, 208, 210, 0, 179, 0, 180, 0, 93, 0, 0, 205, -2, 0, 0, 0, 87, 0, 101, 103, 109, 230, 0, 59, 119, 140, 142, 151, 141, 129, 0, 166, 167, 169, 170, 172, 175, 0, 209, 0, 218, 253, 254, 312, 0, 323, 324, 325, 89, 91, 127, 0, 128, 0, 237, 264, 132, 0, 0, 243, 265 };#ifndef lintstatic char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83";#endif## define YYFLAG -1000# define YYERROR goto yyerrlab# define YYACCEPT return(0)# define YYABORT return(1)/* parser for yacc output */#ifdef YYDEBUGint yydebug = 0; /* 1 for debugging */#endifYYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */int yychar = -1; /* current input token number */int yynerrs = 0; /* number of errors */short yyerrflag = 0; /* error recovery flag */yyparse() { short yys[YYMAXDEPTH]; short yyj, yym; register YYSTYPE *yypvt; register short yystate, *yyps, yyn; register YYSTYPE *yypv; register short *yyxi; yystate = 0; yychar = -1; yynerrs = 0; yyerrflag = 0; yyps= &yys[-1]; yypv= &yyv[-1]; yystack: /* put a state and value onto the stack */#ifdef YYDEBUG if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar );#endif if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); } *yyps = yystate; ++yypv; *yypv = yyval; yynewstate: yyn = yypact[yystate]; if( yyn<= YYFLAG ) goto yydefault; /* simple state */ if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0; if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault; if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ yychar = -1; yyval = yylval; yystate = yyn; if( yyerrflag > 0 ) --yyerrflag; goto yystack; } yydefault: /* default state action */ if( (yyn=yydef[yystate]) == -2 ) { if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0; /* look through exception table */ for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */ while( *(yyxi+=2) >= 0 ){ if( *yyxi == yychar ) break; } if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ } if( yyn == 0 ){ /* error */ /* error ... attempt to resume parsing */ switch( yyerrflag ){ case 0: /* brand new error */ yyerror( "syntax error" ); yyerrlab: ++yynerrs; case 1: case 2: /* incompletely recovered error ... try again */ yyerrflag = 3; /* find a state where "error" is a legal shift action */ while ( yyps >= yys ) { yyn = yypact[*yyps] + YYERRCODE; if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ yystate = yyact[yyn]; /* simulate a shift of "error" */ goto yystack; } yyn = yypact[*yyps]; /* the current yyps has no shift onn "error", pop stack */#ifdef YYDEBUG if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );#endif --yyps; --yypv; } /* there is no state on the stack with an error shift ... abort */ yyabort: return(1); case 3: /* no shift yet; clobber input char */#ifdef YYDEBUG if( yydebug ) printf( "error recovery discards char %d\n", yychar );#endif if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ yychar = -1; goto yynewstate; /* try again in the same state */ } } /* reduction by production yyn */#ifdef YYDEBUG if( yydebug ) printf("reduce %d\n",yyn);#endif yyps -= yyr2[yyn]; yypvt = yypv; yypv -= yyr2[yyn]; yyval = yypv[1]; yym=yyn; /* consult goto table to find next state */ yyn = yyr1[yyn]; yyj = yypgo[yyn] + *yyps + 1; if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; switch(yym){ case 3:# line 259 "gram.in"{ lastwasbranch = NO; } break;case 5:# line 262 "gram.in"{ if(yypvt[-1].labval && (yypvt[-1].labval->labelno==dorange)) enddo(yypvt[-1].labval->labelno); if(lastwasbranch && thislabel==NULL) warn("statement cannot be reached"); lastwasbranch = thiswasbranch; thiswasbranch = NO; if(yypvt[-1].labval) { if(yypvt[-1].labval->labtype == LABFORMAT) err("label already that of a format"); else yypvt[-1].labval->labtype = LABEXEC; } if(!optimflag) { argtemplist = hookup(argtemplist, activearglist); activearglist = CHNULL; } } break;case 6:# line 282 "gram.in"{ doinclude( yypvt[-0].charpval ); } break;case 7:# line 284 "gram.in"{ lastwasbranch = NO; endproc(); } break;case 8:# line 286 "gram.in"{ execerr("unclassifiable statement", CNULL); flline(); } break;case 9:# line 288 "gram.in"{ flline(); needkwd = NO; inioctl = NO; yyerrok; yyclearin; } break;case 10:# line 293 "gram.in"{#ifdef SDB if( sdbflag ) { linenostab(lineno); }#endif if(yystno != 0) { yyval.labval = thislabel = mklabel(yystno); if(thislabel->labdefined) execerr("label %s already defined", convic(thislabel->stateno) ); else { if(thislabel->blklevel!=0 && thislabel->blklevel<blklevel && thislabel->labtype!=LABFORMAT) warn1("there is a branch to label %s from outside block", convic( (ftnint) (thislabel->stateno) ) ); thislabel->blklevel = blklevel; thislabel->labdefined = YES; } } else yyval.labval = thislabel = NULL; } break;case 11:# line 321 "gram.in"{startproc(yypvt[-0].namval, CLMAIN); } break;case 12:# line 323 "gram.in"{ if(yypvt[-0].namval) NO66("named BLOCKDATA"); startproc(yypvt[-0].namval, CLBLOCK); } break;case 13:# line 326 "gram.in"{ entrypt(CLPROC, TYSUBR, (ftnint) 0, yypvt[-1].namval, yypvt[-0].chval); } break;case 14:# line 328 "gram.in"{ entrypt(CLPROC, TYUNKNOWN, (ftnint) 0, yypvt[-1].namval, yypvt[-0].chval); } break;case 15:# line 330 "gram.in"{ entrypt(CLPROC, yypvt[-4].ival, varleng, yypvt[-1].namval, yypvt[-0].chval); } break;case 16:# line 332 "gram.in"{ if(parstate==OUTSIDE || procclass==CLMAIN || procclass==CLBLOCK) execerr("misplaced entry statement", CNULL); entrypt(CLENTRY, 0, (ftnint) 0, yypvt[-1].namval, yypvt[-0].chval); } break;case 17:# line 340 "gram.in"{ newproc(); } break;case 19:# line 347 "gram.in"{ yyval.namval = mkname(toklen, token); } break;case 20:# line 350 "gram.in"{ yyval.namval = NULL; } break;case 22:# line 355 "gram.in"{ yyval.chval = 0; } break;case 23:# line 357 "gram.in"{ NO66(" () argument list"); yyval.chval = 0; } break;case 24:# line 360 "gram.in"{yyval.chval = yypvt[-1].chval; } break;case 25:# line 364 "gram.in"{ yyval.chval = (yypvt[-0].namval ? mkchain(yypvt[-0].namval,CHNULL) : CHNULL ); } break;case 26:# line 366 "gram.in"{ if(yypvt[-0].namval) yypvt[-2].chval = yyval.chval = hookup(yypvt[-2].chval, mkchain(yypvt[-0].namval,CHNULL)); } break;case 27:# line 370 "gram.in"{ if((yypvt[-0].namval->vstg!=STGUNKNOWN && yypvt[-0].namval->vstg!=STGARG) || (yypvt[-0].namval->vclass == CLPARAM) ) { dclerr("name declared as argument after use", yypvt[-0].namval); yyval.namval = NULL; } else yypvt[-0].namval->vstg = STGARG; } break;case 28:# line 378 "gram.in"{ NO66("altenate return argument"); yyval.namval = 0; substars = YES; } break;case 29:# line 385 "gram.in"{ char *s; s = copyn(toklen+1, token); s[toklen] = '\0'; yyval.charpval = s; } break;case 38:# line 472 "gram.in"{ NO66("SAVE statement"); saveall = YES; } break;case 39:# line 475 "gram.in"{ NO66("SAVE statement"); } break;case 40:# line 477 "gram.in"{ if (parstate == OUTSIDE) { newproc(); startproc(PNULL, CLMAIN); parstate = INSIDE; } if (parstate < INDCL) parstate = INDCL; fmtstmt(thislabel); setfmt(thislabel); } break;case 41:# line 490 "gram.in"{ NO66("PARAMETER statement"); } break;case 42:# line 494 "gram.in"{ settype(yypvt[-3].namval, yypvt[-5].ival, yypvt[-0].ival); if(ndim>0) setbound(yypvt[-3].namval,ndim,dims); } break;case 43:# line 498 "gram.in"{ settype(yypvt[-2].namval, yypvt[-4].ival, yypvt[-0].ival); if(ndim>0) setbound(yypvt[-2].namval,ndim,dims); } break;case 44:# line 504 "gram.in"{ varleng = yypvt[-0].ival; } break;case 45:# line 508 "gram.in"{ varleng = (yypvt[-0].ival<0 || yypvt[-0].ival==TYLONG ? 0 : typesize[yypvt[-0].ival]); vartype = yypvt[-0].ival; } break;case 46:# line 513 "gram.in"{ yyval.ival = TYLONG; } break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -