This is lev_lex.c in view mode; [Download] [Up]
# include "stdio.h" # define U(x) x # define NLSTATE yyprevious=YYNEWLINE # define BEGIN yybgin = yysvec + 1 + # define INITIAL 0 # define YYLERR yysvec # define YYSTATE (yyestate-yysvec-1) # define YYOPTIM 1 # define YYLMAX 200 # define output(c) putc(c,yyout) # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} # define yymore() (yymorfg=1) # define ECHO fprintf(yyout, "%s",yytext) # define REJECT { nstr = yyreject(); goto yyfussy;} int yyleng; extern char yytext[]; int yymorfg; extern char *yysptr, yysbuf[]; int yytchar; FILE *yyin ={stdin}, *yyout ={stdout}; extern int yylineno; struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;}; struct yysvf *yyestate; extern struct yysvf yysvec[], *yybgin; /* SCCS Id: @(#)lev_lex.c 3.0 90/01/04 /* Copyright (c) 1989 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ #define LEV_LEX_C /* block some unused #defines to avoid overloading some cpp's */ #define MONDATA_H /* comment this line for pre-compiled headers */ #define MONFLAG_H /* comment this line for pre-compiled headers */ #include "hack.h" #include "lev_comp.h" #include "sp_lev.h" /* Most of these don't exist in flex, yywrap is macro and * yyunput is properly declared in flex.skel. */ #ifndef FLEX_SCANNER int FDECL (yyback, (int *, int)); int NDECL (yylook); int NDECL (yyinput); int NDECL (yywrap); int NDECL (yylex); int FDECL (yyunput, (int)); int FDECL (yyoutput, (int)); #endif #ifdef MSDOS #undef exit #endif /* this doesn't always get put in lev_comp.h * (esp. when using older versions of bison) */ extern YYSTYPE yylval; #ifdef MACOS #undef putchar #undef putc #undef printf #undef Printf #define Printf printf # ifdef LSC #define putc(c,stream) (fputc(c,stream)) #define putchar(c) (fputc(c,stdout)) # endif #endif int line_number = 1; /* This is *** UGLY *** but I can't think a better way to do it * I really need a huge buffer to scan maps... */ #undef YYLMAX #define YYLMAX 2048 # define MAPC 2 # define YYNEWLINE 10 yylex(){ int nstr; extern int yyprevious; while((nstr = yylook()) >= 0) yyfussy: switch(nstr){ case 0: if(yywrap()) return(0); break; case 1: { line_number++; yymore(); } break; case 2: { BEGIN 0; line_number++; yytext[yyleng-7] = 0; /* Discard \nENDMAP */ yylval.map = (char *) alloc(strlen(yytext)+1); strcpy(yylval.map, yytext); return MAP_ID; } break; case 3: { line_number++; } break; case 4: return MAZE_ID; break; case 5: return LEVEL_ID; break; case 6: return GEOMETRY_ID; break; case 7: { BEGIN MAPC; line_number++; } break; case 8: return OBJECT_ID; break; case 9: return MONSTER_ID; break; case 10: return TRAP_ID; break; case 11: return DOOR_ID; break; case 12: return DRAWBRIDGE_ID; break; case 13: return MAZEWALK_ID; break; case 14: return REGION_ID; break; case 15: return RANDOM_OBJECTS_ID; break; case 16: return RANDOM_MONSTERS_ID; break; case 17: return RANDOM_PLACES_ID; break; case 18: return ALTAR_ID; break; case 19: return LADDER_ID; break; case 20: return NON_DIGGABLE_ID; break; case 21: return ROOM_ID; break; case 22: { yylval.i=D_ISOPEN; return DOOR_STATE; } break; case 23: { yylval.i=D_CLOSED; return DOOR_STATE; } break; case 24: { yylval.i=D_LOCKED; return DOOR_STATE; } break; case 25: { yylval.i=D_NODOOR; return DOOR_STATE; } break; case 26: { yylval.i=D_BROKEN; return DOOR_STATE; } break; case 27: { yylval.i=W_NORTH; return DIRECTION; } break; case 28: { yylval.i=W_EAST; return DIRECTION; } break; case 29: { yylval.i=W_SOUTH; return DIRECTION; } break; case 30: { yylval.i=W_WEST; return DIRECTION; } break; case 31: { yylval.i = -1; return RANDOM_TYPE; } break; case 32: return O_REGISTER; break; case 33: return M_REGISTER; break; case 34: return P_REGISTER; break; case 35: return A_REGISTER; break; case 36: { yylval.i=1; return LEFT_OR_RIGHT; } break; case 37: { yylval.i=3; return LEFT_OR_RIGHT; } break; case 38: { yylval.i=2; return CENTER; } break; case 39: { yylval.i=1; return TOP_OR_BOT; } break; case 40: { yylval.i=3; return TOP_OR_BOT; } break; case 41: { yylval.i=1; return LIGHT_STATE; } break; case 42: { yylval.i=0; return LIGHT_STATE; } break; case 43: { yylval.i=A_LAW; return ALIGNMENT; } break; case 44: { yylval.i=A_NEUTRAL; return ALIGNMENT; } break; case 45: { yylval.i=A_CHAOS; return ALIGNMENT; } break; case 46: { yylval.i=1; return ALTAR_TYPE; } break; case 47: { yylval.i=0; return ALTAR_TYPE; } break; case 48: { yylval.i=1; return UP_OR_DOWN; } break; case 49: { yylval.i=0; return UP_OR_DOWN; } break; case 50: { yylval.i=atoi(yytext); return INTEGER; } break; case 51: { yytext[yyleng-1] = 0; /* Discard the trailing \" */ yylval.map = (char *) alloc(strlen(yytext+1)+1); strcpy(yylval.map, yytext+1); /* Discard the first \" */ return STRING; } break; case 52: { line_number++; } break; case 53: ; break; case 54: { yylval.i = yytext[1]; return CHAR; } break; case 55: { return yytext[0]; } break; case -1: break; default: fprintf(yyout,"bad switch yylook %d",nstr); } return(0); } /* end of yylex */ #ifdef AMIGA long *alloc(n) unsigned n; { return ((long *)malloc (n)); } #endif int yyvstop[] ={ 0, 55, 0, 53, 55, 0, 52, 0, 55, 0, 55, 0, 50, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 55, 0, 1, 52, 0, 53, 55, 0, 55, 0, 55, 0, 55, 0, 53, 0, 51, 0, 50, 0, 48, 0, 3, 0, 1, 0, 53, 0, 1, 3, 0, 54, 0, 43, 0, 41, 0, 39, 0, 11, 0, 4, 0, 21, 0, 10, 0, 49, 0, 28, 0, 36, 0, 22, 0, 30, 0, 7, 0, 18, 0, 5, 0, 35, 0, 47, 0, 45, 0, 27, 0, 34, 0, 37, 0, 29, 0, 42, 0, 19, 0, 8, 0, 14, 0, 40, 0, 26, 0, 38, 0, 23, 0, 24, 0, 25, 0, 32, 0, 31, 0, 46, 0, 9, 0, 33, 0, 44, 0, 2, 0, 6, 0, 13, 0, 12, 0, 20, 0, 17, 0, 15, 0, 16, 0, 0}; # define YYTYPE int struct yywork { YYTYPE verify, advance; } yycrank[] ={ 0,0, 0,0, 1,5, 0,0, 0,0, 0,0, 0,0, 0,0, 8,43, 0,0, 1,6, 1,7, 9,45, 0,0, 6,42, 0,0, 8,43, 8,43, 0,0, 0,0, 9,45, 9,0, 41,94, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,6, 0,0, 1,8, 1,5, 6,42, 0,0, 8,43, 1,9, 8,44, 8,43, 9,45, 41,95, 9,45, 9,45, 41,95, 45,96, 1,10, 0,0, 0,0, 0,0, 0,0, 0,0, 8,43, 0,0, 0,0, 0,0, 9,45, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,11, 14,51, 15,53, 1,12, 13,50, 14,52, 1,13, 17,56, 36,89, 49,99, 51,101, 1,14, 1,15, 1,16, 1,17, 11,47, 15,54, 1,18, 12,48, 1,19, 16,55, 12,49, 2,5, 18,57, 19,60, 40,93, 47,97, 18,58, 48,98, 50,100, 2,6, 2,7, 1,20, 1,21, 1,22, 1,23, 1,24, 18,59, 24,68, 34,86, 52,102, 53,103, 54,104, 1,25, 1,26, 1,27, 1,28, 1,29, 20,61, 1,30, 1,31, 1,32, 1,33, 2,6, 1,34, 2,8, 2,35, 23,67, 21,62, 26,73, 2,9, 21,63, 29,78, 32,83, 2,5, 55,105, 2,5, 2,5, 28,76, 2,10, 10,46, 10,46, 10,46, 10,46, 10,46, 10,46, 10,46, 10,46, 10,46, 10,46, 22,64, 27,74, 28,77, 22,65, 56,106, 30,79, 2,11, 22,66, 31,81, 2,12, 57,107, 27,75, 2,13, 30,80, 58,108, 31,82, 2,5, 2,14, 2,36, 2,16, 2,17, 59,109, 25,69, 2,18, 2,5, 2,19, 25,70, 33,84, 60,110, 33,85, 25,71, 62,113, 61,111, 2,5, 63,114, 64,115, 25,72, 65,116, 2,20, 2,21, 2,22, 2,23, 2,24, 61,112, 66,117, 3,37, 67,118, 68,119, 69,120, 2,25, 2,26, 2,27, 2,28, 2,29, 35,87, 2,30, 2,31, 2,32, 2,33, 70,121, 2,34, 71,122, 35,87, 35,88, 2,5, 2,5, 2,5, 3,38, 72,123, 73,124, 3,39, 74,125, 75,126, 76,128, 3,9, 77,129, 78,130, 79,131, 80,132, 81,133, 82,134, 83,135, 84,136, 86,137, 89,138, 35,87, 75,127, 35,87, 35,87, 93,139, 97,140, 98,141, 99,142, 95,94, 89,103, 100,143, 101,144, 102,145, 103,146, 104,147, 3,11, 35,87, 105,148, 3,12, 3,40, 106,149, 3,13, 107,150, 108,151, 109,152, 110,153, 3,14, 3,15, 3,16, 3,17, 95,95, 111,154, 3,18, 95,95, 3,19, 112,155, 113,156, 114,157, 115,158, 116,159, 117,160, 118,161, 119,162, 121,163, 123,164, 124,165, 4,37, 3,20, 3,21, 3,22, 3,23, 3,24, 125,166, 126,167, 127,168, 128,169, 129,170, 130,171, 3,25, 3,26, 3,27, 3,28, 3,29, 131,172, 3,30, 3,31, 3,32, 3,33, 4,38, 3,34, 132,173, 4,41, 133,174, 134,175, 136,176, 4,9, 137,177, 138,178, 139,179, 4,39, 140,180, 4,39, 4,39, 142,181, 143,182, 144,183, 145,184, 146,185, 147,186, 148,187, 149,188, 150,189, 151,190, 154,191, 155,192, 156,193, 157,194, 158,195, 159,196, 160,197, 164,198, 4,11, 165,199, 166,200, 4,12, 4,40, 167,201, 4,13, 168,202, 169,203, 171,204, 4,39, 4,14, 4,36, 4,16, 4,17, 172,205, 173,206, 4,18, 4,39, 4,19, 174,207, 175,208, 176,209, 179,210, 181,211, 182,212, 183,213, 4,39, 185,214, 186,215, 38,42, 38,90, 4,20, 4,21, 4,22, 4,23, 4,24, 187,216, 188,217, 189,218, 190,219, 193,220, 194,221, 4,25, 4,26, 4,27, 4,28, 4,29, 195,222, 4,30, 4,31, 4,32, 4,33, 38,91, 4,34, 39,90, 38,92, 197,223, 4,39, 4,39, 4,39, 198,224, 199,225, 200,226, 38,92, 201,227, 38,92, 38,92, 203,228, 205,229, 207,230, 210,231, 211,232, 212,233, 214,234, 215,235, 216,236, 39,92, 218,237, 225,238, 39,92, 226,239, 231,240, 232,241, 233,242, 234,243, 236,244, 241,248, 39,92, 244,249, 39,92, 39,92, 237,245, 245,250, 237,246, 237,247, 38,92, 246,251, 247,252, 248,253, 249,254, 250,255, 251,256, 252,257, 38,92, 254,258, 255,259, 256,260, 257,261, 258,262, 259,263, 260,264, 261,265, 38,92, 263,266, 264,267, 265,268, 266,269, 267,270, 269,271, 39,92, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 39,92, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 39,92, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 38,92, 38,92, 38,92, 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,0, 0,0, 0,0, 0,0, 39,92, 39,92, 39,92, 0,0, 0,0}; struct yysvf yysvec[] ={ 0, 0, 0, yycrank+-1, 0, 0, yycrank+-87, 0, 0, yycrank+-181, yysvec+1, 0, yycrank+-267, yysvec+2, 0, yycrank+0, 0, yyvstop+1, yycrank+5, 0, yyvstop+3, yycrank+0, 0, yyvstop+6, yycrank+-7, 0, yyvstop+8, yycrank+-11, 0, yyvstop+10, yycrank+88, 0, yyvstop+12, yycrank+5, 0, yyvstop+15, yycrank+5, 0, yyvstop+17, yycrank+1, 0, yyvstop+19, yycrank+2, 0, yyvstop+21, yycrank+3, 0, yyvstop+23, yycrank+7, 0, yyvstop+25, yycrank+7, 0, yyvstop+27, yycrank+24, 0, yyvstop+29, yycrank+8, 0, yyvstop+31, yycrank+6, 0, yyvstop+33, yycrank+13, 0, yyvstop+35, yycrank+45, 0, yyvstop+37, yycrank+12, 0, yyvstop+39, yycrank+7, 0, yyvstop+41, yycrank+71, 0, yyvstop+43, yycrank+14, 0, yyvstop+45, yycrank+46, 0, yyvstop+47, yycrank+36, 0, yyvstop+49, yycrank+20, 0, yyvstop+51, yycrank+54, 0, yyvstop+53, yycrank+50, 0, yyvstop+55, yycrank+18, 0, yyvstop+57, yycrank+63, 0, yyvstop+59, yycrank+4, 0, yyvstop+61, yycrank+-199, 0, yyvstop+63, yycrank+9, yysvec+15, yyvstop+65, yycrank+0, 0, yyvstop+67, yycrank+353, 0, yyvstop+70, yycrank+377, 0, yyvstop+73, yycrank+13, 0, yyvstop+75, yycrank+-12, yysvec+35, yyvstop+77, yycrank+0, yysvec+6, yyvstop+79, yycrank+0, yysvec+8, 0, yycrank+0, 0, yyvstop+81, yycrank+9, 0, 0, yycrank+0, yysvec+10, yyvstop+83, yycrank+8, 0, 0, yycrank+15, 0, 0, yycrank+10, 0, 0, yycrank+16, 0, 0, yycrank+8, 0, 0, yycrank+20, 0, 0, yycrank+17, 0, 0, yycrank+30, 0, 0, yycrank+53, 0, 0, yycrank+76, 0, 0, yycrank+78, 0, 0, yycrank+89, 0, 0, yycrank+88, 0, 0, yycrank+109, 0, 0, yycrank+73, 0, 0, yycrank+61, 0, 0, yycrank+69, 0, 0, yycrank+71, 0, 0, yycrank+86, 0, 0, yycrank+79, 0, 0, yycrank+73, 0, 0, yycrank+78, 0, 0, yycrank+75, 0, 0, yycrank+103, 0, 0, yycrank+91, 0, 0, yycrank+115, 0, 0, yycrank+105, 0, 0, yycrank+100, 0, 0, yycrank+118, 0, 0, yycrank+113, 0, 0, yycrank+120, 0, 0, yycrank+125, 0, 0, yycrank+113, 0, 0, yycrank+121, 0, 0, yycrank+111, 0, 0, yycrank+109, 0, 0, yycrank+115, 0, 0, yycrank+120, 0, 0, yycrank+0, 0, yyvstop+85, yycrank+114, 0, 0, yycrank+0, yysvec+35, 0, yycrank+0, 0, yyvstop+87, yycrank+150, 0, 0, yycrank+0, 0, yyvstop+89, yycrank+0, yysvec+38, yyvstop+91, yycrank+0, yysvec+39, 0, yycrank+167, 0, 0, yycrank+0, 0, yyvstop+93, yycrank+-229, yysvec+35, 0, yycrank+0, 0, yyvstop+96, yycrank+171, 0, 0, yycrank+155, 0, 0, yycrank+151, 0, 0, yycrank+164, 0, 0, yycrank+174, 0, 0, yycrank+174, 0, 0, yycrank+175, 0, 0, yycrank+162, 0, 0, yycrank+153, 0, 0, yycrank+182, 0, 0, yycrank+185, 0, 0, yycrank+181, 0, 0, yycrank+178, 0, 0, yycrank+176, 0, 0, yycrank+159, 0, 0, yycrank+169, 0, 0, yycrank+151, 0, 0, yycrank+161, 0, 0, yycrank+153, 0, 0, yycrank+159, 0, 0, yycrank+156, 0, 0, yycrank+162, 0, 0, yycrank+157, 0, 0, yycrank+0, 0, yyvstop+98, yycrank+158, 0, 0, yycrank+0, 0, yyvstop+100, yycrank+168, 0, 0, yycrank+161, 0, 0, yycrank+167, 0, 0, yycrank+173, 0, 0, yycrank+169, 0, 0, yycrank+185, 0, 0, yycrank+177, 0, 0, yycrank+189, 0, 0, yycrank+194, 0, 0, yycrank+197, 0, 0, yycrank+198, 0, 0, yycrank+188, 0, 0, yycrank+0, 0, yyvstop+102, yycrank+200, 0, 0, yycrank+191, 0, 0, yycrank+298, 0, 0, yycrank+232, 0, 0, yycrank+229, 0, 0, yycrank+0, 0, yyvstop+104, yycrank+248, 0, 0, yycrank+246, 0, 0, yycrank+247, 0, 0, yycrank+241, 0, 0, yycrank+231, 0, yyvstop+106, yycrank+235, 0, 0, yycrank+252, 0, 0, yycrank+254, 0, 0, yycrank+243, 0, 0, yycrank+244, 0, 0, yycrank+0, 0, yyvstop+108, yycrank+0, 0, yyvstop+110, yycrank+214, 0, 0, yycrank+211, 0, 0, yycrank+215, 0, 0, yycrank+226, 0, 0, yycrank+227, 0, 0, yycrank+214, 0, 0, yycrank+229, 0, 0, yycrank+0, 0, yyvstop+112, yycrank+0, 0, yyvstop+114, yycrank+0, 0, yyvstop+116, yycrank+230, 0, 0, yycrank+217, 0, 0, yycrank+220, 0, 0, yycrank+226, 0, 0, yycrank+235, 0, 0, yycrank+241, 0, 0, yycrank+0, 0, yyvstop+118, yycrank+240, 0, 0, yycrank+236, 0, 0, yycrank+232, 0, 0, yycrank+242, 0, 0, yycrank+249, 0, 0, yycrank+238, 0, 0, yycrank+0, 0, yyvstop+120, yycrank+0, 0, yyvstop+122, yycrank+290, 0, 0, yycrank+0, 0, yyvstop+124, yycrank+274, 0, 0, yycrank+273, 0, 0, yycrank+276, 0, 0, yycrank+0, 0, yyvstop+126, yycrank+295, 0, 0, yycrank+292, 0, 0, yycrank+296, 0, 0, yycrank+286, 0, 0, yycrank+294, 0, 0, yycrank+294, 0, 0, yycrank+0, 0, yyvstop+128, yycrank+0, 0, yyvstop+130, yycrank+264, 0, 0, yycrank+264, 0, 0, yycrank+266, 0, 0, yycrank+0, 0, yyvstop+132, yycrank+289, 0, 0, yycrank+293, 0, 0, yycrank+293, 0, 0, yycrank+298, 0, 0, yycrank+283, 0, 0, yycrank+0, 0, yyvstop+134, yycrank+284, 0, 0, yycrank+0, 0, yyvstop+136, yycrank+292, 0, 0, yycrank+0, 0, yyvstop+138, yycrank+301, 0, 0, yycrank+0, 0, yyvstop+140, yycrank+0, 0, yyvstop+142, yycrank+323, 0, 0, yycrank+331, 0, 0, yycrank+323, 0, 0, yycrank+0, 0, yyvstop+144, yycrank+330, 0, 0, yycrank+325, 0, 0, yycrank+337, 0, 0, yycrank+0, 0, yyvstop+146, yycrank+315, 0, 0, yycrank+0, 0, yyvstop+148, yycrank+0, 0, yyvstop+150, yycrank+0, 0, yyvstop+152, yycrank+0, 0, yyvstop+154, yycrank+0, 0, yyvstop+156, yycrank+0, 0, yyvstop+158, yycrank+297, 0, 0, yycrank+305, 0, 0, yycrank+0, 0, yyvstop+160, yycrank+0, 0, yyvstop+162, yycrank+0, 0, yyvstop+164, yycrank+0, 0, yyvstop+166, yycrank+404, 0, 0, yycrank+347, 0, 0, yycrank+327, 0, 0, yycrank+342, 0, 0, yycrank+0, 0, yyvstop+168, yycrank+347, 0, 0, yycrank+347, 0, 0, yycrank+0, 0, yyvstop+170, yycrank+0, 0, yyvstop+172, yycrank+0, 0, yyvstop+174, yycrank+348, 0, 0, yycrank+0, 0, yyvstop+176, yycrank+0, 0, yyvstop+178, yycrank+356, 0, 0, yycrank+346, 0, 0, yycrank+363, 0, 0, yycrank+354, 0, 0, yycrank+362, 0, 0, yycrank+366, 0, 0, yycrank+355, 0, 0, yycrank+360, 0, 0, yycrank+370, 0, 0, yycrank+0, 0, yyvstop+180, yycrank+361, 0, 0, yycrank+355, 0, 0, yycrank+370, 0, 0, yycrank+373, 0, 0, yycrank+372, 0, 0, yycrank+358, 0, 0, yycrank+376, 0, 0, yycrank+375, 0, 0, yycrank+0, 0, yyvstop+182, yycrank+377, 0, 0, yycrank+363, 0, 0, yycrank+365, 0, 0, yycrank+367, 0, 0, yycrank+367, 0, 0, yycrank+0, 0, yyvstop+184, yycrank+368, 0, 0, yycrank+0, 0, yyvstop+186, yycrank+0, 0, yyvstop+188, 0, 0, 0}; struct yywork *yytop = yycrank+502; struct yysvf *yybgin = yysvec+1; char yymatch[] ={ 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 040 ,01 ,'"' ,'#' ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,'#' ,01 ,'#' ,'#' ,01 , '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' , '0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,'#' ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,'#' ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,'#' ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,01 ,01 ,'#' ,'#' ,'#' ,01 ,01 , 0}; char yyextra[] ={ 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,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0}; /* ncform 4.1 83/08/11 */ int yylineno =1; # define YYU(x) x # define NLSTATE yyprevious=YYNEWLINE char yytext[YYLMAX]; struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; char yysbuf[YYLMAX]; char *yysptr = yysbuf; int *yyfnd; extern struct yysvf *yyestate; int yyprevious = YYNEWLINE; yylook(){ register struct yysvf *yystate, **lsp; register struct yywork *yyt; struct yysvf *yyz; int yych; struct yywork *yyr; # ifdef LEXDEBUG int debug; # endif char *yylastch; /* start off machines */ # ifdef LEXDEBUG debug = 0; # endif if (!yymorfg) yylastch = yytext; else { yymorfg=0; yylastch = yytext+yyleng; } for(;;){ lsp = yylstate; yyestate = yystate = yybgin; if (yyprevious==YYNEWLINE) yystate++; for (;;){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); # endif yyt = yystate->yystoff; if(yyt == yycrank){ /* may not be any transitions */ yyz = yystate->yyother; if(yyz == 0)break; if(yyz->yystoff == yycrank)break; } *yylastch++ = yych = input(); tryagain: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"char "); allprint(yych); putchar('\n'); } # endif yyr = yyt; if ( (int)yyt > (int)yycrank){ yyt = yyr + yych; if (yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } # ifdef YYOPTIM else if((int)yyt < (int)yycrank) { /* r < yycrank */ yyt = yyr = yycrank+(yycrank-yyt); # ifdef LEXDEBUG if(debug)fprintf(yyout,"compressed state\n"); # endif yyt = yyt + yych; if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transitions */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } yyt = yyr + YYU(yymatch[yych]); # ifdef LEXDEBUG if(debug){ fprintf(yyout,"try fall back character "); allprint(YYU(yymatch[yych])); putchar('\n'); } # endif if(yyt <= yytop && yyt->verify+yysvec == yystate){ if(yyt->advance+yysvec == YYLERR) /* error transition */ {unput(*--yylastch);break;} *lsp++ = yystate = yyt->advance+yysvec; goto contin; } } if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ # ifdef LEXDEBUG if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); # endif goto tryagain; } # endif else {unput(*--yylastch);break;} contin: # ifdef LEXDEBUG if(debug){ fprintf(yyout,"state %d char ",yystate-yysvec-1); allprint(yych); putchar('\n'); } # endif ; } # ifdef LEXDEBUG if(debug){ fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); allprint(yych); putchar('\n'); } # endif while (lsp-- > yylstate){ *yylastch-- = 0; if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ yyolsp = lsp; if(yyextra[*yyfnd]){ /* must backup */ while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ lsp--; unput(*yylastch--); } } yyprevious = YYU(*yylastch); yylsp = lsp; yyleng = yylastch-yytext+1; yytext[yyleng] = 0; # ifdef LEXDEBUG if(debug){ fprintf(yyout,"\nmatch "); sprint(yytext); fprintf(yyout," action %d\n",*yyfnd); } # endif return(*yyfnd++); } unput(*yylastch); } if (yytext[0] == 0 /* && feof(yyin) */) { yysptr=yysbuf; return(0); } yyprevious = yytext[0] = input(); if (yyprevious>0) output(yyprevious); yylastch=yytext; # ifdef LEXDEBUG if(debug)putchar('\n'); # endif } } yyback(p, m) int *p; { if (p==0) return(0); while (*p) { if (*p++ == m) return(1); } return(0); } /* the following are only used in the lex library */ yyinput(){ return(input()); } yyoutput(c) int c; { output(c); } yyunput(c) int c; { unput(c); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.