# include "stdio.h" static int start_cond = 0; #define BEGIN start_cond = struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;}; # define Z 2 #include "tws.h" #include /* * Table to convert month names to numeric month. We use the * fact that the low order 5 bits of the sum of the 2nd & 3rd * characters of the name is a hash with no collisions for the 12 * valid month names. (The mask to 5 bits maps any combination of * upper and lower case into the same hash value). */ static int month_map[] = { 0, 6, /* 1 - Jul */ 3, /* 2 - Apr */ 5, /* 3 - Jun */ 0, 10, /* 5 - Nov */ 0, 1, /* 7 - Feb */ 11, /* 8 - Dec */ 0, 0, 0, 0, 0, 0, 0, /*15 - Jan */ 0, 0, 0, 2, /*19 - Mar */ 0, 8, /*21 - Sep */ 0, 9, /*23 - Oct */ 0, 0, 4, /*26 - May */ 0, 7 /*28 - Aug */ }; /* * Same trick for day-of-week using the hash function * (c1 & 7) + (c2 & 4) */ static int day_map[] = { 0, 0, 0, 6, /* 3 - Sat */ 4, /* 4 - Thu */ 0, 5, /* 6 - Fri */ 0, /* 7 - Sun */ 2, /* 8 - Tue */ 1 /* 9 - Mon */, 0, 3 /*11 - Wed */ }; #define SETDAY tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\ tw.tw_flags |= TW_SEXP;\ cp += 2; #define SETMONTH tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\ cp += 2;\ SKIPD; #define CVT2 (i=(*cp++ - '0'),isdigit(*cp)? i*10 + (*cp++ - '0') : i) #define SKIPD while ( !isdigit(*cp++) ) ; --cp; #define ZONE(x) tw.tw_zone=(x); #define ZONED(x) tw.tw_zone=(x); tw.tw_flags |= TW_DST; #define LC(c) (isupper(c) ? tolower(c) : (c)) struct tws *dparsetime (str) char *str; { register int i; static struct tws tw; register char *cp; register int gotdate = 0; start_cond = 0; bzero( (char *) &tw, sizeof tw); while (isspace(*str)) str++; while ( 1 ) switch (cp = str, *cp? lex_string( &str, start_cond) : 0) { case -1: if (!gotdate || tw.tw_year == 0) return 0; /* fall through */ case 0: return &tw; case 1: SETDAY; break; case 2: cp++, SETDAY; break; case 3: { tw.tw_mday = CVT2; cp++; tw.tw_mon = CVT2 - 1; cp += 3; tw.tw_year = CVT2; gotdate++; } break; case 4: { tw.tw_mday = CVT2; cp++; tw.tw_mon = CVT2 - 1; cp++; tw.tw_year = CVT2; gotdate++; } break; case 5: { tw.tw_mday = CVT2; while ( !isalpha(*cp++) ) ; SETMONTH; for (i = 0; isdigit(*cp); ) i = i*10 + (*cp++ - '0'); tw.tw_year = i % 100; } break; case 6: { cp++; SETMONTH; tw.tw_mday = CVT2; SKIPD; for (i = 0; isdigit(*cp); ) i = i*10 + (*cp++ - '0'); tw.tw_year = i % 100; } break; case 7: { cp++; SETMONTH; tw.tw_mday = CVT2; } break; case 8: { tw.tw_hour = CVT2; cp++; tw.tw_min = CVT2; cp++; tw.tw_sec = CVT2; BEGIN Z; } break; case 9: case 10: { tw.tw_hour = CVT2; cp++; tw.tw_min = CVT2; BEGIN Z; } break; case 11: { tw.tw_hour = CVT2 + 12; cp++; tw.tw_min = CVT2; BEGIN Z; } break; case 12: { tw.tw_hour = CVT2; tw.tw_min = CVT2; tw.tw_sec = CVT2; BEGIN Z; } break; case 13: { tw.tw_hour = CVT2; tw.tw_min = CVT2; BEGIN Z; } break; case 14: ZONE(0 * 60); break; case 15: ZONE(0 * 60); break; case 16: ZONE(2 * 60); break; case 17: ZONED(2 * 60); break; case 18: ZONE(-5 * 60); break; case 19: ZONED(-5 * 60); break; case 20: ZONE(-6 * 60); break; case 21: ZONED(-6 * 60); break; case 22: ZONE(-7 * 60); break; case 23: ZONED(-7 * 60); break; case 24: ZONE(-8 * 60); break; case 25: ZONED(-8 * 60); break; case 26: ZONE(-(3 * 60 + 30)); break; case 27: ZONE(-4 * 60); break; case 28: ZONED(-4 * 60); break; case 29: ZONE(-9 * 60); break; case 30: ZONED(-9 * 60); break; case 31: ZONE(-10 * 60); break; case 32: ZONED(-10 * 60); break; case 33: ZONED(-1 * 60); break; case 34: tw.tw_zone = 60 * (('a'-1) - LC(*cp)); break; case 35: tw.tw_zone = 60 * ('a' - LC(*cp)); break; case 36: tw.tw_zone = 60 * (LC(*cp) - 'm'); break; case 37: { cp++; tw.tw_zone = ((cp[0] * 10 + cp[1]) -('0' * 10 + '0'))*60 +((cp[2] * 10 + cp[3]) -('0' * 10 + '0')); cp += 4; } break; case 38: { cp++; tw.tw_zone = (('0' * 10 + '0') -(cp[0] * 10 + cp[1]))*60 +(('0' * 10 + '0') -(cp[2] * 10 + cp[3])); cp += 4; } break; case 39: { while( !isdigit(*cp++) ) ; cp++; tw.tw_year = CVT2; } break; case 40: case 41: ; break; default: return(0); } return(0); } /* end of yylex */ int yyvstop[] ={ 0, 41, 0, 40, 0, 41, 0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 34, 0, 35, 0, 35, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 36, 0, 14, 0, 9, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 28, 0, 27, 0, 33, 0, 21, 0, 20, 0, 19, 0, 18, 0, 15, 0, 32, 0, 31, 0, 17, 0, 16, 0, 23, 0, 22, 0, 26, 0, 25, 0, 24, 0, 30, 0, 29, 0, 13, 0, 9, 0, 9, 0, 1, 0, 2, 0, 13, 0, 8, 0, 10, 0, 11, 0, 5, 0, 5, 0, 7, 0, 39, 0, 37, 0, 38, 0, 2, 0, 4, 0, 4, 0, 12, 0, 8, 0, 5, 0, 5, 0, 7, 0, 7, 0, 1, 0, 3, 0, 5, 0, 6, 0, 6, 0, 6, 0, 6, 0, 0}; # define YYTYPE int struct yywork { YYTYPE verify, advance; } yycrank[] ={ 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,5, 1,6, 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, 1,5, 0,0, 0,0, 3,20, 3,6, 5,5, 0,0, 0,0, 1,7, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 1,8, 1,8, 1,8, 1,9, 1,9, 1,9, 1,9, 1,9, 1,9, 1,9, 3,20, 0,0, 5,5, 0,0, 0,0, 0,0, 0,0, 0,0, 3,7, 0,0, 0,0, 3,21, 0,0, 3,22, 20,20, 0,0, 3,8, 3,8, 3,8, 3,9, 3,9, 3,9, 3,9, 3,9, 3,9, 3,9, 9,61, 9,61, 9,61, 9,61, 9,61, 9,61, 9,61, 9,61, 9,61, 9,61, 0,0, 20,20, 0,0, 1,10, 21,80, 21,80, 1,11, 0,0, 1,12, 0,0, 0,0, 0,0, 1,13, 0,0, 0,0, 1,14, 1,15, 1,16, 20,79, 0,0, 0,0, 1,17, 1,18, 0,0, 0,0, 1,19, 0,0, 0,0, 0,0, 3,23, 3,24, 3,25, 3,26, 3,27, 3,28, 3,29, 3,30, 3,31, 3,32, 3,33, 3,33, 3,34, 3,35, 3,36, 3,37, 3,38, 3,38, 3,39, 3,40, 3,41, 3,38, 3,42, 3,38, 3,43, 7,44, 10,62, 11,64, 8,49, 15,71, 16,72, 10,63, 7,45, 19,78, 24,96, 29,101, 13,67, 41,111, 7,46, 7,47, 44,114, 8,49, 7,48, 8,50, 8,51, 8,51, 8,51, 8,51, 8,51, 8,51, 8,51, 8,51, 8,51, 8,51, 8,52, 12,65, 13,68, 14,69, 17,73, 18,76, 25,97, 27,99, 17,74, 22,81, 22,81, 23,94, 30,102, 32,67, 12,66, 35,71, 32,104, 14,70, 18,77, 35,108, 37,109, 25,98, 27,100, 23,62, 17,75, 43,112, 23,95, 30,103, 23,63, 34,69, 45,115, 32,105, 34,106, 32,68, 46,116, 37,110, 47,118, 48,120, 54,126, 8,53, 43,113, 53,124, 8,54, 34,70, 8,55, 55,127, 53,125, 34,107, 8,56, 47,119, 57,130, 8,57, 8,58, 8,59, 46,117, 58,131, 59,132, 8,60, 22,82, 22,83, 22,84, 60,133, 22,85, 49,53, 22,86, 22,87, 49,54, 22,88, 49,55, 62,134, 22,89, 22,90, 49,56, 22,91, 63,135, 49,57, 49,58, 49,59, 22,92, 64,136, 65,137, 49,60, 22,93, 50,121, 50,121, 50,121, 50,121, 50,121, 50,121, 50,121, 50,121, 50,121, 50,121, 51,122, 51,122, 51,122, 51,122, 51,122, 51,122, 51,122, 51,122, 51,122, 51,122, 52,123, 52,123, 52,123, 52,123, 52,123, 52,123, 52,123, 52,123, 52,123, 52,123, 56,128, 61,49, 66,138, 67,139, 68,140, 69,142, 68,141, 70,144, 71,145, 72,146, 73,147, 74,148, 69,143, 75,149, 61,49, 76,150, 61,50, 77,151, 78,152, 79,153, 56,129, 90,108, 94,156, 95,157, 96,158, 97,159, 98,160, 61,52, 80,154, 80,154, 80,154, 80,154, 80,154, 80,154, 80,154, 80,154, 80,154, 80,154, 81,155, 81,155, 81,155, 81,155, 81,155, 81,155, 81,155, 81,155, 81,155, 81,155, 82,94, 88,104, 89,106, 99,161, 100,162, 101,163, 102,164, 103,165, 104,166, 105,167, 106,168, 107,169, 108,170, 109,171, 110,172, 82,95, 88,105, 89,107, 112,173, 113,174, 114,175, 115,176, 116,177, 117,178, 118,179, 119,180, 120,181, 121,182, 121,183, 121,183, 121,183, 121,183, 121,183, 121,183, 121,183, 121,183, 121,183, 121,183, 122,184, 122,184, 122,184, 122,184, 122,184, 122,184, 122,184, 122,184, 122,184, 122,184, 123,185, 124,190, 125,191, 126,192, 127,193, 128,194, 129,195, 130,197, 129,196, 131,199, 132,200, 133,201, 134,202, 135,202, 130,198, 136,205, 141,143, 144,211, 145,212, 146,213, 148,215, 149,216, 176,225, 123,185, 175,223, 177,223, 178,227, 137,202, 138,207, 139,202, 140,202, 142,202, 143,202, 147,207, 150,207, 134,202, 135,202, 151,207, 181,223, 123,186, 123,186, 123,186, 123,186, 123,186, 123,186, 123,186, 123,186, 123,186, 123,186, 123,187, 137,202, 138,207, 139,202, 140,202, 142,202, 143,202, 147,207, 150,207, 152,207, 180,223, 151,207, 179,223, 183,182, 138,207, 153,220, 153,220, 153,220, 153,220, 147,207, 150,207, 186,187, 188,236, 151,207, 189,237, 192,243, 196,198, 199,247, 200,248, 201,249, 203,143, 204,251, 152,207, 205,252, 175,224, 206,253, 208,254, 209,255, 210,143, 123,188, 211,256, 212,257, 213,258, 214,259, 152,207, 215,260, 216,261, 217,262, 185,185, 218,263, 219,264, 223,268, 177,226, 224,269, 123,189, 225,270, 135,204, 226,271, 181,230, 134,203, 154,221, 154,221, 154,221, 154,221, 154,221, 154,221, 154,221, 154,221, 154,221, 154,221, 138,208, 185,185, 142,210, 155,222, 155,222, 155,222, 155,222, 155,222, 155,222, 155,222, 155,222, 155,222, 155,222, 137,206, 180,229, 179,228, 184,233, 227,272, 139,209, 228,273, 150,217, 229,274, 147,214, 140,143, 151,218, 182,231, 182,232, 182,231, 182,231, 182,231, 182,231, 182,231, 182,231, 182,231, 182,231, 230,275, 232,277, 240,282, 241,198, 184,233, 152,219, 187,235, 187,235, 187,235, 187,235, 187,235, 187,235, 187,235, 187,235, 187,235, 187,235, 242,283, 190,238, 243,284, 244,285, 184,234, 184,234, 184,234, 184,234, 184,234, 184,234, 184,234, 184,234, 184,234, 184,234, 190,238, 185,188, 191,238, 190,239, 190,240, 190,239, 190,239, 190,239, 190,239, 190,239, 190,239, 190,239, 190,239, 245,286, 246,198, 191,238, 185,189, 193,238, 191,239, 191,240, 191,239, 191,239, 191,239, 191,239, 191,239, 191,239, 191,239, 191,239, 247,287, 248,288, 193,238, 194,238, 249,289, 193,239, 193,240, 193,239, 193,239, 193,239, 193,239, 193,239, 193,239, 193,239, 193,239, 251,143, 194,238, 195,238, 252,293, 194,239, 194,240, 194,239, 194,239, 194,239, 194,239, 194,239, 194,239, 194,239, 194,239, 253,294, 195,238, 197,238, 190,241, 195,239, 195,240, 195,239, 195,239, 195,239, 195,239, 195,239, 195,239, 195,239, 195,239, 191,242, 197,238, 198,238, 254,295, 197,239, 197,240, 197,239, 197,239, 197,239, 197,239, 197,239, 197,239, 197,239, 197,239, 207,207, 198,238, 233,233, 236,236, 198,239, 198,240, 198,239, 198,239, 198,239, 198,239, 198,239, 198,239, 198,239, 198,239, 193,244, 202,202, 237,237, 255,296, 257,297, 258,298, 259,299, 260,300, 262,301, 207,207, 263,302, 233,233, 236,236, 264,303, 269,304, 271,305, 273,306, 194,245, 274,307, 275,308, 281,310, 283,198, 284,311, 285,312, 202,202, 237,237, 286,313, 197,246, 287,314, 288,315, 289,316, 292,291, 293,318, 294,319, 295,207, 195,198, 296,143, 297,320, 298,143, 299,321, 202,250, 202,250, 202,250, 202,250, 202,250, 202,250, 202,250, 202,250, 202,250, 202,250, 220,265, 220,265, 220,265, 220,265, 220,265, 220,265, 220,265, 220,265, 220,265, 220,265, 221,266, 221,266, 221,266, 221,266, 221,266, 221,266, 221,266, 221,266, 221,266, 221,266, 222,267, 222,267, 222,267, 222,267, 222,267, 222,267, 222,267, 222,267, 222,267, 222,267, 231,276, 231,276, 231,276, 231,276, 231,276, 231,276, 231,276, 231,276, 231,276, 231,276, 234,278, 234,278, 234,278, 234,278, 234,278, 234,278, 234,278, 234,278, 234,278, 234,278, 235,279, 238,239, 238,240, 238,239, 238,239, 238,239, 238,239, 238,239, 238,239, 238,239, 238,239, 239,280, 276,276, 278,278, 300,322, 279,279, 301,323, 303,324, 304,223, 305,325, 306,326, 308,327, 311,330, 235,279, 312,331, 313,198, 250,290, 314,332, 315,198, 316,333, 322,336, 324,337, 327,338, 333,339, 239,280, 276,276, 278,278, 277,276, 279,279, 235,279, 235,279, 235,279, 235,279, 235,279, 235,279, 235,279, 235,279, 235,279, 235,279, 250,290, 239,280, 239,280, 239,280, 239,280, 239,280, 239,280, 239,280, 239,280, 239,280, 239,280, 277,276, 250,291, 335,341, 280,280, 282,280, 250,292, 250,292, 250,292, 250,292, 250,292, 250,292, 250,292, 250,292, 250,292, 250,292, 290,290, 277,309, 277,309, 277,309, 277,309, 277,309, 277,309, 277,309, 277,309, 277,309, 277,309, 280,280, 282,280, 291,317, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 290,290, 239,281, 310,329, 317,317, 328,328, 340,340, 282,239, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 291,317, 309,328, 309,328, 309,328, 309,328, 309,328, 309,328, 309,328, 309,328, 309,328, 309,328, 0,0, 310,329, 317,317, 328,328, 340,340, 334,340, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 341,340, 0,0, 0,0, 0,0, 317,334, 317,335, 317,334, 317,334, 317,334, 317,334, 317,334, 317,334, 317,334, 317,334, 334,340, 280,281, 282,281, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 341,340, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 334,340, 334,340, 334,340, 334,340, 334,340, 334,340, 334,340, 334,340, 334,340, 334,340, 341,334, 0,0, 0,0}; struct yysvf yysvec[] ={ 0, 0, 0, yycrank+1, 0, 0, yycrank+0, yysvec+1, 0, yycrank+27, 0, 0, yycrank+0, yysvec+3, 0, yycrank+29, 0, yyvstop+1, yycrank+0, 0, yyvstop+3, yycrank+47, 0, 0, yycrank+120, 0, 0, yycrank+37, yysvec+8, 0, yycrank+38, 0, 0, yycrank+50, 0, 0, yycrank+78, 0, 0, yycrank+63, 0, 0, yycrank+84, 0, 0, yycrank+42, 0, 0, yycrank+55, 0, 0, yycrank+85, 0, 0, yycrank+79, 0, 0, yycrank+56, 0, 0, yycrank+64, 0, yyvstop+5, yycrank+51, 0, 0, yycrank+139, 0, 0, yycrank+89, 0, yyvstop+7, yycrank+43, 0, yyvstop+9, yycrank+84, 0, yyvstop+11, yycrank+0, yysvec+11, yyvstop+13, yycrank+85, 0, yyvstop+15, yycrank+0, yysvec+12, yyvstop+17, yycrank+50, 0, yyvstop+19, yycrank+90, 0, yyvstop+21, yycrank+0, 0, yyvstop+23, yycrank+94, 0, 0, yycrank+0, 0, yyvstop+25, yycrank+110, 0, yyvstop+27, yycrank+82, 0, yyvstop+29, yycrank+0, yysvec+16, yyvstop+31, yycrank+98, 0, yyvstop+33, yycrank+0, 0, yyvstop+35, yycrank+0, yysvec+17, yyvstop+37, yycrank+0, yysvec+18, yyvstop+39, yycrank+45, 0, yyvstop+41, yycrank+0, yysvec+19, yyvstop+43, yycrank+103, 0, yyvstop+45, yycrank+50, 0, 0, yycrank+97, 0, 0, yycrank+115, 0, 0, yycrank+110, 0, 0, yycrank+114, 0, 0, yycrank+144, 0, 0, yycrank+213, 0, 0, yycrank+223, yysvec+8, 0, yycrank+233, 0, 0, yycrank+107, 0, 0, yycrank+115, 0, 0, yycrank+122, 0, 0, yycrank+194, 0, 0, yycrank+131, 0, 0, yycrank+122, 0, 0, yycrank+135, 0, 0, yycrank+138, 0, 0, yycrank+260, yysvec+49, 0, yycrank+133, 0, 0, yycrank+149, 0, 0, yycrank+158, 0, 0, yycrank+160, 0, 0, yycrank+188, 0, 0, yycrank+184, 0, 0, yycrank+187, 0, 0, yycrank+182, 0, 0, yycrank+188, 0, 0, yycrank+181, 0, 0, yycrank+184, 0, 0, yycrank+185, 0, 0, yycrank+190, 0, 0, yycrank+194, 0, 0, yycrank+189, 0, 0, yycrank+207, 0, 0, yycrank+209, 0, 0, yycrank+253, 0, 0, yycrank+271, 0, 0, yycrank+281, 0, 0, yycrank+239, 0, 0, yycrank+0, yysvec+24, 0, yycrank+0, yysvec+25, 0, yycrank+0, yysvec+27, 0, yycrank+0, yysvec+29, 0, yycrank+0, yysvec+30, 0, yycrank+240, 0, 0, yycrank+241, 0, 0, yycrank+197, 0, 0, yycrank+0, yysvec+37, 0, yycrank+0, yysvec+41, 0, yycrank+0, yysvec+43, 0, yycrank+197, 0, 0, yycrank+198, 0, 0, yycrank+199, 0, 0, yycrank+200, 0, 0, yycrank+201, 0, 0, yycrank+226, 0, 0, yycrank+227, 0, 0, yycrank+228, 0, 0, yycrank+229, 0, 0, yycrank+230, 0, 0, yycrank+231, 0, 0, yycrank+232, 0, 0, yycrank+233, 0, 0, yycrank+234, 0, 0, yycrank+235, 0, 0, yycrank+236, 0, 0, yycrank+237, 0, 0, yycrank+0, 0, yyvstop+47, yycrank+241, 0, 0, yycrank+242, 0, 0, yycrank+254, 0, 0, yycrank+250, 0, 0, yycrank+245, 0, 0, yycrank+252, 0, 0, yycrank+246, 0, 0, yycrank+263, 0, 0, yycrank+265, 0, 0, yycrank+319, 0, 0, yycrank+329, 0, 0, yycrank+378, 0, yyvstop+49, yycrank+274, 0, 0, yycrank+286, 0, 0, yycrank+291, 0, 0, yycrank+293, 0, 0, yycrank+282, 0, 0, yycrank+285, 0, 0, yycrank+280, 0, 0, yycrank+278, 0, 0, yycrank+281, 0, 0, yycrank+286, 0, 0, yycrank+390, 0, 0, yycrank+391, 0, 0, yycrank+301, yysvec+135, 0, yycrank+405, 0, 0, yycrank+406, 0, yyvstop+51, yycrank+407, 0, 0, yycrank+408, 0, 0, yycrank+302, yysvec+135, 0, yycrank+409, 0, 0, yycrank+410, 0, 0, yycrank+304, yysvec+138, yyvstop+53, yycrank+304, yysvec+135, 0, yycrank+295, yysvec+143, 0, yycrank+411, 0, yyvstop+55, yycrank+291, yysvec+143, 0, yycrank+308, yysvec+138, yyvstop+57, yycrank+412, 0, yyvstop+59, yycrank+415, 0, yyvstop+61, yycrank+436, 0, yyvstop+63, yycrank+397, 0, 0, yycrank+448, 0, 0, yycrank+461, 0, 0, yycrank+0, 0, yyvstop+65, yycrank+0, 0, yyvstop+67, yycrank+0, 0, yyvstop+69, yycrank+0, 0, yyvstop+71, yycrank+0, 0, yyvstop+73, yycrank+0, 0, yyvstop+75, yycrank+0, 0, yyvstop+77, yycrank+0, 0, yyvstop+79, yycrank+0, 0, yyvstop+81, yycrank+0, 0, yyvstop+83, yycrank+0, 0, yyvstop+85, yycrank+0, 0, yyvstop+87, yycrank+0, 0, yyvstop+89, yycrank+0, 0, yyvstop+91, yycrank+0, 0, yyvstop+93, yycrank+0, 0, yyvstop+95, yycrank+0, 0, yyvstop+97, yycrank+0, 0, yyvstop+99, yycrank+0, 0, yyvstop+101, yycrank+370, 0, 0, yycrank+309, yysvec+175, 0, yycrank+371, 0, 0, yycrank+313, yysvec+175, 0, yycrank+407, 0, 0, yycrank+405, 0, 0, yycrank+384, 0, 0, yycrank+483, 0, 0, yycrank+402, 0, 0, yycrank+513, 0, yyvstop+103, yycrank+475, 0, yyvstop+105, yycrank+399, yysvec+185, yyvstop+107, yycrank+499, 0, 0, yycrank+349, 0, 0, yycrank+351, 0, 0, yycrank+526, 0, 0, yycrank+541, 0, 0, yycrank+360, yysvec+191, 0, yycrank+556, 0, 0, yycrank+570, 0, 0, yycrank+584, 0, 0, yycrank+361, yysvec+191, 0, yycrank+598, 0, 0, yycrank+612, 0, 0, yycrank+362, yysvec+191, 0, yycrank+353, yysvec+198, 0, yycrank+349, yysvec+198, 0, yycrank+662, 0, 0, yycrank+358, 0, 0, yycrank+352, 0, 0, yycrank+360, 0, 0, yycrank+354, 0, 0, yycrank+647, 0, yyvstop+109, yycrank+375, 0, 0, yycrank+376, 0, 0, yycrank+370, 0, 0, yycrank+379, 0, 0, yycrank+368, 0, 0, yycrank+380, 0, 0, yycrank+365, 0, 0, yycrank+380, 0, 0, yycrank+385, 0, 0, yycrank+368, 0, 0, yycrank+385, 0, 0, yycrank+385, 0, 0, yycrank+672, 0, 0, yycrank+682, 0, 0, yycrank+692, 0, 0, yycrank+443, 0, yyvstop+111, yycrank+392, 0, 0, yycrank+394, 0, 0, yycrank+379, 0, 0, yycrank+426, 0, 0, yycrank+410, 0, 0, yycrank+427, 0, 0, yycrank+440, 0, 0, yycrank+702, 0, 0, yycrank+485, yysvec+231, 0, yycrank+649, 0, yyvstop+113, yycrank+712, 0, 0, yycrank+761, 0, yyvstop+115, yycrank+650, 0, yyvstop+117, yycrank+663, 0, yyvstop+119, yycrank+723, 0, 0, yycrank+772, 0, yyvstop+121, yycrank+486, yysvec+239, yyvstop+123, yycrank+436, 0, 0, yycrank+442, 0, 0, yycrank+450, 0, 0, yycrank+443, 0, 0, yycrank+487, 0, 0, yycrank+481, 0, 0, yycrank+490, 0, 0, yycrank+502, 0, 0, yycrank+502, 0, 0, yycrank+787, 0, yyvstop+125, yycrank+498, 0, 0, yycrank+519, 0, 0, yycrank+531, 0, 0, yycrank+524, 0, 0, yycrank+559, 0, 0, yycrank+0, yysvec+254, 0, yycrank+576, 0, 0, yycrank+574, 0, 0, yycrank+576, 0, 0, yycrank+568, 0, 0, yycrank+0, yysvec+254, 0, yycrank+578, 0, 0, yycrank+583, 0, 0, yycrank+568, 0, 0, yycrank+0, 0, yyvstop+127, yycrank+0, 0, yyvstop+129, yycrank+0, 0, yyvstop+131, yycrank+0, 0, yyvstop+133, yycrank+563, 0, 0, yycrank+0, yysvec+269, 0, yycrank+585, 0, 0, yycrank+0, yysvec+269, 0, yycrank+586, 0, 0, yycrank+591, 0, 0, yycrank+574, 0, 0, yycrank+773, 0, yyvstop+135, yycrank+798, 0, yyvstop+137, yycrank+774, 0, yyvstop+139, yycrank+776, 0, yyvstop+141, yycrank+824, 0, yyvstop+143, yycrank+574, 0, 0, yycrank+825, yysvec+238, yyvstop+145, yycrank+575, 0, 0, yycrank+594, 0, 0, yycrank+596, 0, 0, yycrank+582, 0, 0, yycrank+600, 0, 0, yycrank+598, 0, 0, yycrank+591, 0, 0, yycrank+836, 0, yyvstop+147, yycrank+849, 0, 0, yycrank+657, yysvec+290, yyvstop+149, yycrank+601, 0, 0, yycrank+589, 0, 0, yycrank+660, yysvec+207, yyvstop+151, yycrank+585, 0, 0, yycrank+606, 0, 0, yycrank+594, 0, 0, yycrank+612, 0, 0, yycrank+686, 0, 0, yycrank+689, 0, 0, yycrank+0, yysvec+254, 0, yycrank+687, 0, 0, yycrank+747, 0, 0, yycrank+692, 0, 0, yycrank+693, 0, 0, yycrank+0, yysvec+269, 0, yycrank+691, 0, 0, yycrank+834, 0, 0, yycrank+861, 0, 0, yycrank+691, 0, 0, yycrank+680, 0, 0, yycrank+674, 0, 0, yycrank+696, 0, 0, yycrank+684, 0, 0, yycrank+701, 0, 0, yycrank+862, 0, 0, yycrank+0, yysvec+298, 0, yycrank+0, yysvec+296, 0, yycrank+0, yysvec+298, 0, yycrank+0, yysvec+254, 0, yycrank+699, 0, 0, yycrank+0, yysvec+254, 0, yycrank+704, 0, 0, yycrank+0, yysvec+269, 0, yycrank+0, yysvec+269, 0, yycrank+705, 0, 0, yycrank+863, 0, yyvstop+153, yycrank+0, yysvec+310, yyvstop+155, yycrank+0, yysvec+315, 0, yycrank+0, yysvec+313, 0, yycrank+0, yysvec+315, 0, yycrank+702, 0, 0, yycrank+888, 0, yyvstop+157, yycrank+775, yysvec+334, yyvstop+159, yycrank+0, yysvec+298, 0, yycrank+0, yysvec+254, 0, yycrank+0, yysvec+269, 0, yycrank+0, yysvec+315, 0, yycrank+864, 0, yyvstop+161, yycrank+897, yysvec+317, yyvstop+163, 0, 0, 0}; struct yywork *yytop = yycrank+946; struct yysvf *yybgin = yysvec+1; char yymatch[] ={ 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 , 01 ,011 ,01 ,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 ,01 ,01 ,'-' ,01 ,01 , '0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'6' ,'6' , '6' ,'6' ,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 ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' , 'a' ,'a' ,01 ,'k' ,'k' ,'k' ,'n' ,'n' , 'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' , 'n' ,'n' ,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}; /* ncform 4.1 83/08/11 */