|
|
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):getc(yyin))==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: #ifndef lint ! 29: static char sccsid[] = "@(#)scan.l 4.1 (Berkeley) 10/20/82"; ! 30: #endif ! 31: ! 32: #include "y.tab.h" ! 33: #include "htable.h" ! 34: # define YYNEWLINE 10 ! 35: yylex(){ ! 36: int nstr; extern int yyprevious; ! 37: while((nstr = yylook()) >= 0) ! 38: yyfussy: switch(nstr){ ! 39: case 0: ! 40: if(yywrap()) return(0); break; ! 41: case 1: ! 42: { ! 43: yylval.number = KW_NET; ! 44: return (KEYWORD); ! 45: } ! 46: break; ! 47: case 2: ! 48: { ! 49: yylval.number = KW_GATEWAY; ! 50: return (KEYWORD); ! 51: } ! 52: break; ! 53: case 3: ! 54: { ! 55: yylval.number = KW_HOST; ! 56: return (KEYWORD); ! 57: } ! 58: break; ! 59: case 4: ! 60: { ! 61: yylval.namelist = newname(yytext); ! 62: return (NAME); ! 63: } ! 64: break; ! 65: case 5: ! 66: return (NAME); ! 67: break; ! 68: case 6: ! 69: { ! 70: yylval.number = atoi(yytext); ! 71: return (NUMBER); ! 72: } ! 73: break; ! 74: case 7: ! 75: return ('.'); ! 76: break; ! 77: case 8: ! 78: return (':'); ! 79: break; ! 80: case 9: ! 81: return (','); ! 82: break; ! 83: case 10: ! 84: return ('/'); ! 85: break; ! 86: case 11: ! 87: ; ! 88: break; ! 89: case 12: ! 90: ; ! 91: break; ! 92: case 13: ! 93: ; ! 94: break; ! 95: case 14: ! 96: return (END); ! 97: break; ! 98: case 15: ! 99: fprintf(stderr, "Illegal char: '%s'\n", yytext); ! 100: break; ! 101: case -1: ! 102: break; ! 103: default: ! 104: fprintf(yyout,"bad switch yylook %d",nstr); ! 105: } return(0); } ! 106: /* end of yylex */ ! 107: ! 108: yywrap() ! 109: { ! 110: return (1); ! 111: } ! 112: int yyvstop[] ={ ! 113: 0, ! 114: ! 115: 15, ! 116: 0, ! 117: ! 118: 13, ! 119: 15, ! 120: 0, ! 121: ! 122: 14, ! 123: 0, ! 124: ! 125: 9, ! 126: 15, ! 127: 0, ! 128: ! 129: 7, ! 130: 15, ! 131: 0, ! 132: ! 133: 10, ! 134: 15, ! 135: 0, ! 136: ! 137: 6, ! 138: 15, ! 139: 0, ! 140: ! 141: 8, ! 142: 15, ! 143: 0, ! 144: ! 145: 11, ! 146: 15, ! 147: 0, ! 148: ! 149: 5, ! 150: 15, ! 151: 0, ! 152: ! 153: 5, ! 154: 15, ! 155: 0, ! 156: ! 157: 5, ! 158: 15, ! 159: 0, ! 160: ! 161: 5, ! 162: 15, ! 163: 0, ! 164: ! 165: 13, ! 166: 0, ! 167: ! 168: 12, ! 169: 0, ! 170: ! 171: 6, ! 172: 0, ! 173: ! 174: 11, ! 175: 0, ! 176: ! 177: 4, ! 178: 0, ! 179: ! 180: 4, ! 181: 0, ! 182: ! 183: 4, ! 184: 0, ! 185: ! 186: 4, ! 187: 0, ! 188: ! 189: 4, ! 190: 0, ! 191: ! 192: 4, ! 193: 0, ! 194: ! 195: 1, ! 196: 4, ! 197: 0, ! 198: ! 199: 4, ! 200: 0, ! 201: ! 202: 3, ! 203: 4, ! 204: 0, ! 205: ! 206: 4, ! 207: 0, ! 208: ! 209: 4, ! 210: 0, ! 211: ! 212: 2, ! 213: 4, ! 214: 0, ! 215: 0}; ! 216: # define YYTYPE char ! 217: struct yywork { YYTYPE verify, advance; } yycrank[] ={ ! 218: 0,0, 0,0, 1,3, 0,0, ! 219: 0,0, 0,0, 0,0, 11,19, ! 220: 0,0, 0,0, 1,4, 1,5, ! 221: 4,16, 5,17, 0,0, 11,19, ! 222: 11,0, 0,0, 0,0, 0,0, ! 223: 0,0, 0,0, 0,0, 0,0, ! 224: 19,0, 0,0, 0,0, 0,0, ! 225: 0,0, 0,0, 0,0, 0,0, ! 226: 0,0, 0,0, 0,0, 4,16, ! 227: 5,17, 0,0, 0,0, 0,0, ! 228: 0,0, 0,0, 0,0, 0,0, ! 229: 0,0, 1,6, 1,3, 1,7, ! 230: 1,8, 1,9, 2,6, 11,19, ! 231: 2,7, 2,8, 11,19, 0,0, ! 232: 0,0, 0,0, 0,0, 1,10, ! 233: 1,11, 0,0, 0,0, 0,0, ! 234: 2,10, 2,11, 1,12, 0,0, ! 235: 0,0, 0,0, 0,0, 11,19, ! 236: 1,13, 1,14, 0,0, 0,0, ! 237: 0,0, 2,13, 2,14, 1,15, ! 238: 13,22, 30,31, 0,0, 15,24, ! 239: 2,15, 9,18, 9,18, 9,18, ! 240: 9,18, 9,18, 9,18, 9,18, ! 241: 9,18, 9,18, 9,18, 12,20, ! 242: 12,20, 12,20, 12,21, 12,21, ! 243: 12,21, 12,21, 12,21, 12,21, ! 244: 12,21, 12,21, 12,21, 12,21, ! 245: 14,23, 22,25, 23,26, 24,27, ! 246: 25,28, 26,29, 28,30, 12,21, ! 247: 12,21, 12,21, 12,21, 12,21, ! 248: 12,21, 12,21, 12,21, 12,21, ! 249: 12,21, 12,21, 12,21, 12,21, ! 250: 12,21, 12,21, 12,21, 12,21, ! 251: 12,21, 12,21, 12,21, 12,21, ! 252: 12,21, 12,21, 12,21, 12,21, ! 253: 12,21, 31,32, 0,0, 0,0, ! 254: 0,0}; ! 255: struct yysvf yysvec[] ={ ! 256: 0, 0, 0, ! 257: yycrank+-1, 0, 0, ! 258: yycrank+-6, yysvec+1, 0, ! 259: yycrank+0, 0, yyvstop+1, ! 260: yycrank+3, 0, yyvstop+3, ! 261: yycrank+4, 0, yyvstop+6, ! 262: yycrank+0, 0, yyvstop+8, ! 263: yycrank+0, 0, yyvstop+11, ! 264: yycrank+0, 0, yyvstop+14, ! 265: yycrank+37, 0, yyvstop+17, ! 266: yycrank+0, 0, yyvstop+20, ! 267: yycrank+-6, 0, yyvstop+23, ! 268: yycrank+50, 0, yyvstop+26, ! 269: yycrank+15, yysvec+12, yyvstop+29, ! 270: yycrank+29, yysvec+12, yyvstop+32, ! 271: yycrank+14, yysvec+12, yyvstop+35, ! 272: yycrank+0, yysvec+4, yyvstop+38, ! 273: yycrank+0, yysvec+5, yyvstop+40, ! 274: yycrank+0, yysvec+9, yyvstop+42, ! 275: yycrank+-14, yysvec+11, yyvstop+44, ! 276: yycrank+0, yysvec+12, 0, ! 277: yycrank+0, yysvec+12, yyvstop+46, ! 278: yycrank+25, yysvec+12, yyvstop+48, ! 279: yycrank+27, yysvec+12, yyvstop+50, ! 280: yycrank+27, yysvec+12, yyvstop+52, ! 281: yycrank+43, yysvec+12, yyvstop+54, ! 282: yycrank+29, yysvec+12, yyvstop+56, ! 283: yycrank+0, yysvec+12, yyvstop+58, ! 284: yycrank+27, yysvec+12, yyvstop+61, ! 285: yycrank+0, yysvec+12, yyvstop+63, ! 286: yycrank+16, yysvec+12, yyvstop+66, ! 287: yycrank+52, yysvec+12, yyvstop+68, ! 288: yycrank+0, yysvec+12, yyvstop+70, ! 289: 0, 0, 0}; ! 290: struct yywork *yytop = yycrank+141; ! 291: struct yysvf *yybgin = yysvec+1; ! 292: char yymatch[] ={ ! 293: 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 294: 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 , ! 295: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 296: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 297: 011 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 298: 01 ,01 ,01 ,01 ,01 ,'-' ,'-' ,'-' , ! 299: '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' , ! 300: '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 , ! 301: 01 ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' , ! 302: 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' , ! 303: 'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' , ! 304: 'A' ,'A' ,'A' ,01 ,01 ,01 ,01 ,01 , ! 305: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 306: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 307: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 308: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , ! 309: 0}; ! 310: char yyextra[] ={ ! 311: 0,0,0,0,0,0,0,0, ! 312: 0,0,0,0,0,0,0,0, ! 313: 0}; ! 314: /* ncform 4.1 83/08/11 */ ! 315: ! 316: int yylineno =1; ! 317: # define YYU(x) x ! 318: # define NLSTATE yyprevious=YYNEWLINE ! 319: char yytext[YYLMAX]; ! 320: struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; ! 321: char yysbuf[YYLMAX]; ! 322: char *yysptr = yysbuf; ! 323: int *yyfnd; ! 324: extern struct yysvf *yyestate; ! 325: int yyprevious = YYNEWLINE; ! 326: yylook(){ ! 327: register struct yysvf *yystate, **lsp; ! 328: register struct yywork *yyt; ! 329: struct yysvf *yyz; ! 330: int yych; ! 331: struct yywork *yyr; ! 332: # ifdef LEXDEBUG ! 333: int debug; ! 334: # endif ! 335: char *yylastch; ! 336: /* start off machines */ ! 337: # ifdef LEXDEBUG ! 338: debug = 0; ! 339: # endif ! 340: if (!yymorfg) ! 341: yylastch = yytext; ! 342: else { ! 343: yymorfg=0; ! 344: yylastch = yytext+yyleng; ! 345: } ! 346: for(;;){ ! 347: lsp = yylstate; ! 348: yyestate = yystate = yybgin; ! 349: if (yyprevious==YYNEWLINE) yystate++; ! 350: for (;;){ ! 351: # ifdef LEXDEBUG ! 352: if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); ! 353: # endif ! 354: yyt = yystate->yystoff; ! 355: if(yyt == yycrank){ /* may not be any transitions */ ! 356: yyz = yystate->yyother; ! 357: if(yyz == 0)break; ! 358: if(yyz->yystoff == yycrank)break; ! 359: } ! 360: *yylastch++ = yych = input(); ! 361: tryagain: ! 362: # ifdef LEXDEBUG ! 363: if(debug){ ! 364: fprintf(yyout,"char "); ! 365: allprint(yych); ! 366: putchar('\n'); ! 367: } ! 368: # endif ! 369: yyr = yyt; ! 370: if ( (int)yyt > (int)yycrank){ ! 371: yyt = yyr + yych; ! 372: if (yyt <= yytop && yyt->verify+yysvec == yystate){ ! 373: if(yyt->advance+yysvec == YYLERR) /* error transitions */ ! 374: {unput(*--yylastch);break;} ! 375: *lsp++ = yystate = yyt->advance+yysvec; ! 376: goto contin; ! 377: } ! 378: } ! 379: # ifdef YYOPTIM ! 380: else if((int)yyt < (int)yycrank) { /* r < yycrank */ ! 381: yyt = yyr = yycrank+(yycrank-yyt); ! 382: # ifdef LEXDEBUG ! 383: if(debug)fprintf(yyout,"compressed state\n"); ! 384: # endif ! 385: yyt = yyt + yych; ! 386: if(yyt <= yytop && yyt->verify+yysvec == yystate){ ! 387: if(yyt->advance+yysvec == YYLERR) /* error transitions */ ! 388: {unput(*--yylastch);break;} ! 389: *lsp++ = yystate = yyt->advance+yysvec; ! 390: goto contin; ! 391: } ! 392: yyt = yyr + YYU(yymatch[yych]); ! 393: # ifdef LEXDEBUG ! 394: if(debug){ ! 395: fprintf(yyout,"try fall back character "); ! 396: allprint(YYU(yymatch[yych])); ! 397: putchar('\n'); ! 398: } ! 399: # endif ! 400: if(yyt <= yytop && yyt->verify+yysvec == yystate){ ! 401: if(yyt->advance+yysvec == YYLERR) /* error transition */ ! 402: {unput(*--yylastch);break;} ! 403: *lsp++ = yystate = yyt->advance+yysvec; ! 404: goto contin; ! 405: } ! 406: } ! 407: if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ ! 408: # ifdef LEXDEBUG ! 409: if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); ! 410: # endif ! 411: goto tryagain; ! 412: } ! 413: # endif ! 414: else ! 415: {unput(*--yylastch);break;} ! 416: contin: ! 417: # ifdef LEXDEBUG ! 418: if(debug){ ! 419: fprintf(yyout,"state %d char ",yystate-yysvec-1); ! 420: allprint(yych); ! 421: putchar('\n'); ! 422: } ! 423: # endif ! 424: ; ! 425: } ! 426: # ifdef LEXDEBUG ! 427: if(debug){ ! 428: fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); ! 429: allprint(yych); ! 430: putchar('\n'); ! 431: } ! 432: # endif ! 433: while (lsp-- > yylstate){ ! 434: *yylastch-- = 0; ! 435: if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ ! 436: yyolsp = lsp; ! 437: if(yyextra[*yyfnd]){ /* must backup */ ! 438: while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ ! 439: lsp--; ! 440: unput(*yylastch--); ! 441: } ! 442: } ! 443: yyprevious = YYU(*yylastch); ! 444: yylsp = lsp; ! 445: yyleng = yylastch-yytext+1; ! 446: yytext[yyleng] = 0; ! 447: # ifdef LEXDEBUG ! 448: if(debug){ ! 449: fprintf(yyout,"\nmatch "); ! 450: sprint(yytext); ! 451: fprintf(yyout," action %d\n",*yyfnd); ! 452: } ! 453: # endif ! 454: return(*yyfnd++); ! 455: } ! 456: unput(*yylastch); ! 457: } ! 458: if (yytext[0] == 0 /* && feof(yyin) */) ! 459: { ! 460: yysptr=yysbuf; ! 461: return(0); ! 462: } ! 463: yyprevious = yytext[0] = input(); ! 464: if (yyprevious>0) ! 465: output(yyprevious); ! 466: yylastch=yytext; ! 467: # ifdef LEXDEBUG ! 468: if(debug)putchar('\n'); ! 469: # endif ! 470: } ! 471: } ! 472: yyback(p, m) ! 473: int *p; ! 474: { ! 475: if (p==0) return(0); ! 476: while (*p) ! 477: { ! 478: if (*p++ == m) ! 479: return(1); ! 480: } ! 481: return(0); ! 482: } ! 483: /* the following are only used in the lex library */ ! 484: yyinput(){ ! 485: return(input()); ! 486: } ! 487: yyoutput(c) ! 488: int c; { ! 489: output(c); ! 490: } ! 491: yyunput(c) ! 492: int c; { ! 493: unput(c); ! 494: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.