|
|
1.1 ! root 1: ! 2: # line 2 "grammar.yacc" ! 3: /* Copyright (c) 1982 Regents of the University of California */ ! 4: ! 5: static char sccsid[] = "@(#)grammar.yacc 1.2 1/20/82"; ! 6: ! 7: /* ! 8: * yacc grammar for debugger commands ! 9: */ ! 10: ! 11: #include "defs.h" ! 12: #include "command.h" ! 13: #include "sym.h" ! 14: #include "symtab.h" ! 15: #include "tree.h" ! 16: #include "process.h" ! 17: #include "source.h" ! 18: ! 19: ! 20: # line 43 "grammar.yacc" ! 21: typedef union { ! 22: SYM *y_sym; ! 23: NODE *y_node; ! 24: int y_int; ! 25: OP y_op; ! 26: long y_long; ! 27: double y_real; ! 28: char *y_string; ! 29: BOOLEAN y_bool; ! 30: } YYSTYPE; ! 31: # define ALIAS 257 ! 32: # define ASSIGN 258 ! 33: # define CALL 259 ! 34: # define CHFILE 260 ! 35: # define CONT 261 ! 36: # define DUMP 262 ! 37: # define EDIT 263 ! 38: # define GRIPE 264 ! 39: # define HELP 265 ! 40: # define LIST 266 ! 41: # define NEXT 267 ! 42: # define QUIT 268 ! 43: # define REMAKE 269 ! 44: # define PRINT 270 ! 45: # define RUN 271 ! 46: # define SH 272 ! 47: # define SOURCE 273 ! 48: # define STATUS 274 ! 49: # define STEP 275 ! 50: # define STOP 276 ! 51: # define STOPI 277 ! 52: # define TRACE 278 ! 53: # define TRACEI 279 ! 54: # define DELETE 280 ! 55: # define WHATIS 281 ! 56: # define WHICH 282 ! 57: # define WHERE 283 ! 58: # define XI 284 ! 59: # define XD 285 ! 60: # define AT 286 ! 61: # define IN 287 ! 62: # define IF 288 ! 63: # define FILENAME 289 ! 64: # define INT 290 ! 65: # define REAL 291 ! 66: # define NAME 292 ! 67: # define STRING 293 ! 68: # define DIV 294 ! 69: # define MOD 295 ! 70: # define AND 296 ! 71: # define OR 297 ! 72: # define NOT 298 ! 73: # define UNARYSIGN 299 ! 74: #define yyclearin yychar = -1 ! 75: #define yyerrok yyerrflag = 0 ! 76: extern int yychar; ! 77: extern short yyerrflag; ! 78: #ifndef YYMAXDEPTH ! 79: #define YYMAXDEPTH 150 ! 80: #endif ! 81: YYSTYPE yylval, yyval; ! 82: # define YYERRCODE 256 ! 83: ! 84: # line 530 "grammar.yacc" ! 85: ! 86: ! 87: /* ! 88: * parser error handling ! 89: */ ! 90: ! 91: yyerror(s) ! 92: char *s; ! 93: { ! 94: if (strcmp(s, "syntax error") == 0) { ! 95: error("bad command syntax"); ! 96: } else { ! 97: error(s); ! 98: } ! 99: } ! 100: ! 101: /* ! 102: * In recovering from an error we gobble input up to a newline. ! 103: */ ! 104: ! 105: gobble() ! 106: { ! 107: register int t; ! 108: ! 109: if (!nlflag) { ! 110: while ((t = yylex()) != '\n' && t != 0); ! 111: } ! 112: } ! 113: short yyexca[] ={ ! 114: -1, 1, ! 115: 0, -1, ! 116: -2, 0, ! 117: -1, 140, ! 118: 60, 0, ! 119: 61, 0, ! 120: 62, 0, ! 121: -2, 79, ! 122: }; ! 123: # define YYNPROD 106 ! 124: # define YYLAST 370 ! 125: short yyact[]={ ! 126: ! 127: 4, 48, 135, 79, 44, 50, 45, 47, 127, 69, ! 128: 76, 77, 90, 89, 87, 86, 83, 76, 93, 150, ! 129: 109, 56, 40, 145, 104, 100, 109, 101, 143, 105, ! 130: 104, 100, 130, 101, 152, 105, 109, 55, 141, 142, ! 131: 104, 55, 110, 112, 111, 105, 55, 109, 110, 112, ! 132: 111, 104, 100, 96, 101, 109, 105, 95, 39, 104, ! 133: 100, 122, 101, 92, 105, 49, 94, 119, 151, 110, ! 134: 112, 111, 75, 80, 53, 42, 109, 110, 112, 111, ! 135: 104, 100, 66, 101, 41, 105, 8, 3, 67, 2, ! 136: 1, 62, 51, 85, 60, 59, 61, 93, 82, 62, ! 137: 132, 74, 60, 6, 61, 57, 103, 73, 62, 133, ! 138: 58, 60, 103, 61, 134, 93, 62, 5, 137, 60, ! 139: 46, 61, 113, 71, 71, 99, 98, 88, 93, 81, ! 140: 81, 78, 97, 103, 124, 144, 17, 84, 18, 117, ! 141: 118, 103, 92, 0, 129, 94, 126, 128, 0, 131, ! 142: 0, 0, 91, 0, 0, 149, 125, 136, 0, 0, ! 143: 92, 0, 103, 94, 0, 0, 114, 115, 116, 0, ! 144: 0, 0, 0, 92, 120, 0, 94, 0, 0, 0, ! 145: 121, 0, 120, 0, 0, 146, 0, 0, 0, 0, ! 146: 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, ! 147: 0, 0, 0, 138, 139, 140, 0, 0, 0, 0, ! 148: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 149: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 150: 0, 0, 0, 43, 0, 0, 148, 0, 0, 0, ! 151: 0, 0, 0, 0, 0, 0, 0, 25, 9, 26, ! 152: 10, 11, 28, 27, 29, 30, 12, 13, 15, 31, ! 153: 14, 34, 7, 32, 33, 16, 35, 36, 37, 38, ! 154: 19, 20, 21, 22, 23, 24, 106, 107, 108, 102, ! 155: 0, 0, 106, 107, 108, 102, 0, 0, 0, 0, ! 156: 123, 54, 106, 107, 108, 54, 0, 52, 0, 0, ! 157: 54, 0, 0, 106, 107, 108, 102, 0, 0, 0, ! 158: 0, 106, 107, 108, 102, 0, 0, 0, 0, 0, ! 159: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ! 160: 0, 0, 106, 107, 108, 102, 0, 48, 0, 0, ! 161: 0, 63, 64, 47, 65, 70, 69, 76, 72, 63, ! 162: 64, 47, 65, 0, 70, 69, 68, 72, 63, 64, ! 163: 47, 65, 48, 0, 0, 0, 63, 64, 47, 65 }; ! 164: short yypact[]={ ! 165: ! 166: -1000, -10,-1000, 48,-1000,-1000, -40,-1000, -56,-285, ! 167: -284,-1000, 5,-1000, 76,-1000,-1000, 68, 59,-279, ! 168: -285,-289,-1000, 76, 76,-273,-285,-284,-1000,-1000, ! 169: -1000,-1000,-274,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 170: -275,-1000, -56,-1000,-276,-277, 51,-1000,-1000,-1000, ! 171: -1000,-1000,-1000, 13,-1000,-1000,-1000, 9, 82,-1000, ! 172: 76, 76, 76,-1000,-1000,-1000,-271,-271, 76,-285, ! 173: 1, 17, 10,-278,-271,-1000, 76,-1000, -28,-1000, ! 174: -1000, -12,-1000,-284, 69,-1000,-1000,-1000,-1000,-1000, ! 175: -1000, 17, 76,-290,-1000, 10, 76, 76, 76, 76, ! 176: -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, ! 177: -23, -33,-1000, 76, -2, -2, -18,-1000,-1000,-1000, ! 178: 17, -28,-1000, 10,-1000,-271,-1000, 1,-1000,-1000, ! 179: 76,-1000,-1000, 76, -74,-1000,-1000,-1000, -2,-1000, ! 180: 38,-1000,-1000,-1000, 27,-1000,-1000,-1000, 17, -7, ! 181: -1000,-1000,-1000 }; ! 182: short yypgo[]={ ! 183: ! 184: 0, 138, 136, 132, 126, 125, 65, 117, 103, 88, ! 185: 82, 100, 72, 21, 105, 67, 110, 95, 92, 61, ! 186: 73, 90, 89, 87, 86, 84, 75 }; ! 187: short yyr1[]={ ! 188: ! 189: 0, 21, 21, 22, 22, 23, 23, 23, 23, 23, ! 190: 24, 25, 25, 26, 26, 26, 7, 7, 7, 7, ! 191: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, ! 192: 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, ! 193: 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, ! 194: 2, 2, 9, 9, 10, 10, 10, 6, 6, 11, ! 195: 11, 18, 18, 18, 19, 19, 20, 20, 12, 12, ! 196: 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, ! 197: 14, 15, 16, 16, 16, 16, 16, 17, 17, 17, ! 198: 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, ! 199: 5, 5, 5, 5, 5, 5 }; ! 200: short yyr2[]={ ! 201: ! 202: 0, 2, 0, 2, 1, 1, 1, 3, 1, 2, ! 203: 1, 2, 0, 1, 2, 2, 3, 2, 1, 2, ! 204: 2, 1, 2, 1, 1, 3, 3, 3, 4, 3, ! 205: 3, 2, 2, 2, 2, 1, 2, 2, 3, 1, ! 206: 3, 2, 1, 1, 1, 1, 2, 1, 1, 1, ! 207: 1, 1, 1, 2, 2, 2, 3, 0, 1, 0, ! 208: 3, 0, 1, 3, 1, 1, 1, 3, 0, 2, ! 209: 1, 3, 1, 4, 1, 2, 2, 3, 3, 3, ! 210: 3, 1, 1, 1, 4, 3, 2, 1, 1, 1, ! 211: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ! 212: 1, 2, 1, 2, 1, 2 }; ! 213: short yychk[]={ ! 214: ! 215: -1000, -21, -22, -23, 10, -7, -8, 272, -24, 258, ! 216: 260, 261, 266, 267, 270, 268, 275, -2, -1, 280, ! 217: 281, 282, 283, 284, 285, 257, 259, 263, 262, 264, ! 218: 265, 269, 273, 274, 271, 276, 277, 278, 279, 10, ! 219: 62, -25, -26, 289, 60, 62, -16, 292, 286, -6, ! 220: 289, -18, 292, -19, 290, 36, -13, -14, -16, -17, ! 221: 43, 45, 40, 290, 291, 293, -10, -9, 288, 287, ! 222: 286, -14, 289, -9, -10, -12, 288, 290, -16, 292, ! 223: -20, -14, -20, 289, -16, -6, 289, 289, -25, 289, ! 224: 289, -14, 91, 46, 94, 44, 44, -3, -4, -5, ! 225: 43, 45, 297, 124, 42, 47, 294, 295, 296, 38, ! 226: 60, 62, 61, 40, -14, -14, -14, -12, -12, -15, ! 227: -14, -16, -19, 289, -19, -10, -12, 286, -12, -15, ! 228: 44, -6, -11, 40, -13, 292, -19, -13, -14, -14, ! 229: -14, 61, 62, 61, -13, 41, -19, -12, -14, -13, ! 230: 93, 41, 41 }; ! 231: short yydef[]={ ! 232: ! 233: 2, -2, 1, 0, 4, 5, 6, 8, 12, 0, ! 234: 57, 18, 61, 21, 0, 23, 24, 0, 68, 0, ! 235: 0, 0, 35, 0, 0, 39, 0, 57, 42, 43, ! 236: 44, 45, 0, 47, 10, 50, 51, 48, 49, 3, ! 237: 0, 9, 12, 13, 0, 0, 0, 82, 83, 17, ! 238: 58, 19, 20, 62, 64, 65, 22, 70, 72, 74, ! 239: 0, 0, 0, 87, 88, 89, 68, 68, 0, 0, ! 240: 83, 52, 0, 68, 68, 31, 0, 32, 33, 34, ! 241: 36, 66, 37, 57, 59, 41, 46, 7, 11, 14, ! 242: 15, 16, 0, 0, 86, 0, 0, 0, 0, 0, ! 243: 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ! 244: 100, 102, 104, 0, 75, 76, 0, 25, 26, 27, ! 245: 81, 54, 55, 0, 53, 68, 30, 0, 29, 69, ! 246: 0, 38, 40, 0, 0, 85, 63, 71, 77, 78, ! 247: -2, 101, 105, 103, 0, 80, 56, 28, 67, 0, ! 248: 84, 73, 60 }; ! 249: # ! 250: # define YYFLAG -1000 ! 251: # define YYERROR goto yyerrlab ! 252: # define YYACCEPT return(0) ! 253: # define YYABORT return(1) ! 254: ! 255: /* parser for yacc output */ ! 256: ! 257: #ifdef YYDEBUG ! 258: int yydebug = 0; /* 1 for debugging */ ! 259: #endif ! 260: YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ ! 261: int yychar = -1; /* current input token number */ ! 262: int yynerrs = 0; /* number of errors */ ! 263: short yyerrflag = 0; /* error recovery flag */ ! 264: ! 265: yyparse() { ! 266: ! 267: short yys[YYMAXDEPTH]; ! 268: short yyj, yym; ! 269: register YYSTYPE *yypvt; ! 270: register short yystate, *yyps, yyn; ! 271: register YYSTYPE *yypv; ! 272: register short *yyxi; ! 273: ! 274: yystate = 0; ! 275: yychar = -1; ! 276: yynerrs = 0; ! 277: yyerrflag = 0; ! 278: yyps= &yys[-1]; ! 279: yypv= &yyv[-1]; ! 280: ! 281: yystack: /* put a state and value onto the stack */ ! 282: ! 283: #ifdef YYDEBUG ! 284: if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar ); ! 285: #endif ! 286: if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); } ! 287: *yyps = yystate; ! 288: ++yypv; ! 289: *yypv = yyval; ! 290: ! 291: yynewstate: ! 292: ! 293: yyn = yypact[yystate]; ! 294: ! 295: if( yyn<= YYFLAG ) goto yydefault; /* simple state */ ! 296: ! 297: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0; ! 298: if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault; ! 299: ! 300: if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ ! 301: yychar = -1; ! 302: yyval = yylval; ! 303: yystate = yyn; ! 304: if( yyerrflag > 0 ) --yyerrflag; ! 305: goto yystack; ! 306: } ! 307: ! 308: yydefault: ! 309: /* default state action */ ! 310: ! 311: if( (yyn=yydef[yystate]) == -2 ) { ! 312: if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0; ! 313: /* look through exception table */ ! 314: ! 315: for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */ ! 316: ! 317: while( *(yyxi+=2) >= 0 ){ ! 318: if( *yyxi == yychar ) break; ! 319: } ! 320: if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ ! 321: } ! 322: ! 323: if( yyn == 0 ){ /* error */ ! 324: /* error ... attempt to resume parsing */ ! 325: ! 326: switch( yyerrflag ){ ! 327: ! 328: case 0: /* brand new error */ ! 329: ! 330: yyerror( "syntax error" ); ! 331: yyerrlab: ! 332: ++yynerrs; ! 333: ! 334: case 1: ! 335: case 2: /* incompletely recovered error ... try again */ ! 336: ! 337: yyerrflag = 3; ! 338: ! 339: /* find a state where "error" is a legal shift action */ ! 340: ! 341: while ( yyps >= yys ) { ! 342: yyn = yypact[*yyps] + YYERRCODE; ! 343: if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ ! 344: yystate = yyact[yyn]; /* simulate a shift of "error" */ ! 345: goto yystack; ! 346: } ! 347: yyn = yypact[*yyps]; ! 348: ! 349: /* the current yyps has no shift onn "error", pop stack */ ! 350: ! 351: #ifdef YYDEBUG ! 352: if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); ! 353: #endif ! 354: --yyps; ! 355: --yypv; ! 356: } ! 357: ! 358: /* there is no state on the stack with an error shift ... abort */ ! 359: ! 360: yyabort: ! 361: return(1); ! 362: ! 363: ! 364: case 3: /* no shift yet; clobber input char */ ! 365: ! 366: #ifdef YYDEBUG ! 367: if( yydebug ) printf( "error recovery discards char %d\n", yychar ); ! 368: #endif ! 369: ! 370: if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ ! 371: yychar = -1; ! 372: goto yynewstate; /* try again in the same state */ ! 373: ! 374: } ! 375: ! 376: } ! 377: ! 378: /* reduction by production yyn */ ! 379: ! 380: #ifdef YYDEBUG ! 381: if( yydebug ) printf("reduce %d\n",yyn); ! 382: #endif ! 383: yyps -= yyr2[yyn]; ! 384: yypvt = yypv; ! 385: yypv -= yyr2[yyn]; ! 386: yyval = yypv[1]; ! 387: yym=yyn; ! 388: /* consult goto table to find next state */ ! 389: yyn = yyr1[yyn]; ! 390: yyj = yypgo[yyn] + *yyps + 1; ! 391: if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; ! 392: switch(yym){ ! 393: ! 394: case 1: ! 395: # line 66 "grammar.yacc" ! 396: { ! 397: prompt(); ! 398: } break; ! 399: case 5: ! 400: # line 83 "grammar.yacc" ! 401: { ! 402: eval(yypvt[-0].y_node); ! 403: } break; ! 404: case 6: ! 405: # line 87 "grammar.yacc" ! 406: { ! 407: eval(yypvt[-0].y_node); ! 408: } break; ! 409: case 7: ! 410: # line 91 "grammar.yacc" ! 411: { ! 412: setout(yypvt[-0].y_string); ! 413: eval(yypvt[-2].y_node); ! 414: unsetout(); ! 415: } break; ! 416: case 8: ! 417: # line 97 "grammar.yacc" ! 418: { ! 419: shell(yypvt[-0].y_string); ! 420: } break; ! 421: case 9: ! 422: # line 101 "grammar.yacc" ! 423: { ! 424: run(); ! 425: } break; ! 426: case 10: ! 427: # line 107 "grammar.yacc" ! 428: { ! 429: arginit(); ! 430: } break; ! 431: case 13: ! 432: # line 117 "grammar.yacc" ! 433: { ! 434: newarg(yypvt[-0].y_string); ! 435: } break; ! 436: case 14: ! 437: # line 121 "grammar.yacc" ! 438: { ! 439: inarg(yypvt[-0].y_string); ! 440: } break; ! 441: case 15: ! 442: # line 125 "grammar.yacc" ! 443: { ! 444: outarg(yypvt[-0].y_string); ! 445: } break; ! 446: case 16: ! 447: # line 131 "grammar.yacc" ! 448: { ! 449: yyval.y_node = build(O_ASSIGN, yypvt[-1].y_node, yypvt[-0].y_node); ! 450: } break; ! 451: case 17: ! 452: # line 135 "grammar.yacc" ! 453: { ! 454: yyval.y_node = build(O_CHFILE, yypvt[-0].y_string); ! 455: } break; ! 456: case 18: ! 457: # line 139 "grammar.yacc" ! 458: { ! 459: yyval.y_node = build(O_CONT); ! 460: } break; ! 461: case 19: ! 462: # line 143 "grammar.yacc" ! 463: { ! 464: yyval.y_node = build(O_LIST, yypvt[-0].y_node); ! 465: } break; ! 466: case 20: ! 467: # line 147 "grammar.yacc" ! 468: { ! 469: yyval.y_node = build(O_LIST, build(O_NAME, yypvt[-0].y_sym)); ! 470: } break; ! 471: case 21: ! 472: # line 151 "grammar.yacc" ! 473: { ! 474: yyval.y_node = build(O_NEXT); ! 475: } break; ! 476: case 22: ! 477: # line 155 "grammar.yacc" ! 478: { ! 479: yyval.y_node = build(O_PRINT, yypvt[-0].y_node); ! 480: } break; ! 481: case 23: ! 482: # line 159 "grammar.yacc" ! 483: { ! 484: quit(0); ! 485: } break; ! 486: case 24: ! 487: # line 163 "grammar.yacc" ! 488: { ! 489: yyval.y_node = build(O_STEP); ! 490: } break; ! 491: case 25: ! 492: # line 167 "grammar.yacc" ! 493: { ! 494: yyval.y_node = build(yypvt[-2].y_int, NIL, yypvt[-1].y_node, yypvt[-0].y_node); ! 495: } break; ! 496: case 26: ! 497: # line 171 "grammar.yacc" ! 498: { ! 499: yyval.y_node = build(yypvt[-2].y_int, yypvt[-1].y_node, NIL, yypvt[-0].y_node); ! 500: } break; ! 501: case 27: ! 502: # line 175 "grammar.yacc" ! 503: { ! 504: yyval.y_node = build(yypvt[-2].y_int, NIL, NIL, yypvt[-0].y_node); ! 505: } break; ! 506: case 28: ! 507: # line 179 "grammar.yacc" ! 508: { ! 509: yyval.y_node = build(yypvt[-3].y_int, yypvt[-2].y_node, yypvt[-1].y_node, yypvt[-0].y_node); ! 510: } break; ! 511: case 29: ! 512: # line 183 "grammar.yacc" ! 513: { ! 514: yyval.y_node = build(yypvt[-2].y_int, NIL, yypvt[-1].y_node, yypvt[-0].y_node); ! 515: } break; ! 516: case 30: ! 517: # line 187 "grammar.yacc" ! 518: { ! 519: yyval.y_node = build(yypvt[-2].y_int, yypvt[-1].y_node, NIL, yypvt[-0].y_node); ! 520: } break; ! 521: case 31: ! 522: # line 191 "grammar.yacc" ! 523: { ! 524: yyval.y_node = build(yypvt[-1].y_int, NIL, NIL, yypvt[-0].y_node); ! 525: } break; ! 526: case 32: ! 527: # line 195 "grammar.yacc" ! 528: { ! 529: yyval.y_node = build(O_DELETE, yypvt[-0].y_long); ! 530: } break; ! 531: case 33: ! 532: # line 199 "grammar.yacc" ! 533: { ! 534: yyval.y_node = build(O_WHATIS, yypvt[-0].y_node); ! 535: } break; ! 536: case 34: ! 537: # line 203 "grammar.yacc" ! 538: { ! 539: yyval.y_node = build(O_WHICH, yypvt[-0].y_sym); ! 540: } break; ! 541: case 35: ! 542: # line 207 "grammar.yacc" ! 543: { ! 544: yyval.y_node = build(O_WHERE); ! 545: } break; ! 546: case 36: ! 547: # line 211 "grammar.yacc" ! 548: { ! 549: yyval.y_node = build(O_XI, yypvt[-0].y_node); ! 550: } break; ! 551: case 37: ! 552: # line 215 "grammar.yacc" ! 553: { ! 554: yyval.y_node = build(O_XD, yypvt[-0].y_node); ! 555: } break; ! 556: case 38: ! 557: # line 221 "grammar.yacc" ! 558: { ! 559: yyval.y_node = build(O_ALIAS, yypvt[-1].y_string, yypvt[-0].y_string); ! 560: } break; ! 561: case 39: ! 562: # line 225 "grammar.yacc" ! 563: { ! 564: yyval.y_node = build(O_ALIAS, NIL, NIL); ! 565: } break; ! 566: case 40: ! 567: # line 229 "grammar.yacc" ! 568: { ! 569: yyval.y_node = build(O_CALL, yypvt[-1].y_node, yypvt[-0].y_node); ! 570: } break; ! 571: case 41: ! 572: # line 233 "grammar.yacc" ! 573: { ! 574: yyval.y_node = build(O_EDIT, yypvt[-0].y_string); ! 575: } break; ! 576: case 42: ! 577: # line 237 "grammar.yacc" ! 578: { ! 579: yyval.y_node = build(O_DUMP); ! 580: } break; ! 581: case 43: ! 582: # line 241 "grammar.yacc" ! 583: { ! 584: yyval.y_node = build(O_GRIPE); ! 585: } break; ! 586: case 44: ! 587: # line 245 "grammar.yacc" ! 588: { ! 589: yyval.y_node = build(O_HELP); ! 590: } break; ! 591: case 45: ! 592: # line 249 "grammar.yacc" ! 593: { ! 594: yyval.y_node = build(O_REMAKE); ! 595: } break; ! 596: case 46: ! 597: # line 253 "grammar.yacc" ! 598: { ! 599: yyval.y_node = build(O_SOURCE, yypvt[-0].y_string); ! 600: } break; ! 601: case 47: ! 602: # line 257 "grammar.yacc" ! 603: { ! 604: yyval.y_node = build(O_STATUS); ! 605: } break; ! 606: case 48: ! 607: # line 263 "grammar.yacc" ! 608: { ! 609: yyval.y_int = O_TRACE; ! 610: } break; ! 611: case 49: ! 612: # line 267 "grammar.yacc" ! 613: { ! 614: yyval.y_int = O_TRACEI; ! 615: } break; ! 616: case 50: ! 617: # line 273 "grammar.yacc" ! 618: { ! 619: yyval.y_int = O_STOP; ! 620: } break; ! 621: case 51: ! 622: # line 277 "grammar.yacc" ! 623: { ! 624: yyval.y_int = O_STOPI; ! 625: } break; ! 626: case 53: ! 627: # line 284 "grammar.yacc" ! 628: { ! 629: yyval.y_node = build(O_QLINE, yypvt[-1].y_string, yypvt[-0].y_node); ! 630: } break; ! 631: case 54: ! 632: # line 290 "grammar.yacc" ! 633: { ! 634: yyval.y_node = yypvt[-0].y_node; ! 635: } break; ! 636: case 55: ! 637: # line 294 "grammar.yacc" ! 638: { ! 639: yyval.y_node = build(O_QLINE, cursource, yypvt[-0].y_node); ! 640: } break; ! 641: case 56: ! 642: # line 298 "grammar.yacc" ! 643: { ! 644: yyval.y_node = build(O_QLINE, yypvt[-1].y_string, yypvt[-0].y_node); ! 645: } break; ! 646: case 57: ! 647: # line 304 "grammar.yacc" ! 648: { ! 649: yyval.y_string = NIL; ! 650: } break; ! 651: case 59: ! 652: # line 311 "grammar.yacc" ! 653: { ! 654: yyval.y_node = NIL; ! 655: } break; ! 656: case 60: ! 657: # line 315 "grammar.yacc" ! 658: { ! 659: yyval.y_node = yypvt[-1].y_node; ! 660: } break; ! 661: case 61: ! 662: # line 321 "grammar.yacc" ! 663: { ! 664: NODE *first, *last; ! 665: ! 666: first = build(O_LCON, (long) 1); ! 667: last = build(O_LCON, (long) lastlinenum); ! 668: yyval.y_node = build(O_COMMA, first, last); ! 669: } break; ! 670: case 62: ! 671: # line 329 "grammar.yacc" ! 672: { ! 673: yyval.y_node = build(O_COMMA, yypvt[-0].y_node, yypvt[-0].y_node); ! 674: } break; ! 675: case 63: ! 676: # line 333 "grammar.yacc" ! 677: { ! 678: yyval.y_node = build(O_COMMA, yypvt[-2].y_node, yypvt[-0].y_node); ! 679: } break; ! 680: case 64: ! 681: # line 339 "grammar.yacc" ! 682: { ! 683: yyval.y_node = build(O_LCON, yypvt[-0].y_long); ! 684: } break; ! 685: case 65: ! 686: # line 343 "grammar.yacc" ! 687: { ! 688: yyval.y_node = build(O_LCON, (long) lastlinenum); ! 689: } break; ! 690: case 66: ! 691: # line 349 "grammar.yacc" ! 692: { ! 693: yyval.y_node = build(O_COMMA, yypvt[-0].y_node, yypvt[-0].y_node); ! 694: } break; ! 695: case 67: ! 696: # line 353 "grammar.yacc" ! 697: { ! 698: yyval.y_node = build(O_COMMA, yypvt[-2].y_node, yypvt[-0].y_node); ! 699: } break; ! 700: case 68: ! 701: # line 359 "grammar.yacc" ! 702: { ! 703: yyval.y_node = NIL; ! 704: } break; ! 705: case 69: ! 706: # line 363 "grammar.yacc" ! 707: { ! 708: yyval.y_node = yypvt[-0].y_node; ! 709: } break; ! 710: case 70: ! 711: # line 369 "grammar.yacc" ! 712: { ! 713: yyval.y_node = build(O_COMMA, yypvt[-0].y_node, NIL); ! 714: } break; ! 715: case 71: ! 716: # line 373 "grammar.yacc" ! 717: { ! 718: yyval.y_node = build(O_COMMA, yypvt[-2].y_node, yypvt[-0].y_node); ! 719: } break; ! 720: case 72: ! 721: # line 379 "grammar.yacc" ! 722: { ! 723: yyval.y_node = build(O_RVAL, yypvt[-0].y_node); ! 724: } break; ! 725: case 73: ! 726: # line 383 "grammar.yacc" ! 727: { ! 728: yyval.y_node = build(O_CALL, yypvt[-3].y_node, yypvt[-1].y_node); ! 729: } break; ! 730: case 75: ! 731: # line 388 "grammar.yacc" ! 732: { ! 733: yyval.y_node = yypvt[-0].y_node; ! 734: } break; ! 735: case 76: ! 736: # line 392 "grammar.yacc" ! 737: { ! 738: yyval.y_node = build(O_NEG, yypvt[-0].y_node); ! 739: } break; ! 740: case 77: ! 741: # line 396 "grammar.yacc" ! 742: { ! 743: yyval.y_node = build(yypvt[-1].y_op, yypvt[-2].y_node, yypvt[-0].y_node); ! 744: } break; ! 745: case 78: ! 746: # line 400 "grammar.yacc" ! 747: { ! 748: yyval.y_node = build(yypvt[-1].y_op, yypvt[-2].y_node, yypvt[-0].y_node); ! 749: } break; ! 750: case 79: ! 751: # line 404 "grammar.yacc" ! 752: { ! 753: yyval.y_node = build(yypvt[-1].y_op, yypvt[-2].y_node, yypvt[-0].y_node); ! 754: } break; ! 755: case 80: ! 756: # line 408 "grammar.yacc" ! 757: { ! 758: yyval.y_node = yypvt[-1].y_node; ! 759: } break; ! 760: case 81: ! 761: # line 414 "grammar.yacc" ! 762: { ! 763: chkboolean(yyval.y_node = yypvt[-0].y_node); ! 764: } break; ! 765: case 82: ! 766: # line 420 "grammar.yacc" ! 767: { ! 768: yyval.y_node = build(O_NAME, yypvt[-0].y_sym); ! 769: } break; ! 770: case 83: ! 771: # line 424 "grammar.yacc" ! 772: { ! 773: SYM *s; ! 774: ! 775: s = st_lookup(symtab, "at"); ! 776: if (s == NIL) { ! 777: error("\"at\" is not defined"); ! 778: } ! 779: yyval.y_node = build(O_NAME, s); ! 780: } break; ! 781: case 84: ! 782: # line 434 "grammar.yacc" ! 783: { ! 784: yyval.y_node = subscript(yypvt[-3].y_node, yypvt[-1].y_node); ! 785: } break; ! 786: case 85: ! 787: # line 438 "grammar.yacc" ! 788: { ! 789: yyval.y_node = dot(yypvt[-2].y_node, yypvt[-0].y_sym); ! 790: } break; ! 791: case 86: ! 792: # line 442 "grammar.yacc" ! 793: { ! 794: yyval.y_node = build(O_INDIR, yypvt[-1].y_node); ! 795: } break; ! 796: case 87: ! 797: # line 448 "grammar.yacc" ! 798: { ! 799: yyval.y_node = build(O_LCON, yypvt[-0].y_long); ! 800: } break; ! 801: case 88: ! 802: # line 452 "grammar.yacc" ! 803: { ! 804: yyval.y_node = build(O_FCON, yypvt[-0].y_real); ! 805: } break; ! 806: case 89: ! 807: # line 456 "grammar.yacc" ! 808: { ! 809: yyval.y_node = build(O_SCON, yypvt[-0].y_string); ! 810: } break; ! 811: case 90: ! 812: # line 462 "grammar.yacc" ! 813: { ! 814: yyval.y_op = O_ADD; ! 815: } break; ! 816: case 91: ! 817: # line 466 "grammar.yacc" ! 818: { ! 819: yyval.y_op = O_SUB; ! 820: } break; ! 821: case 92: ! 822: # line 470 "grammar.yacc" ! 823: { ! 824: yyval.y_op = O_OR; ! 825: } break; ! 826: case 93: ! 827: # line 474 "grammar.yacc" ! 828: { ! 829: yyval.y_op = O_OR; ! 830: } break; ! 831: case 94: ! 832: # line 480 "grammar.yacc" ! 833: { ! 834: yyval.y_op = O_MUL; ! 835: } break; ! 836: case 95: ! 837: # line 484 "grammar.yacc" ! 838: { ! 839: yyval.y_op = O_DIVF; ! 840: } break; ! 841: case 96: ! 842: # line 488 "grammar.yacc" ! 843: { ! 844: yyval.y_op = O_DIV; ! 845: } break; ! 846: case 97: ! 847: # line 492 "grammar.yacc" ! 848: { ! 849: yyval.y_op = O_MOD; ! 850: } break; ! 851: case 98: ! 852: # line 496 "grammar.yacc" ! 853: { ! 854: yyval.y_op = O_AND; ! 855: } break; ! 856: case 99: ! 857: # line 500 "grammar.yacc" ! 858: { ! 859: yyval.y_op = O_AND; ! 860: } break; ! 861: case 100: ! 862: # line 506 "grammar.yacc" ! 863: { ! 864: yyval.y_op = O_LT; ! 865: } break; ! 866: case 101: ! 867: # line 510 "grammar.yacc" ! 868: { ! 869: yyval.y_op = O_LE; ! 870: } break; ! 871: case 102: ! 872: # line 514 "grammar.yacc" ! 873: { ! 874: yyval.y_op = O_GT; ! 875: } break; ! 876: case 103: ! 877: # line 518 "grammar.yacc" ! 878: { ! 879: yyval.y_op = O_GE; ! 880: } break; ! 881: case 104: ! 882: # line 522 "grammar.yacc" ! 883: { ! 884: yyval.y_op = O_EQ; ! 885: } break; ! 886: case 105: ! 887: # line 526 "grammar.yacc" ! 888: { ! 889: yyval.y_op = O_NE; ! 890: } break; ! 891: } ! 892: goto yystack; /* stack new state and value */ ! 893: ! 894: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.