|
|
1.1 ! root 1: # include "stdio.h" ! 2: # define U(x) x ! 3: # define NLSTATE yyprevious=YYNEWLINE ! 4: # define BEGIN yybgin = yysvec + 1 + ! 5: # define INITIAL 0 ! 6: # define YYLERR yysvec ! 7: # define YYSTATE (yyestate-yysvec-1) ! 8: # define YYOPTIM 1 ! 9: # define YYLMAX 200 ! 10: # define output(c) putc(c,yyout) ! 11: # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):efgetc)==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) ! 12: # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} ! 13: # define yymore() (yymorfg=1) ! 14: # define ECHO fprintf(yyout, "%s",yytext) ! 15: # define REJECT { nstr = yyreject(); goto yyfussy;} ! 16: int yyleng; extern char yytext[]; ! 17: int yymorfg; ! 18: extern char *yysptr, yysbuf[]; ! 19: int yytchar; ! 20: FILE *yyin ={stdin}, *yyout ={stdout}; ! 21: extern int yylineno; ! 22: struct yysvf { ! 23: struct yywork *yystoff; ! 24: struct yysvf *yyother; ! 25: int *yystops;}; ! 26: struct yysvf *yyestate; ! 27: extern struct yysvf yysvec[], *yybgin; ! 28: # define DOTSON 2 ! 29: #include <ctype.h> ! 30: #include "defs" ! 31: #include "tokdefs" ! 32: ! 33: typedef union { int ival; ptr pval; } YYSTYPE; ! 34: extern YYSTYPE yylval; ! 35: YYSTYPE prevl; ! 36: int prevv; ! 37: char *copys(); ! 38: static ptr p; ! 39: static ptr q; ! 40: static FILE *fd; ! 41: static int quoted, k; ! 42: static int rket = 0; ! 43: FILE *opincl(); ! 44: ptr mkdef(), mkcomm(), mkname(), mkimcon(); ! 45: ! 46: #define RET(x) { RETI(x,x); } ! 47: ! 48: #define RETL(yv,yl) {yylval=prevl=yl;igeol=comneed=0;return(prevv=yv); } ! 49: #define RETP(yv,yl) {yylval.pval=prevl.pval=yl;igeol=comneed=0;return(prevv=yv); } ! 50: #define RETI(yv,yl) {yylval.ival=prevl.ival=yl;igeol=comneed=0;return(prevv=yv); } ! 51: #define REL(n) { RETI(RELOP, OPREL+n);} ! 52: #define AS(n) { RETI(ASGNOP, OPASGN+n); } ! 53: #define RETC(x) { RETP(CONST, mkconst(x,yytext) ); } ! 54: #define RETZ(x) { yytext[yyleng-1] = '\0'; RETP(CONST, mkimcon(x,yytext) ); } ! 55: ! 56: # define YYNEWLINE 10 ! 57: yylex(){ ! 58: int nstr; extern int yyprevious; ! 59: if(pushlex) ! 60: if(pushlex==1) ! 61: { ! 62: pushlex = 2; ! 63: yylval.ival = 0; ! 64: return(EOS); ! 65: } ! 66: else { ! 67: pushlex = 0; ! 68: if(rket == 2) ! 69: rket = 1; ! 70: else RETL(prevv,prevl); ! 71: } ! 72: if(rket > 0) ! 73: { ! 74: if(rket==1) ! 75: { ! 76: rket = 2; ! 77: RET(RBRACK); ! 78: } ! 79: else { ! 80: rket = 0; ! 81: RET(EOS); ! 82: } ! 83: } ! 84: if(eofneed) return(0); ! 85: if(forcerr) return(-1); ! 86: while((nstr = yylook()) >= 0) ! 87: yyfussy: switch(nstr){ ! 88: case 0: ! 89: if(yywrap()) return(0); break; ! 90: case 1: ! 91: { ! 92: lower(yytext); ! 93: if(lettneed && yyleng==1) ! 94: { RETI(LETTER, yytext[0]); } ! 95: else if(defneed) ! 96: { ! 97: register char *q1, *q2; ! 98: for(q2=q1=yytext+yyleng+1 ; (*q1 = efgetc)!='\n' ; ++q1) ! 99: ; ! 100: *q1 = '\0'; ! 101: p = mkdef(yytext, q2); ! 102: defneed = 0; ! 103: ++yylineno; ! 104: unput('\n'); ! 105: } ! 106: else if(optneed) ! 107: { RETP(OPTNAME, copys(yytext)); } ! 108: else if(comneed && ( (q=name(yytext,1))==NULL || q->tag!=TDEFINE) ) ! 109: { RETP(COMNAME, mkcomm(yytext) ); } ! 110: else if(q = name(yytext,1)) switch(q->tag) ! 111: { ! 112: case TDEFINE: ! 113: filelines[filedepth] = yylineno; ! 114: filemacs[filedepth] = efmacp; ! 115: pushchars[filedepth] = (yysptr>yysbuf? ! 116: *--yysptr : -1); ! 117: if(++filedepth >= MAXINCLUDEDEPTH) ! 118: fatal("macro or include too deep"); ! 119: filelines[filedepth] = yylineno = 1; ! 120: efmacp = q->varp->valp; ! 121: filenames[filedepth] = NULL; ! 122: break; /*now process new input */ ! 123: ! 124: case TSTRUCT: ! 125: RETP(STRUCTNAME, q); ! 126: ! 127: case TNAME: ! 128: RETP(NAME, q); ! 129: ! 130: case TKEYWORD: ! 131: if(q->subtype == END) ! 132: { ! 133: register int c; ! 134: eofneed = YES; ! 135: while((c=input())!=';'&&c!='\n'&&c!=EOF) ! 136: ; ! 137: NLSTATE; ! 138: } ! 139: RET(q->subtype); ! 140: ! 141: default: ! 142: fatal1("lex: impossible type code %d", q->tag); ! 143: } ! 144: else RETP(NAME, mkname(yytext) ); ! 145: } ! 146: break; ! 147: case 2: ! 148: RET(COMMA); ! 149: break; ! 150: case 3: ! 151: RET(EOS); ! 152: break; ! 153: case 4: ! 154: RET(LPAR); ! 155: break; ! 156: case 5: ! 157: RET(RPAR); ! 158: break; ! 159: case 6: ! 160: case 7: ! 161: RET(LBRACK); ! 162: break; ! 163: case 8: ! 164: case 9: ! 165: { if(iobrlevel>0) RET(RBRACK); rket = 1; RET(EOS); } ! 166: break; ! 167: case 10: ! 168: RET(COMMA); ! 169: break; ! 170: case 11: ! 171: RET(COLON); ! 172: break; ! 173: case 12: ! 174: RET(REPOP); ! 175: break; ! 176: case 13: ! 177: case 14: ! 178: RETI(OR,OPOR); ! 179: break; ! 180: case 15: ! 181: case 16: ! 182: RETI(OR,OP2OR); ! 183: break; ! 184: case 17: ! 185: case 18: ! 186: RETI(AND,OPAND); ! 187: break; ! 188: case 19: ! 189: case 20: ! 190: RETI(AND,OP2AND); ! 191: break; ! 192: case 21: ! 193: case 22: ! 194: RETI(NOT,OPNOT); ! 195: break; ! 196: case 23: ! 197: RETI(NOT,OPNOT); ! 198: break; ! 199: case 24: ! 200: case 25: ! 201: REL(OPLT); ! 202: break; ! 203: case 26: ! 204: case 27: ! 205: REL(OPLE); ! 206: break; ! 207: case 28: ! 208: case 29: ! 209: REL(OPGT); ! 210: break; ! 211: case 30: ! 212: case 31: ! 213: REL(OPGE); ! 214: break; ! 215: case 32: ! 216: case 33: ! 217: REL(OPEQ); ! 218: break; ! 219: case 34: ! 220: case 35: ! 221: case 36: ! 222: REL(OPNE); ! 223: break; ! 224: case 37: ! 225: RET(ARROW); ! 226: break; ! 227: case 38: ! 228: RET(QUALOP); ! 229: break; ! 230: case 39: ! 231: RETI(ADDOP, OPPLUS); ! 232: break; ! 233: case 40: ! 234: RETI(ADDOP, OPMINUS); ! 235: break; ! 236: case 41: ! 237: RETI(MULTOP, OPSTAR); ! 238: break; ! 239: case 42: ! 240: RETI(MULTOP, OPSLASH); ! 241: break; ! 242: case 43: ! 243: case 44: ! 244: RETI(POWER, OPPOWER); ! 245: break; ! 246: case 45: ! 247: RETI(DOUBLEADDOP, OPPLUS); ! 248: break; ! 249: case 46: ! 250: RETI(DOUBLEADDOP, OPMINUS); ! 251: break; ! 252: case 47: ! 253: AS(OPASGN); ! 254: break; ! 255: case 48: ! 256: AS(OPPLUS); ! 257: break; ! 258: case 49: ! 259: AS(OPMINUS); ! 260: break; ! 261: case 50: ! 262: AS(OPSTAR); ! 263: break; ! 264: case 51: ! 265: AS(OPSLASH); ! 266: break; ! 267: case 52: ! 268: case 53: ! 269: AS(OPPOWER); ! 270: break; ! 271: case 54: ! 272: AS(OPAND); ! 273: break; ! 274: case 55: ! 275: AS(OP2AND); ! 276: break; ! 277: case 56: ! 278: AS(OPOR); ! 279: break; ! 280: case 57: ! 281: AS(OP2OR); ! 282: break; ! 283: case 58: ! 284: case 59: ! 285: { yytext[yyleng-1] = '\0'; p = mkconst(TYCHAR,yytext+1); ! 286: RETP(CONST,p); } ! 287: break; ! 288: case 60: ! 289: { /* nh construct */ ! 290: int i, n; char c; ! 291: yytext[yyleng-1] = '\0'; n = convci(yytext); ! 292: for(i = 0; i<n ; ++i) ! 293: if( (c=yytext[i]=input()) == '\n' || c=='\0') break; ! 294: yytext[i] = '\0'; ! 295: p = mkconst(TYCHAR,yytext); ! 296: p->vtypep = mkint(i); ! 297: RETP(CONST, p); ! 298: } ! 299: break; ! 300: case 61: ! 301: RETC(TYINT); ! 302: break; ! 303: case 62: ! 304: case 63: ! 305: RETC(TYREAL); ! 306: break; ! 307: case 64: ! 308: case 65: ! 309: RETC(TYREAL); ! 310: break; ! 311: case 66: ! 312: case 67: ! 313: RETC(TYLREAL); ! 314: break; ! 315: case 68: ! 316: { yytext[yyleng-1] = '.'; ! 317: RETP(CONST,mkimcon(TYCOMPLEX,yytext)); } ! 318: break; ! 319: case 69: ! 320: case 70: ! 321: RETZ(TYCOMPLEX); ! 322: break; ! 323: case 71: ! 324: case 72: ! 325: RETZ(TYCOMPLEX); ! 326: break; ! 327: case 73: ! 328: case 74: ! 329: RETZ(TYLCOMPLEX); ! 330: break; ! 331: case 75: ! 332: { if(! nocommentflag) goto litline; } ! 333: break; ! 334: case 76: ! 335: { if(thisexec) thisexec->nftnst += 2; ! 336: if(inproc) ! 337: { ! 338: unput('\n'); ! 339: RETP(ESCAPE, copys(yytext)); ! 340: } ! 341: ! 342: litline: p = mkchain( copys(yytext), CHNULL); ! 343: if(inproc==0 && yytext[0]=='%') ! 344: prevcomments = hookup(prevcomments, p); ! 345: else ! 346: comments = hookup(comments,p); ! 347: } ! 348: break; ! 349: case 77: ! 350: ; ! 351: break; ! 352: case 78: ! 353: ; ! 354: break; ! 355: case 79: ! 356: ; ! 357: break; ! 358: case 80: ! 359: ; ! 360: break; ! 361: case 81: ! 362: { if(igeol) { igeol=0; prevv = NEWLINE; } ! 363: else if(prevv>=NAME || prevv==RPAR || prevv==RBRACK ! 364: || prevv== -1 || prevv==QUALOP) ! 365: RET(EOS); } ! 366: break; ! 367: case 82: ! 368: { char * linerr(); ! 369: fprintf(diagfile, "Bad input character %c %s\n", yytext[0], linerr()); ! 370: ++nerrs; ! 371: } ! 372: break; ! 373: case 83: ! 374: { /* Include statement */ ! 375: char *q1; ! 376: register char *q2; ! 377: for(q1=yytext ; *q1==' ' || *q1=='\t' ; ++q1) ; ! 378: quoted = NO; ! 379: for(q1 += 7 ; *q1==' ' || *q1=='\t' || ! 380: *q1=='\'' || *q1=='"' || *q1=='(' ; ++q1 ) ! 381: if(*q1=='"' || *q1=='\'') ! 382: quoted = YES; ! 383: for(q2=q1 ; *q2!='\0' && *q2!=' ' && *q2!='\n' && ! 384: *q2!='\'' && *q2!='"' && *q2!=')' ; ++q2 ) ! 385: ; ! 386: *q2 = '\0'; ! 387: if( ! quoted) ! 388: for(k=0; (q = name(q1,1)) && q->tag==TDEFINE ; ++k) ! 389: { ! 390: if(k > MAXINCLUDEDEPTH) ! 391: fatal1("Macros too deep for %s", yytext); ! 392: q1 = q->varp->valp; ! 393: } ! 394: if( (fd = opincl(&q1)) == NULL) ! 395: { ! 396: fprintf(diagfile, "Cannot open file %s. Stop.\n", q1); ! 397: exit(2); ! 398: } ! 399: filelines[filedepth] = yylineno; ! 400: pushchars[filedepth] = '\n'; ! 401: if(++filedepth >= MAXINCLUDEDEPTH) ! 402: fatal("macro or include too deep"); ! 403: fileptrs[filedepth] = yyin = fd; ! 404: filenames[filedepth] = copys(q1); ! 405: filelines[filedepth] = yylineno = 1; ! 406: filemacs[filedepth] = NULL; ! 407: } ! 408: break; ! 409: case -1: ! 410: break; ! 411: default: ! 412: fprintf(yyout,"bad switch yylook %d",nstr); ! 413: } return(0); } ! 414: /* end of yylex */ ! 415: ! 416: yywrap() ! 417: { ! 418: if(filedepth == 0) ! 419: { ! 420: ateof = 1; ! 421: return(1); ! 422: } ! 423: ! 424: if(efmacp == 0) ! 425: { ! 426: fclose(yyin); ! 427: cfree(filenames[filedepth]); ! 428: } ! 429: ! 430: --filedepth; ! 431: if( filemacs[filedepth] ) ! 432: efmacp = filemacs[filedepth]; ! 433: else { ! 434: yyin = fileptrs[filedepth]; ! 435: efmacp = 0; ! 436: } ! 437: yylineno = filelines[filedepth]; ! 438: if(pushchars[filedepth] != -1) ! 439: unput( pushchars[filedepth] ); ! 440: return(0); ! 441: } ! 442: ! 443: ! 444: ! 445: lower(s) /* replace upper with lower case letters */ ! 446: register char *s; ! 447: { ! 448: register char *t; ! 449: for(t=s ; *t ; ++t) ! 450: if( isupper(*t) ) ! 451: *s++ = tolower(*t); ! 452: else if(*t != '_') ! 453: *s++ = *t; ! 454: } ! 455: ! 456: ! 457: ! 458: ! 459: setdot(k) ! 460: int k; ! 461: { ! 462: if(k) ! 463: BEGIN DOTSON; ! 464: else BEGIN 0; ! 465: } ! 466: ! 467: ! 468: ! 469: ! 470: FILE *opincl(namep) ! 471: char **namep; ! 472: { ! 473: #ifndef unix ! 474: return( fopen(*namep, "r") ); ! 475: #else ! 476: ! 477: /* On Unix, follow the C include conventions */ ! 478: ! 479: register char *s, *lastslash; ! 480: char *dir, *name, temp[100]; ! 481: int i; ! 482: FILE *fp; ! 483: ! 484: name = *namep; ! 485: if(name[0] == '/') ! 486: return( fopen(name, "r") ); ! 487: ! 488: dir = basefile; ! 489: for(i = filedepth ; i>=0 ; --i) ! 490: if( filemacs[i] == NULL) ! 491: { ! 492: dir = filenames[i]; ! 493: break; ! 494: } ! 495: ! 496: lastslash = NULL; ! 497: for(s = dir ; *s ; ++s) ! 498: if(*s == '/') ! 499: lastslash = s; ! 500: if(lastslash) ! 501: { ! 502: *lastslash = '\0'; ! 503: sprintf(temp, "%s/%s", dir, name); ! 504: *lastslash = '/'; ! 505: if( fp = fopen(temp, "r") ) ! 506: *namep = temp; ! 507: } ! 508: else ! 509: fp = fopen(name, "r"); ! 510: ! 511: if(fp == NULL) ! 512: { ! 513: sprintf(temp, "/usr/include/%s", name); ! 514: fp = fopen(temp, "r"); ! 515: *namep = temp; ! 516: } ! 517: return(fp); ! 518: ! 519: #endif ! 520: } ! 521: ! 522: int yyvstop[] ={ ! 523: 0, ! 524: ! 525: 82, ! 526: 0, ! 527: ! 528: 78, ! 529: 82, ! 530: 0, ! 531: ! 532: 81, ! 533: 0, ! 534: ! 535: 79, ! 536: 82, ! 537: 0, ! 538: ! 539: 77, ! 540: 82, ! 541: 0, ! 542: ! 543: 23, ! 544: 82, ! 545: 0, ! 546: ! 547: 82, ! 548: 0, ! 549: ! 550: 75, ! 551: 82, ! 552: 0, ! 553: ! 554: 12, ! 555: 82, ! 556: 0, ! 557: ! 558: 18, ! 559: 82, ! 560: 0, ! 561: ! 562: 82, ! 563: 0, ! 564: ! 565: 4, ! 566: 82, ! 567: 0, ! 568: ! 569: 5, ! 570: 82, ! 571: 0, ! 572: ! 573: 41, ! 574: 82, ! 575: 0, ! 576: ! 577: 39, ! 578: 82, ! 579: 0, ! 580: ! 581: 2, ! 582: 10, ! 583: 82, ! 584: 0, ! 585: ! 586: 40, ! 587: 82, ! 588: 0, ! 589: ! 590: 38, ! 591: 82, ! 592: 0, ! 593: ! 594: 42, ! 595: 82, ! 596: 0, ! 597: ! 598: 61, ! 599: 82, ! 600: 0, ! 601: ! 602: 11, ! 603: 82, ! 604: 0, ! 605: ! 606: 3, ! 607: 82, ! 608: 0, ! 609: ! 610: 25, ! 611: 82, ! 612: 0, ! 613: ! 614: 47, ! 615: 82, ! 616: 0, ! 617: ! 618: 29, ! 619: 82, ! 620: 0, ! 621: ! 622: 1, ! 623: 82, ! 624: 0, ! 625: ! 626: 6, ! 627: 82, ! 628: 0, ! 629: ! 630: 8, ! 631: 82, ! 632: 0, ! 633: ! 634: 44, ! 635: 82, ! 636: 0, ! 637: ! 638: 82, ! 639: 0, ! 640: ! 641: 7, ! 642: 82, ! 643: 0, ! 644: ! 645: 14, ! 646: 82, ! 647: 0, ! 648: ! 649: 9, ! 650: 82, ! 651: 0, ! 652: ! 653: 22, ! 654: 82, ! 655: 0, ! 656: ! 657: 78, ! 658: 82, ! 659: 0, ! 660: ! 661: 77, ! 662: 82, ! 663: 0, ! 664: ! 665: 76, ! 666: 82, ! 667: 0, ! 668: ! 669: 1, ! 670: 82, ! 671: 0, ! 672: ! 673: 38, ! 674: 82, ! 675: 0, ! 676: ! 677: 36, ! 678: 0, ! 679: ! 680: 59, ! 681: 0, ! 682: ! 683: 75, ! 684: 0, ! 685: ! 686: 20, ! 687: 0, ! 688: ! 689: 54, ! 690: 0, ! 691: ! 692: 58, ! 693: 0, ! 694: ! 695: 43, ! 696: 0, ! 697: ! 698: 50, ! 699: 0, ! 700: ! 701: 45, ! 702: 0, ! 703: ! 704: 48, ! 705: 0, ! 706: ! 707: 46, ! 708: 0, ! 709: ! 710: 49, ! 711: 0, ! 712: ! 713: 37, ! 714: 0, ! 715: ! 716: 63, ! 717: 0, ! 718: ! 719: 51, ! 720: 0, ! 721: ! 722: 62, ! 723: 0, ! 724: ! 725: 61, ! 726: 0, ! 727: ! 728: 60, ! 729: 0, ! 730: ! 731: 68, ! 732: 0, ! 733: ! 734: 27, ! 735: 0, ! 736: ! 737: 33, ! 738: 0, ! 739: ! 740: 31, ! 741: 0, ! 742: ! 743: 1, ! 744: 0, ! 745: ! 746: 53, ! 747: 0, ! 748: ! 749: 80, ! 750: 0, ! 751: ! 752: 56, ! 753: 0, ! 754: ! 755: 16, ! 756: 0, ! 757: ! 758: 35, ! 759: 0, ! 760: ! 761: 76, ! 762: 0, ! 763: ! 764: 1, ! 765: 0, ! 766: ! 767: 55, ! 768: 0, ! 769: ! 770: 52, ! 771: 0, ! 772: ! 773: 70, ! 774: 0, ! 775: ! 776: 62, ! 777: 63, ! 778: 0, ! 779: ! 780: 69, ! 781: 0, ! 782: ! 783: 66, ! 784: 0, ! 785: ! 786: 64, ! 787: 0, ! 788: ! 789: 57, ! 790: 0, ! 791: ! 792: 1, ! 793: 0, ! 794: ! 795: 67, ! 796: 0, ! 797: ! 798: 65, ! 799: 0, ! 800: ! 801: 69, ! 802: 70, ! 803: 0, ! 804: ! 805: 73, ! 806: 0, ! 807: ! 808: 71, ! 809: 0, ! 810: ! 811: 1, ! 812: 0, ! 813: ! 814: 32, ! 815: 0, ! 816: ! 817: 30, ! 818: 0, ! 819: ! 820: 28, ! 821: 0, ! 822: ! 823: 26, ! 824: 0, ! 825: ! 826: 24, ! 827: 0, ! 828: ! 829: 34, ! 830: 0, ! 831: ! 832: 13, ! 833: 0, ! 834: ! 835: 74, ! 836: 0, ! 837: ! 838: 72, ! 839: 0, ! 840: ! 841: 66, ! 842: 67, ! 843: 0, ! 844: ! 845: 64, ! 846: 65, ! 847: 0, ! 848: ! 849: 1, ! 850: 0, ! 851: ! 852: 17, ! 853: 0, ! 854: ! 855: 15, ! 856: 0, ! 857: ! 858: 21, ! 859: 0, ! 860: ! 861: 73, ! 862: 74, ! 863: 0, ! 864: ! 865: 71, ! 866: 72, ! 867: 0, ! 868: ! 869: 1, ! 870: 0, ! 871: ! 872: 19, ! 873: 0, ! 874: ! 875: 1, ! 876: 0, ! 877: ! 878: 83, ! 879: 0, ! 880: 0}; ! 881: # define YYTYPE int ! 882: struct yywork { YYTYPE verify, advance; } yycrank[] ={ ! 883: 0,0, 0,0, 1,5, 0,0, ! 884: 0,0, 0,0, 0,0, 0,0, ! 885: 0,0, 0,0, 1,6, 1,7, ! 886: 45,0, 1,8, 47,0, 34,72, ! 887: 34,73, 50,0, 79,0, 0,0, ! 888: 0,0, 0,0, 0,0, 0,0, ! 889: 0,0, 0,0, 0,0, 0,0, ! 890: 0,0, 0,0, 0,0, 0,0, ! 891: 0,0, 1,9, 1,10, 1,11, ! 892: 1,12, 1,13, 34,72, 1,14, ! 893: 1,15, 1,16, 1,17, 1,18, ! 894: 1,19, 1,20, 1,21, 1,22, ! 895: 1,23, 1,24, 0,0, 0,0, ! 896: 14,48, 19,54, 0,0, 0,0, ! 897: 0,0, 18,52, 105,127, 1,25, ! 898: 1,26, 1,27, 1,28, 1,29, ! 899: 10,44, 23,60, 1,30, 1,30, ! 900: 1,30, 1,30, 1,30, 19,55, ! 901: 1,30, 1,30, 1,30, 14,49, ! 902: 18,53, 1,30, 27,67, 1,30, ! 903: 1,30, 2,39, 1,30, 1,30, ! 904: 2,8, 1,30, 1,30, 28,68, ! 905: 29,69, 33,71, 38,76, 36,74, ! 906: 1,31, 48,88, 1,32, 1,33, ! 907: 1,34, 42,80, 39,77, 52,89, ! 908: 75,99, 106,128, 107,129, 78,100, ! 909: 2,40, 2,10, 80,101, 2,12, ! 910: 2,13, 2,41, 2,14, 108,130, ! 911: 2,16, 2,17, 2,18, 109,131, ! 912: 2,20, 2,21, 2,22, 2,23, ! 913: 21,56, 39,77, 110,132, 3,8, ! 914: 1,35, 1,36, 1,37, 1,38, ! 915: 81,102, 42,80, 2,25, 2,26, ! 916: 2,27, 2,28, 2,29, 78,100, ! 917: 21,57, 21,58, 80,101, 112,134, ! 918: 124,143, 126,145, 133,146, 3,9, ! 919: 3,10, 2,42, 3,12, 3,13, ! 920: 144,151, 3,14, 0,0, 3,16, ! 921: 3,17, 3,18, 36,75, 3,20, ! 922: 3,21, 3,43, 3,23, 83,105, ! 923: 81,102, 87,112, 39,78, 2,31, ! 924: 0,0, 2,32, 2,33, 96,120, ! 925: 0,0, 3,25, 3,26, 3,27, ! 926: 3,28, 3,29, 22,59, 22,59, ! 927: 22,59, 22,59, 22,59, 22,59, ! 928: 22,59, 22,59, 22,59, 22,59, ! 929: 0,0, 0,0, 0,0, 98,121, ! 930: 0,0, 4,39, 0,0, 83,105, ! 931: 4,8, 87,112, 39,78, 2,35, ! 932: 2,36, 2,37, 2,38, 96,120, ! 933: 82,103, 0,0, 3,31, 0,0, ! 934: 3,32, 3,33, 0,0, 0,0, ! 935: 0,0, 0,0, 0,0, 0,0, ! 936: 4,40, 4,10, 82,104, 4,12, ! 937: 4,13, 4,41, 4,14, 98,121, ! 938: 4,16, 4,17, 4,18, 0,0, ! 939: 4,20, 4,21, 4,43, 4,23, ! 940: 59,90, 59,91, 84,106, 0,0, ! 941: 82,103, 59,92, 3,35, 3,36, ! 942: 3,37, 3,38, 4,25, 4,26, ! 943: 4,27, 4,28, 4,29, 11,45, ! 944: 0,0, 84,107, 82,104, 86,110, ! 945: 85,108, 0,0, 100,122, 11,45, ! 946: 11,0, 4,42, 93,117, 93,118, ! 947: 101,123, 86,111, 0,0, 93,119, ! 948: 59,90, 59,91, 84,106, 85,109, ! 949: 102,124, 59,92, 103,125, 104,126, ! 950: 0,0, 0,0, 111,133, 4,31, ! 951: 0,0, 4,32, 4,33, 0,0, ! 952: 11,46, 84,107, 0,0, 86,110, ! 953: 85,108, 11,45, 100,122, 0,0, ! 954: 114,135, 11,45, 93,117, 93,118, ! 955: 101,123, 86,111, 11,45, 93,119, ! 956: 12,47, 0,0, 0,0, 85,109, ! 957: 102,124, 116,136, 103,125, 104,126, ! 958: 12,47, 12,0, 111,133, 4,35, ! 959: 4,36, 4,37, 4,38, 11,45, ! 960: 11,45, 11,45, 11,45, 11,45, ! 961: 122,141, 11,45, 11,45, 11,45, ! 962: 114,135, 0,0, 11,45, 123,142, ! 963: 11,45, 11,45, 125,144, 11,45, ! 964: 11,45, 12,47, 11,45, 11,45, ! 965: 0,0, 116,136, 12,47, 0,0, ! 966: 0,0, 138,147, 12,47, 0,0, ! 967: 140,148, 11,45, 0,0, 12,47, ! 968: 0,0, 15,50, 0,0, 0,0, ! 969: 122,141, 141,149, 142,150, 0,0, ! 970: 149,152, 15,50, 15,0, 123,142, ! 971: 150,153, 0,0, 125,144, 0,0, ! 972: 12,47, 12,47, 12,47, 12,47, ! 973: 12,47, 0,0, 12,47, 12,47, ! 974: 12,47, 138,147, 0,0, 12,47, ! 975: 140,148, 12,47, 12,47, 152,154, ! 976: 12,47, 12,47, 15,50, 12,47, ! 977: 12,47, 141,149, 142,150, 15,51, ! 978: 149,152, 0,0, 0,0, 15,50, ! 979: 150,153, 63,95, 12,47, 63,95, ! 980: 15,50, 0,0, 63,96, 63,96, ! 981: 63,96, 63,96, 63,96, 63,96, ! 982: 63,96, 63,96, 63,96, 63,96, ! 983: 0,0, 0,0, 0,0, 152,154, ! 984: 0,0, 15,50, 15,50, 15,50, ! 985: 15,50, 15,50, 0,0, 15,50, ! 986: 15,50, 15,50, 0,0, 0,0, ! 987: 15,50, 0,0, 15,50, 15,50, ! 988: 0,0, 15,50, 15,50, 0,0, ! 989: 15,50, 15,50, 0,0, 0,0, ! 990: 0,0, 0,0, 0,0, 0,0, ! 991: 0,0, 0,0, 24,61, 15,50, ! 992: 24,62, 24,62, 24,62, 24,62, ! 993: 24,62, 24,62, 24,62, 24,62, ! 994: 24,62, 24,62, 95,96, 95,96, ! 995: 95,96, 95,96, 95,96, 95,96, ! 996: 95,96, 95,96, 95,96, 95,96, ! 997: 24,63, 24,64, 0,0, 0,0, ! 998: 24,65, 24,66, 64,97, 0,0, ! 999: 64,97, 0,0, 0,0, 64,98, ! 1000: 64,98, 64,98, 64,98, 64,98, ! 1001: 64,98, 64,98, 64,98, 64,98, ! 1002: 64,98, 30,70, 30,70, 30,70, ! 1003: 30,70, 30,70, 30,70, 30,70, ! 1004: 30,70, 30,70, 30,70, 0,0, ! 1005: 24,63, 24,64, 0,0, 0,0, ! 1006: 24,65, 24,66, 30,70, 30,70, ! 1007: 30,70, 30,70, 30,70, 30,70, ! 1008: 30,70, 30,70, 30,70, 30,70, ! 1009: 30,70, 30,70, 30,70, 30,70, ! 1010: 30,70, 30,70, 30,70, 30,70, ! 1011: 30,70, 30,70, 30,70, 30,70, ! 1012: 30,70, 30,70, 30,70, 30,70, ! 1013: 0,0, 0,0, 0,0, 0,0, ! 1014: 30,70, 0,0, 30,70, 30,70, ! 1015: 30,70, 30,70, 30,70, 30,70, ! 1016: 30,70, 30,70, 30,70, 30,70, ! 1017: 30,70, 30,70, 30,70, 30,70, ! 1018: 30,70, 30,70, 30,70, 30,70, ! 1019: 30,70, 30,70, 30,70, 30,70, ! 1020: 30,70, 30,70, 30,70, 30,70, ! 1021: 41,79, 0,0, 0,0, 0,0, ! 1022: 0,0, 90,113, 0,0, 90,113, ! 1023: 41,79, 41,0, 90,114, 90,114, ! 1024: 90,114, 90,114, 90,114, 90,114, ! 1025: 90,114, 90,114, 90,114, 90,114, ! 1026: 97,98, 97,98, 97,98, 97,98, ! 1027: 97,98, 97,98, 97,98, 97,98, ! 1028: 97,98, 97,98, 0,0, 0,0, ! 1029: 0,0, 41,79, 0,0, 0,0, ! 1030: 0,0, 0,0, 41,79, 0,0, ! 1031: 0,0, 0,0, 41,79, 91,115, ! 1032: 0,0, 91,115, 0,0, 41,79, ! 1033: 91,116, 91,116, 91,116, 91,116, ! 1034: 91,116, 91,116, 91,116, 91,116, ! 1035: 91,116, 91,116, 0,0, 0,0, ! 1036: 0,0, 0,0, 0,0, 0,0, ! 1037: 41,79, 41,79, 41,79, 41,79, ! 1038: 41,79, 0,0, 41,79, 41,79, ! 1039: 41,79, 0,0, 0,0, 41,79, ! 1040: 0,0, 41,79, 41,79, 0,0, ! 1041: 41,79, 41,79, 0,0, 41,79, ! 1042: 41,79, 0,0, 0,0, 0,0, ! 1043: 0,0, 0,0, 0,0, 0,0, ! 1044: 0,0, 0,0, 41,79, 43,59, ! 1045: 43,59, 43,59, 43,59, 43,59, ! 1046: 43,59, 43,59, 43,59, 43,59, ! 1047: 43,59, 0,0, 0,0, 0,0, ! 1048: 0,0, 0,0, 0,0, 0,0, ! 1049: 43,81, 0,0, 43,82, 0,0, ! 1050: 43,83, 0,0, 43,84, 0,0, ! 1051: 0,0, 0,0, 0,0, 43,85, ! 1052: 0,0, 43,86, 43,87, 0,0, ! 1053: 0,0, 0,0, 0,0, 61,93, ! 1054: 61,93, 61,93, 61,93, 61,93, ! 1055: 61,93, 61,93, 61,93, 61,93, ! 1056: 61,93, 0,0, 0,0, 0,0, ! 1057: 43,81, 0,0, 43,82, 0,0, ! 1058: 43,83, 0,0, 43,84, 61,63, ! 1059: 61,64, 0,0, 0,0, 43,85, ! 1060: 61,94, 43,86, 43,87, 113,114, ! 1061: 113,114, 113,114, 113,114, 113,114, ! 1062: 113,114, 113,114, 113,114, 113,114, ! 1063: 113,114, 115,116, 115,116, 115,116, ! 1064: 115,116, 115,116, 115,116, 115,116, ! 1065: 115,116, 115,116, 115,116, 0,0, ! 1066: 0,0, 0,0, 0,0, 61,63, ! 1067: 61,64, 117,137, 0,0, 117,137, ! 1068: 61,94, 0,0, 117,138, 117,138, ! 1069: 117,138, 117,138, 117,138, 117,138, ! 1070: 117,138, 117,138, 117,138, 117,138, ! 1071: 118,139, 0,0, 118,139, 0,0, ! 1072: 0,0, 118,140, 118,140, 118,140, ! 1073: 118,140, 118,140, 118,140, 118,140, ! 1074: 118,140, 118,140, 118,140, 137,138, ! 1075: 137,138, 137,138, 137,138, 137,138, ! 1076: 137,138, 137,138, 137,138, 137,138, ! 1077: 137,138, 139,140, 139,140, 139,140, ! 1078: 139,140, 139,140, 139,140, 139,140, ! 1079: 139,140, 139,140, 139,140, 153,154, ! 1080: 0,0, 0,0, 0,0, 0,0, ! 1081: 0,0, 0,0, 0,0, 153,154, ! 1082: 153,155, 0,0, 0,0, 0,0, ! 1083: 0,0, 0,0, 0,0, 0,0, ! 1084: 0,0, 0,0, 0,0, 0,0, ! 1085: 0,0, 0,0, 0,0, 0,0, ! 1086: 0,0, 0,0, 0,0, 0,0, ! 1087: 0,0, 0,0, 0,0, 0,0, ! 1088: 153,154, 0,0, 0,0, 0,0, ! 1089: 0,0, 153,154, 0,0, 0,0, ! 1090: 0,0, 153,154, 0,0, 0,0, ! 1091: 0,0, 0,0, 153,153, 0,0, ! 1092: 0,0, 0,0, 0,0, 0,0, ! 1093: 0,0, 0,0, 0,0, 0,0, ! 1094: 0,0, 0,0, 0,0, 0,0, ! 1095: 0,0, 0,0, 0,0, 153,153, ! 1096: 153,153, 153,153, 153,153, 153,153, ! 1097: 0,0, 153,153, 153,153, 153,153, ! 1098: 0,0, 0,0, 153,153, 0,0, ! 1099: 153,153, 153,153, 154,154, 153,153, ! 1100: 153,153, 0,0, 153,153, 153,153, ! 1101: 0,0, 0,0, 0,0, 0,0, ! 1102: 0,0, 0,0, 0,0, 0,0, ! 1103: 0,0, 153,153, 0,0, 154,154, ! 1104: 154,154, 154,154, 154,154, 154,154, ! 1105: 0,0, 154,154, 154,154, 154,154, ! 1106: 0,0, 0,0, 154,154, 0,0, ! 1107: 154,154, 154,154, 0,0, 154,154, ! 1108: 154,154, 0,0, 154,154, 154,154, ! 1109: 0,0, 0,0, 0,0, 0,0, ! 1110: 0,0, 0,0, 0,0, 0,0, ! 1111: 0,0, 154,154, 0,0, 0,0, ! 1112: 0,0}; ! 1113: struct yysvf yysvec[] ={ ! 1114: 0, 0, 0, ! 1115: yycrank+-1, 0, 0, ! 1116: yycrank+-72, yysvec+1, 0, ! 1117: yycrank+-111, yysvec+1, 0, ! 1118: yycrank+-180, yysvec+1, 0, ! 1119: yycrank+0, 0, yyvstop+1, ! 1120: yycrank+0, 0, yyvstop+3, ! 1121: yycrank+0, 0, yyvstop+6, ! 1122: yycrank+0, 0, yyvstop+8, ! 1123: yycrank+0, 0, yyvstop+11, ! 1124: yycrank+3, 0, yyvstop+14, ! 1125: yycrank+-242, 0, yyvstop+17, ! 1126: yycrank+-291, 0, yyvstop+19, ! 1127: yycrank+0, 0, yyvstop+22, ! 1128: yycrank+14, 0, yyvstop+25, ! 1129: yycrank+-340, 0, yyvstop+28, ! 1130: yycrank+0, 0, yyvstop+30, ! 1131: yycrank+0, 0, yyvstop+33, ! 1132: yycrank+15, 0, yyvstop+36, ! 1133: yycrank+10, 0, yyvstop+39, ! 1134: yycrank+0, 0, yyvstop+42, ! 1135: yycrank+75, 0, yyvstop+46, ! 1136: yycrank+126, 0, yyvstop+49, ! 1137: yycrank+4, 0, yyvstop+52, ! 1138: yycrank+388, 0, yyvstop+55, ! 1139: yycrank+0, 0, yyvstop+58, ! 1140: yycrank+0, 0, yyvstop+61, ! 1141: yycrank+17, 0, yyvstop+64, ! 1142: yycrank+26, 0, yyvstop+67, ! 1143: yycrank+27, 0, yyvstop+70, ! 1144: yycrank+429, 0, yyvstop+73, ! 1145: yycrank+0, 0, yyvstop+76, ! 1146: yycrank+0, 0, yyvstop+79, ! 1147: yycrank+28, 0, yyvstop+82, ! 1148: yycrank+6, 0, yyvstop+85, ! 1149: yycrank+0, 0, yyvstop+87, ! 1150: yycrank+30, 0, yyvstop+90, ! 1151: yycrank+0, 0, yyvstop+93, ! 1152: yycrank+29, 0, yyvstop+96, ! 1153: yycrank+89, 0, yyvstop+99, ! 1154: yycrank+0, yysvec+39, yyvstop+102, ! 1155: yycrank+-551, 0, yyvstop+105, ! 1156: yycrank+19, yysvec+30, yyvstop+108, ! 1157: yycrank+599, 0, yyvstop+111, ! 1158: yycrank+0, 0, yyvstop+114, ! 1159: yycrank+-2, yysvec+11, 0, ! 1160: yycrank+0, 0, yyvstop+116, ! 1161: yycrank+-4, yysvec+12, yyvstop+118, ! 1162: yycrank+32, 0, yyvstop+120, ! 1163: yycrank+0, 0, yyvstop+122, ! 1164: yycrank+-7, yysvec+15, 0, ! 1165: yycrank+0, 0, yyvstop+124, ! 1166: yycrank+38, 0, yyvstop+126, ! 1167: yycrank+0, 0, yyvstop+128, ! 1168: yycrank+0, 0, yyvstop+130, ! 1169: yycrank+0, 0, yyvstop+132, ! 1170: yycrank+0, 0, yyvstop+134, ! 1171: yycrank+0, 0, yyvstop+136, ! 1172: yycrank+0, 0, yyvstop+138, ! 1173: yycrank+160, yysvec+22, yyvstop+140, ! 1174: yycrank+0, 0, yyvstop+142, ! 1175: yycrank+635, 0, yyvstop+144, ! 1176: yycrank+0, yysvec+24, yyvstop+146, ! 1177: yycrank+342, 0, 0, ! 1178: yycrank+419, 0, 0, ! 1179: yycrank+0, 0, yyvstop+148, ! 1180: yycrank+0, 0, yyvstop+150, ! 1181: yycrank+0, 0, yyvstop+152, ! 1182: yycrank+0, 0, yyvstop+154, ! 1183: yycrank+0, 0, yyvstop+156, ! 1184: yycrank+0, yysvec+30, yyvstop+158, ! 1185: yycrank+0, 0, yyvstop+160, ! 1186: yycrank+0, yysvec+34, 0, ! 1187: yycrank+0, 0, yyvstop+162, ! 1188: yycrank+0, 0, yyvstop+164, ! 1189: yycrank+39, 0, yyvstop+166, ! 1190: yycrank+0, 0, yyvstop+168, ! 1191: yycrank+0, yysvec+39, 0, ! 1192: yycrank+25, 0, 0, ! 1193: yycrank+-8, yysvec+41, yyvstop+170, ! 1194: yycrank+39, yysvec+30, yyvstop+172, ! 1195: yycrank+50, 0, 0, ! 1196: yycrank+135, 0, 0, ! 1197: yycrank+78, 0, 0, ! 1198: yycrank+161, 0, 0, ! 1199: yycrank+179, 0, 0, ! 1200: yycrank+178, 0, 0, ! 1201: yycrank+79, 0, 0, ! 1202: yycrank+0, 0, yyvstop+174, ! 1203: yycrank+0, 0, yyvstop+176, ! 1204: yycrank+514, 0, 0, ! 1205: yycrank+552, 0, 0, ! 1206: yycrank+0, 0, yyvstop+178, ! 1207: yycrank+186, yysvec+61, yyvstop+180, ! 1208: yycrank+0, 0, yyvstop+183, ! 1209: yycrank+398, 0, 0, ! 1210: yycrank+94, yysvec+95, yyvstop+185, ! 1211: yycrank+524, 0, 0, ! 1212: yycrank+114, yysvec+97, yyvstop+187, ! 1213: yycrank+0, 0, yyvstop+189, ! 1214: yycrank+183, 0, 0, ! 1215: yycrank+180, yysvec+30, yyvstop+191, ! 1216: yycrank+196, 0, 0, ! 1217: yycrank+188, 0, 0, ! 1218: yycrank+185, 0, 0, ! 1219: yycrank+12, 0, 0, ! 1220: yycrank+55, 0, 0, ! 1221: yycrank+56, 0, 0, ! 1222: yycrank+65, 0, 0, ! 1223: yycrank+69, 0, 0, ! 1224: yycrank+76, 0, 0, ! 1225: yycrank+186, 0, 0, ! 1226: yycrank+93, 0, 0, ! 1227: yycrank+663, 0, 0, ! 1228: yycrank+211, yysvec+113, yyvstop+193, ! 1229: yycrank+673, 0, 0, ! 1230: yycrank+224, yysvec+115, yyvstop+195, ! 1231: yycrank+694, 0, 0, ! 1232: yycrank+709, 0, 0, ! 1233: yycrank+0, 0, yyvstop+197, ! 1234: yycrank+0, 0, yyvstop+200, ! 1235: yycrank+0, 0, yyvstop+202, ! 1236: yycrank+236, 0, 0, ! 1237: yycrank+234, yysvec+30, yyvstop+204, ! 1238: yycrank+94, 0, 0, ! 1239: yycrank+254, 0, 0, ! 1240: yycrank+95, 0, 0, ! 1241: yycrank+0, 0, yyvstop+206, ! 1242: yycrank+0, 0, yyvstop+208, ! 1243: yycrank+0, 0, yyvstop+210, ! 1244: yycrank+0, 0, yyvstop+212, ! 1245: yycrank+0, 0, yyvstop+214, ! 1246: yycrank+0, 0, yyvstop+216, ! 1247: yycrank+96, 0, 0, ! 1248: yycrank+0, 0, yyvstop+218, ! 1249: yycrank+0, 0, yyvstop+220, ! 1250: yycrank+0, 0, yyvstop+222, ! 1251: yycrank+719, 0, 0, ! 1252: yycrank+260, yysvec+137, yyvstop+224, ! 1253: yycrank+729, 0, 0, ! 1254: yycrank+263, yysvec+139, yyvstop+227, ! 1255: yycrank+260, 0, 0, ! 1256: yycrank+278, yysvec+30, yyvstop+230, ! 1257: yycrank+0, 0, yyvstop+232, ! 1258: yycrank+102, 0, 0, ! 1259: yycrank+0, 0, yyvstop+234, ! 1260: yycrank+0, 0, yyvstop+236, ! 1261: yycrank+0, 0, yyvstop+238, ! 1262: yycrank+0, 0, yyvstop+241, ! 1263: yycrank+280, 0, 0, ! 1264: yycrank+283, yysvec+30, yyvstop+244, ! 1265: yycrank+0, 0, yyvstop+246, ! 1266: yycrank+302, 0, 0, ! 1267: yycrank+-786, 0, yyvstop+248, ! 1268: yycrank+-818, yysvec+153, 0, ! 1269: yycrank+0, 0, yyvstop+250, ! 1270: 0, 0, 0}; ! 1271: struct yywork *yytop = yycrank+913; ! 1272: struct yysvf *yybgin = yysvec+1; ! 1273: char yymatch[] ={ ! 1274: 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 1275: 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 , ! 1276: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 1277: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 1278: 011 ,01 ,'"' ,01 ,01 ,01 ,01 ,047 , ! 1279: 01 ,01 ,01 ,'+' ,01 ,'+' ,01 ,01 , ! 1280: '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' , ! 1281: '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 , ! 1282: 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'B' ,'G' , ! 1283: 'H' ,'I' ,'B' ,'B' ,'L' ,'B' ,'N' ,'O' , ! 1284: 'B' ,'Q' ,'R' ,'B' ,'T' ,'U' ,'B' ,'B' , ! 1285: 'B' ,'B' ,'B' ,01 ,01 ,01 ,01 ,'_' , ! 1286: 01 ,'A' ,'B' ,'C' ,'D' ,'E' ,'B' ,'G' , ! 1287: 'H' ,'I' ,'B' ,'B' ,'L' ,'B' ,'N' ,'O' , ! 1288: 'B' ,'Q' ,'R' ,'B' ,'T' ,'U' ,'B' ,'B' , ! 1289: 'B' ,'B' ,'B' ,01 ,01 ,01 ,01 ,01 , ! 1290: 0}; ! 1291: char yyextra[] ={ ! 1292: 0,0,0,0,0,0,0,0, ! 1293: 0,0,0,0,0,0,0,0, ! 1294: 0,0,0,0,0,0,0,0, ! 1295: 0,0,0,0,0,0,0,0, ! 1296: 0,0,0,0,0,0,0,0, ! 1297: 0,0,0,0,0,0,0,0, ! 1298: 0,0,0,0,0,0,0,0, ! 1299: 0,0,0,0,0,0,0,0, ! 1300: 0,0,0,0,0,0,0,0, ! 1301: 0,0,0,0,0,0,0,0, ! 1302: 0,0,0,0,0,0,0,0, ! 1303: 0}; ! 1304: /* ncform 4.1 83/08/11 */ ! 1305: ! 1306: int yylineno =1; ! 1307: # define YYU(x) x ! 1308: # define NLSTATE yyprevious=YYNEWLINE ! 1309: char yytext[YYLMAX]; ! 1310: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; ! 1311: char yysbuf[YYLMAX]; ! 1312: char *yysptr = yysbuf; ! 1313: int *yyfnd; ! 1314: extern struct yysvf *yyestate; ! 1315: int yyprevious = YYNEWLINE; ! 1316: yylook(){ ! 1317: register struct yysvf *yystate, **lsp; ! 1318: register struct yywork *yyt; ! 1319: struct yysvf *yyz; ! 1320: int yych; ! 1321: struct yywork *yyr; ! 1322: # ifdef LEXDEBUG ! 1323: int debug; ! 1324: # endif ! 1325: char *yylastch; ! 1326: /* start off machines */ ! 1327: # ifdef LEXDEBUG ! 1328: debug = 0; ! 1329: # endif ! 1330: if (!yymorfg) ! 1331: yylastch = yytext; ! 1332: else { ! 1333: yymorfg=0; ! 1334: yylastch = yytext+yyleng; ! 1335: } ! 1336: for(;;){ ! 1337: lsp = yylstate; ! 1338: yyestate = yystate = yybgin; ! 1339: if (yyprevious==YYNEWLINE) yystate++; ! 1340: for (;;){ ! 1341: # ifdef LEXDEBUG ! 1342: if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); ! 1343: # endif ! 1344: yyt = yystate->yystoff; ! 1345: if(yyt == yycrank){ /* may not be any transitions */ ! 1346: yyz = yystate->yyother; ! 1347: if(yyz == 0)break; ! 1348: if(yyz->yystoff == yycrank)break; ! 1349: } ! 1350: *yylastch++ = yych = input(); ! 1351: tryagain: ! 1352: # ifdef LEXDEBUG ! 1353: if(debug){ ! 1354: fprintf(yyout,"char "); ! 1355: allprint(yych); ! 1356: putchar('\n'); ! 1357: } ! 1358: # endif ! 1359: yyr = yyt; ! 1360: if ( (int)yyt > (int)yycrank){ ! 1361: yyt = yyr + yych; ! 1362: if (yyt <= yytop && yyt->verify+yysvec == yystate){ ! 1363: if(yyt->advance+yysvec == YYLERR) /* error transitions */ ! 1364: {unput(*--yylastch);break;} ! 1365: *lsp++ = yystate = yyt->advance+yysvec; ! 1366: goto contin; ! 1367: } ! 1368: } ! 1369: # ifdef YYOPTIM ! 1370: else if((int)yyt < (int)yycrank) { /* r < yycrank */ ! 1371: yyt = yyr = yycrank+(yycrank-yyt); ! 1372: # ifdef LEXDEBUG ! 1373: if(debug)fprintf(yyout,"compressed state\n"); ! 1374: # endif ! 1375: yyt = yyt + yych; ! 1376: if(yyt <= yytop && yyt->verify+yysvec == yystate){ ! 1377: if(yyt->advance+yysvec == YYLERR) /* error transitions */ ! 1378: {unput(*--yylastch);break;} ! 1379: *lsp++ = yystate = yyt->advance+yysvec; ! 1380: goto contin; ! 1381: } ! 1382: yyt = yyr + YYU(yymatch[yych]); ! 1383: # ifdef LEXDEBUG ! 1384: if(debug){ ! 1385: fprintf(yyout,"try fall back character "); ! 1386: allprint(YYU(yymatch[yych])); ! 1387: putchar('\n'); ! 1388: } ! 1389: # endif ! 1390: if(yyt <= yytop && yyt->verify+yysvec == yystate){ ! 1391: if(yyt->advance+yysvec == YYLERR) /* error transition */ ! 1392: {unput(*--yylastch);break;} ! 1393: *lsp++ = yystate = yyt->advance+yysvec; ! 1394: goto contin; ! 1395: } ! 1396: } ! 1397: if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ ! 1398: # ifdef LEXDEBUG ! 1399: if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); ! 1400: # endif ! 1401: goto tryagain; ! 1402: } ! 1403: # endif ! 1404: else ! 1405: {unput(*--yylastch);break;} ! 1406: contin: ! 1407: # ifdef LEXDEBUG ! 1408: if(debug){ ! 1409: fprintf(yyout,"state %d char ",yystate-yysvec-1); ! 1410: allprint(yych); ! 1411: putchar('\n'); ! 1412: } ! 1413: # endif ! 1414: ; ! 1415: } ! 1416: # ifdef LEXDEBUG ! 1417: if(debug){ ! 1418: fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); ! 1419: allprint(yych); ! 1420: putchar('\n'); ! 1421: } ! 1422: # endif ! 1423: while (lsp-- > yylstate){ ! 1424: *yylastch-- = 0; ! 1425: if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ ! 1426: yyolsp = lsp; ! 1427: if(yyextra[*yyfnd]){ /* must backup */ ! 1428: while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ ! 1429: lsp--; ! 1430: unput(*yylastch--); ! 1431: } ! 1432: } ! 1433: yyprevious = YYU(*yylastch); ! 1434: yylsp = lsp; ! 1435: yyleng = yylastch-yytext+1; ! 1436: yytext[yyleng] = 0; ! 1437: # ifdef LEXDEBUG ! 1438: if(debug){ ! 1439: fprintf(yyout,"\nmatch "); ! 1440: sprint(yytext); ! 1441: fprintf(yyout," action %d\n",*yyfnd); ! 1442: } ! 1443: # endif ! 1444: return(*yyfnd++); ! 1445: } ! 1446: unput(*yylastch); ! 1447: } ! 1448: if (yytext[0] == 0 /* && feof(yyin) */) ! 1449: { ! 1450: yysptr=yysbuf; ! 1451: return(0); ! 1452: } ! 1453: yyprevious = yytext[0] = input(); ! 1454: if (yyprevious>0) ! 1455: output(yyprevious); ! 1456: yylastch=yytext; ! 1457: # ifdef LEXDEBUG ! 1458: if(debug)putchar('\n'); ! 1459: # endif ! 1460: } ! 1461: } ! 1462: yyback(p, m) ! 1463: int *p; ! 1464: { ! 1465: if (p==0) return(0); ! 1466: while (*p) ! 1467: { ! 1468: if (*p++ == m) ! 1469: return(1); ! 1470: } ! 1471: return(0); ! 1472: } ! 1473: /* the following are only used in the lex library */ ! 1474: yyinput(){ ! 1475: return(input()); ! 1476: } ! 1477: yyoutput(c) ! 1478: int c; { ! 1479: output(c); ! 1480: } ! 1481: yyunput(c) ! 1482: int c; { ! 1483: unput(c); ! 1484: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.