1: # include "stdio.h"
2: static int start_cond = 0;
3: #define BEGIN start_cond =
4: struct yysvf {
5: struct yywork *yystoff;
6: struct yysvf *yyother;
7: int *yystops;};
8: # define Z 2
9: #include "tws.h"
10: #include <ctype.h>
11:
12: /*
13: * Table to convert month names to numeric month. We use the
14: * fact that the low order 5 bits of the sum of the 2nd & 3rd
15: * characters of the name is a hash with no collisions for the 12
16: * valid month names. (The mask to 5 bits maps any combination of
17: * upper and lower case into the same hash value).
18: */
19: static int month_map[] = {
20: 0,
21: 6, /* 1 - Jul */
22: 3, /* 2 - Apr */
23: 5, /* 3 - Jun */
24: 0,
25: 10, /* 5 - Nov */
26: 0,
27: 1, /* 7 - Feb */
28: 11, /* 8 - Dec */
29: 0,
30: 0,
31: 0,
32: 0,
33: 0,
34: 0,
35: 0, /*15 - Jan */
36: 0,
37: 0,
38: 0,
39: 2, /*19 - Mar */
40: 0,
41: 8, /*21 - Sep */
42: 0,
43: 9, /*23 - Oct */
44: 0,
45: 0,
46: 4, /*26 - May */
47: 0,
48: 7 /*28 - Aug */
49: };
50: /*
51: * Same trick for day-of-week using the hash function
52: * (c1 & 7) + (c2 & 4)
53: */
54: static int day_map[] = {
55: 0,
56: 0,
57: 0,
58: 6, /* 3 - Sat */
59: 4, /* 4 - Thu */
60: 0,
61: 5, /* 6 - Fri */
62: 0, /* 7 - Sun */
63: 2, /* 8 - Tue */
64: 1 /* 9 - Mon */,
65: 0,
66: 3 /*11 - Wed */
67: };
68: #define SETDAY tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
69: tw.tw_flags |= TW_SEXP;\
70: cp += 2;
71: #define SETMONTH tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
72: cp += 2;\
73: SKIPD;
74: #define CVT2 (i=(*cp++ - '0'),isdigit(*cp)? i*10 + (*cp++ - '0') : i)
75: #define SKIPD while ( !isdigit(*cp++) ) ; --cp;
76: #define ZONE(x) tw.tw_zone=(x);
77: #define ZONED(x) tw.tw_zone=(x); tw.tw_flags |= TW_DST;
78: #define LC(c) (isupper(c) ? tolower(c) : (c))
79: struct tws *dparsetime (str)
80: char *str;
81: {
82: register int i;
83: static struct tws tw;
84: register char *cp;
85: register int gotdate = 0;
86:
87: start_cond = 0;
88: bzero( (char *) &tw, sizeof tw);
89: while (isspace(*str))
90: str++;
91: while ( 1 )
92: switch (cp = str, *cp? lex_string( &str, start_cond) : 0) {
93:
94: case -1:
95: if (!gotdate || tw.tw_year == 0)
96: return 0;
97: /* fall through */
98: case 0:
99: return &tw;
100:
101: case 1:
102: SETDAY;
103: break;
104: case 2:
105: cp++, SETDAY;
106: break;
107: case 3:
108: {
109: tw.tw_mday = CVT2; cp++;
110: tw.tw_mon = CVT2 - 1; cp += 3;
111: tw.tw_year = CVT2;
112: gotdate++;
113: }
114: break;
115: case 4:
116: {
117: tw.tw_mday = CVT2; cp++;
118: tw.tw_mon = CVT2 - 1; cp++;
119: tw.tw_year = CVT2;
120: gotdate++;
121: }
122: break;
123: case 5:
124: {
125: tw.tw_mday = CVT2;
126: while ( !isalpha(*cp++) )
127: ;
128: SETMONTH;
129: for (i = 0; isdigit(*cp); )
130: i = i*10 + (*cp++ - '0');
131: tw.tw_year = i % 100;
132: }
133: break;
134: case 6:
135: {
136: cp++;
137: SETMONTH;
138: tw.tw_mday = CVT2;
139: SKIPD;
140: for (i = 0; isdigit(*cp); )
141: i = i*10 + (*cp++ - '0');
142: tw.tw_year = i % 100;
143: }
144: break;
145: case 7:
146: {
147: cp++;
148: SETMONTH;
149: tw.tw_mday = CVT2;
150: }
151: break;
152: case 8:
153: {
154: tw.tw_hour = CVT2; cp++;
155: tw.tw_min = CVT2; cp++;
156: tw.tw_sec = CVT2;
157: BEGIN Z;
158: }
159: break;
160: case 9:
161: case 10:
162: {
163: tw.tw_hour = CVT2; cp++;
164: tw.tw_min = CVT2;
165: BEGIN Z;
166: }
167: break;
168: case 11:
169: {
170: tw.tw_hour = CVT2 + 12; cp++;
171: tw.tw_min = CVT2;
172: BEGIN Z;
173: }
174: break;
175: case 12:
176: {
177: tw.tw_hour = CVT2;
178: tw.tw_min = CVT2;
179: tw.tw_sec = CVT2;
180: BEGIN Z;
181: }
182: break;
183: case 13:
184: {
185: tw.tw_hour = CVT2;
186: tw.tw_min = CVT2;
187: BEGIN Z;
188: }
189: break;
190: case 14:
191: ZONE(0 * 60);
192: break;
193: case 15:
194: ZONE(0 * 60);
195: break;
196: case 16:
197: ZONE(2 * 60);
198: break;
199: case 17:
200: ZONED(2 * 60);
201: break;
202: case 18:
203: ZONE(-5 * 60);
204: break;
205: case 19:
206: ZONED(-5 * 60);
207: break;
208: case 20:
209: ZONE(-6 * 60);
210: break;
211: case 21:
212: ZONED(-6 * 60);
213: break;
214: case 22:
215: ZONE(-7 * 60);
216: break;
217: case 23:
218: ZONED(-7 * 60);
219: break;
220: case 24:
221: ZONE(-8 * 60);
222: break;
223: case 25:
224: ZONED(-8 * 60);
225: break;
226: case 26:
227: ZONE(-(3 * 60 + 30));
228: break;
229: case 27:
230: ZONE(-4 * 60);
231: break;
232: case 28:
233: ZONED(-4 * 60);
234: break;
235: case 29:
236: ZONE(-9 * 60);
237: break;
238: case 30:
239: ZONED(-9 * 60);
240: break;
241: case 31:
242: ZONE(-10 * 60);
243: break;
244: case 32:
245: ZONED(-10 * 60);
246: break;
247: case 33:
248: ZONED(-1 * 60);
249: break;
250: case 34:
251: tw.tw_zone = 60 * (('a'-1) - LC(*cp));
252: break;
253: case 35:
254: tw.tw_zone = 60 * ('a' - LC(*cp));
255: break;
256: case 36:
257: tw.tw_zone = 60 * (LC(*cp) - 'm');
258: break;
259: case 37:
260: {
261: cp++;
262: tw.tw_zone = ((cp[0] * 10 + cp[1])
263: -('0' * 10 + '0'))*60
264: +((cp[2] * 10 + cp[3])
265: -('0' * 10 + '0'));
266: cp += 4;
267: }
268: break;
269: case 38:
270: {
271: cp++;
272: tw.tw_zone = (('0' * 10 + '0')
273: -(cp[0] * 10 + cp[1]))*60
274: +(('0' * 10 + '0')
275: -(cp[2] * 10 + cp[3]));
276: cp += 4;
277: }
278: break;
279: case 39:
280: {
281: while( !isdigit(*cp++) )
282: ;
283: cp++;
284: tw.tw_year = CVT2;
285: }
286: break;
287: case 40:
288: case 41:
289: ;
290: break;
291: default: return(0);
292: } return(0); }
293: /* end of yylex */
294: int yyvstop[] ={
295: 0,
296:
297: 41,
298: 0,
299:
300: 40,
301: 0,
302:
303: 41,
304: 0,
305:
306: 34,
307: 0,
308:
309: 34,
310: 0,
311:
312: 34,
313: 0,
314:
315: 34,
316: 0,
317:
318: 34,
319: 0,
320:
321: 34,
322: 0,
323:
324: 34,
325: 0,
326:
327: 34,
328: 0,
329:
330: 34,
331: 0,
332:
333: 35,
334: 0,
335:
336: 35,
337: 0,
338:
339: 36,
340: 0,
341:
342: 36,
343: 0,
344:
345: 36,
346: 0,
347:
348: 36,
349: 0,
350:
351: 36,
352: 0,
353:
354: 36,
355: 0,
356:
357: 36,
358: 0,
359:
360: 36,
361: 0,
362:
363: 36,
364: 0,
365:
366: 14,
367: 0,
368:
369: 9,
370: 0,
371:
372: 1,
373: 0,
374:
375: 1,
376: 0,
377:
378: 1,
379: 0,
380:
381: 1,
382: 0,
383:
384: 1,
385: 0,
386:
387: 1,
388: 0,
389:
390: 1,
391: 0,
392:
393: 28,
394: 0,
395:
396: 27,
397: 0,
398:
399: 33,
400: 0,
401:
402: 21,
403: 0,
404:
405: 20,
406: 0,
407:
408: 19,
409: 0,
410:
411: 18,
412: 0,
413:
414: 15,
415: 0,
416:
417: 32,
418: 0,
419:
420: 31,
421: 0,
422:
423: 17,
424: 0,
425:
426: 16,
427: 0,
428:
429: 23,
430: 0,
431:
432: 22,
433: 0,
434:
435: 26,
436: 0,
437:
438: 25,
439: 0,
440:
441: 24,
442: 0,
443:
444: 30,
445: 0,
446:
447: 29,
448: 0,
449:
450: 13,
451: 0,
452:
453: 9,
454: 0,
455:
456: 9,
457: 0,
458:
459: 1,
460: 0,
461:
462: 2,
463: 0,
464:
465: 13,
466: 0,
467:
468: 8,
469: 0,
470:
471: 10,
472: 0,
473:
474: 11,
475: 0,
476:
477: 5,
478: 0,
479:
480: 5,
481: 0,
482:
483: 7,
484: 0,
485:
486: 39,
487: 0,
488:
489: 37,
490: 0,
491:
492: 38,
493: 0,
494:
495: 2,
496: 0,
497:
498: 4,
499: 0,
500:
501: 4,
502: 0,
503:
504: 12,
505: 0,
506:
507: 8,
508: 0,
509:
510: 5,
511: 0,
512:
513: 5,
514: 0,
515:
516: 7,
517: 0,
518:
519: 7,
520: 0,
521:
522: 1,
523: 0,
524:
525: 3,
526: 0,
527:
528: 5,
529: 0,
530:
531: 6,
532: 0,
533:
534: 6,
535: 0,
536:
537: 6,
538: 0,
539:
540: 6,
541: 0,
542: 0};
543: # define YYTYPE int
544: struct yywork { YYTYPE verify, advance; } yycrank[] ={
545: 0,0, 0,0, 0,0, 0,0,
546: 0,0, 0,0, 0,0, 0,0,
547: 0,0, 0,0, 1,5, 1,6,
548: 0,0, 0,0, 0,0, 0,0,
549: 0,0, 0,0, 0,0, 0,0,
550: 0,0, 0,0, 0,0, 0,0,
551: 0,0, 0,0, 0,0, 0,0,
552: 0,0, 0,0, 0,0, 0,0,
553: 0,0, 1,5, 0,0, 0,0,
554: 3,20, 3,6, 5,5, 0,0,
555: 0,0, 1,7, 0,0, 0,0,
556: 0,0, 0,0, 0,0, 0,0,
557: 0,0, 1,8, 1,8, 1,8,
558: 1,9, 1,9, 1,9, 1,9,
559: 1,9, 1,9, 1,9, 3,20,
560: 0,0, 5,5, 0,0, 0,0,
561: 0,0, 0,0, 0,0, 3,7,
562: 0,0, 0,0, 3,21, 0,0,
563: 3,22, 20,20, 0,0, 3,8,
564: 3,8, 3,8, 3,9, 3,9,
565: 3,9, 3,9, 3,9, 3,9,
566: 3,9, 9,61, 9,61, 9,61,
567: 9,61, 9,61, 9,61, 9,61,
568: 9,61, 9,61, 9,61, 0,0,
569: 20,20, 0,0, 1,10, 21,80,
570: 21,80, 1,11, 0,0, 1,12,
571: 0,0, 0,0, 0,0, 1,13,
572: 0,0, 0,0, 1,14, 1,15,
573: 1,16, 20,79, 0,0, 0,0,
574: 1,17, 1,18, 0,0, 0,0,
575: 1,19, 0,0, 0,0, 0,0,
576: 3,23, 3,24, 3,25, 3,26,
577: 3,27, 3,28, 3,29, 3,30,
578: 3,31, 3,32, 3,33, 3,33,
579: 3,34, 3,35, 3,36, 3,37,
580: 3,38, 3,38, 3,39, 3,40,
581: 3,41, 3,38, 3,42, 3,38,
582: 3,43, 7,44, 10,62, 11,64,
583: 8,49, 15,71, 16,72, 10,63,
584: 7,45, 19,78, 24,96, 29,101,
585: 13,67, 41,111, 7,46, 7,47,
586: 44,114, 8,49, 7,48, 8,50,
587: 8,51, 8,51, 8,51, 8,51,
588: 8,51, 8,51, 8,51, 8,51,
589: 8,51, 8,51, 8,52, 12,65,
590: 13,68, 14,69, 17,73, 18,76,
591: 25,97, 27,99, 17,74, 22,81,
592: 22,81, 23,94, 30,102, 32,67,
593: 12,66, 35,71, 32,104, 14,70,
594: 18,77, 35,108, 37,109, 25,98,
595: 27,100, 23,62, 17,75, 43,112,
596: 23,95, 30,103, 23,63, 34,69,
597: 45,115, 32,105, 34,106, 32,68,
598: 46,116, 37,110, 47,118, 48,120,
599: 54,126, 8,53, 43,113, 53,124,
600: 8,54, 34,70, 8,55, 55,127,
601: 53,125, 34,107, 8,56, 47,119,
602: 57,130, 8,57, 8,58, 8,59,
603: 46,117, 58,131, 59,132, 8,60,
604: 22,82, 22,83, 22,84, 60,133,
605: 22,85, 49,53, 22,86, 22,87,
606: 49,54, 22,88, 49,55, 62,134,
607: 22,89, 22,90, 49,56, 22,91,
608: 63,135, 49,57, 49,58, 49,59,
609: 22,92, 64,136, 65,137, 49,60,
610: 22,93, 50,121, 50,121, 50,121,
611: 50,121, 50,121, 50,121, 50,121,
612: 50,121, 50,121, 50,121, 51,122,
613: 51,122, 51,122, 51,122, 51,122,
614: 51,122, 51,122, 51,122, 51,122,
615: 51,122, 52,123, 52,123, 52,123,
616: 52,123, 52,123, 52,123, 52,123,
617: 52,123, 52,123, 52,123, 56,128,
618: 61,49, 66,138, 67,139, 68,140,
619: 69,142, 68,141, 70,144, 71,145,
620: 72,146, 73,147, 74,148, 69,143,
621: 75,149, 61,49, 76,150, 61,50,
622: 77,151, 78,152, 79,153, 56,129,
623: 90,108, 94,156, 95,157, 96,158,
624: 97,159, 98,160, 61,52, 80,154,
625: 80,154, 80,154, 80,154, 80,154,
626: 80,154, 80,154, 80,154, 80,154,
627: 80,154, 81,155, 81,155, 81,155,
628: 81,155, 81,155, 81,155, 81,155,
629: 81,155, 81,155, 81,155, 82,94,
630: 88,104, 89,106, 99,161, 100,162,
631: 101,163, 102,164, 103,165, 104,166,
632: 105,167, 106,168, 107,169, 108,170,
633: 109,171, 110,172, 82,95, 88,105,
634: 89,107, 112,173, 113,174, 114,175,
635: 115,176, 116,177, 117,178, 118,179,
636: 119,180, 120,181, 121,182, 121,183,
637: 121,183, 121,183, 121,183, 121,183,
638: 121,183, 121,183, 121,183, 121,183,
639: 121,183, 122,184, 122,184, 122,184,
640: 122,184, 122,184, 122,184, 122,184,
641: 122,184, 122,184, 122,184, 123,185,
642: 124,190, 125,191, 126,192, 127,193,
643: 128,194, 129,195, 130,197, 129,196,
644: 131,199, 132,200, 133,201, 134,202,
645: 135,202, 130,198, 136,205, 141,143,
646: 144,211, 145,212, 146,213, 148,215,
647: 149,216, 176,225, 123,185, 175,223,
648: 177,223, 178,227, 137,202, 138,207,
649: 139,202, 140,202, 142,202, 143,202,
650: 147,207, 150,207, 134,202, 135,202,
651: 151,207, 181,223, 123,186, 123,186,
652: 123,186, 123,186, 123,186, 123,186,
653: 123,186, 123,186, 123,186, 123,186,
654: 123,187, 137,202, 138,207, 139,202,
655: 140,202, 142,202, 143,202, 147,207,
656: 150,207, 152,207, 180,223, 151,207,
657: 179,223, 183,182, 138,207, 153,220,
658: 153,220, 153,220, 153,220, 147,207,
659: 150,207, 186,187, 188,236, 151,207,
660: 189,237, 192,243, 196,198, 199,247,
661: 200,248, 201,249, 203,143, 204,251,
662: 152,207, 205,252, 175,224, 206,253,
663: 208,254, 209,255, 210,143, 123,188,
664: 211,256, 212,257, 213,258, 214,259,
665: 152,207, 215,260, 216,261, 217,262,
666: 185,185, 218,263, 219,264, 223,268,
667: 177,226, 224,269, 123,189, 225,270,
668: 135,204, 226,271, 181,230, 134,203,
669: 154,221, 154,221, 154,221, 154,221,
670: 154,221, 154,221, 154,221, 154,221,
671: 154,221, 154,221, 138,208, 185,185,
672: 142,210, 155,222, 155,222, 155,222,
673: 155,222, 155,222, 155,222, 155,222,
674: 155,222, 155,222, 155,222, 137,206,
675: 180,229, 179,228, 184,233, 227,272,
676: 139,209, 228,273, 150,217, 229,274,
677: 147,214, 140,143, 151,218, 182,231,
678: 182,232, 182,231, 182,231, 182,231,
679: 182,231, 182,231, 182,231, 182,231,
680: 182,231, 230,275, 232,277, 240,282,
681: 241,198, 184,233, 152,219, 187,235,
682: 187,235, 187,235, 187,235, 187,235,
683: 187,235, 187,235, 187,235, 187,235,
684: 187,235, 242,283, 190,238, 243,284,
685: 244,285, 184,234, 184,234, 184,234,
686: 184,234, 184,234, 184,234, 184,234,
687: 184,234, 184,234, 184,234, 190,238,
688: 185,188, 191,238, 190,239, 190,240,
689: 190,239, 190,239, 190,239, 190,239,
690: 190,239, 190,239, 190,239, 190,239,
691: 245,286, 246,198, 191,238, 185,189,
692: 193,238, 191,239, 191,240, 191,239,
693: 191,239, 191,239, 191,239, 191,239,
694: 191,239, 191,239, 191,239, 247,287,
695: 248,288, 193,238, 194,238, 249,289,
696: 193,239, 193,240, 193,239, 193,239,
697: 193,239, 193,239, 193,239, 193,239,
698: 193,239, 193,239, 251,143, 194,238,
699: 195,238, 252,293, 194,239, 194,240,
700: 194,239, 194,239, 194,239, 194,239,
701: 194,239, 194,239, 194,239, 194,239,
702: 253,294, 195,238, 197,238, 190,241,
703: 195,239, 195,240, 195,239, 195,239,
704: 195,239, 195,239, 195,239, 195,239,
705: 195,239, 195,239, 191,242, 197,238,
706: 198,238, 254,295, 197,239, 197,240,
707: 197,239, 197,239, 197,239, 197,239,
708: 197,239, 197,239, 197,239, 197,239,
709: 207,207, 198,238, 233,233, 236,236,
710: 198,239, 198,240, 198,239, 198,239,
711: 198,239, 198,239, 198,239, 198,239,
712: 198,239, 198,239, 193,244, 202,202,
713: 237,237, 255,296, 257,297, 258,298,
714: 259,299, 260,300, 262,301, 207,207,
715: 263,302, 233,233, 236,236, 264,303,
716: 269,304, 271,305, 273,306, 194,245,
717: 274,307, 275,308, 281,310, 283,198,
718: 284,311, 285,312, 202,202, 237,237,
719: 286,313, 197,246, 287,314, 288,315,
720: 289,316, 292,291, 293,318, 294,319,
721: 295,207, 195,198, 296,143, 297,320,
722: 298,143, 299,321, 202,250, 202,250,
723: 202,250, 202,250, 202,250, 202,250,
724: 202,250, 202,250, 202,250, 202,250,
725: 220,265, 220,265, 220,265, 220,265,
726: 220,265, 220,265, 220,265, 220,265,
727: 220,265, 220,265, 221,266, 221,266,
728: 221,266, 221,266, 221,266, 221,266,
729: 221,266, 221,266, 221,266, 221,266,
730: 222,267, 222,267, 222,267, 222,267,
731: 222,267, 222,267, 222,267, 222,267,
732: 222,267, 222,267, 231,276, 231,276,
733: 231,276, 231,276, 231,276, 231,276,
734: 231,276, 231,276, 231,276, 231,276,
735: 234,278, 234,278, 234,278, 234,278,
736: 234,278, 234,278, 234,278, 234,278,
737: 234,278, 234,278, 235,279, 238,239,
738: 238,240, 238,239, 238,239, 238,239,
739: 238,239, 238,239, 238,239, 238,239,
740: 238,239, 239,280, 276,276, 278,278,
741: 300,322, 279,279, 301,323, 303,324,
742: 304,223, 305,325, 306,326, 308,327,
743: 311,330, 235,279, 312,331, 313,198,
744: 250,290, 314,332, 315,198, 316,333,
745: 322,336, 324,337, 327,338, 333,339,
746: 239,280, 276,276, 278,278, 277,276,
747: 279,279, 235,279, 235,279, 235,279,
748: 235,279, 235,279, 235,279, 235,279,
749: 235,279, 235,279, 235,279, 250,290,
750: 239,280, 239,280, 239,280, 239,280,
751: 239,280, 239,280, 239,280, 239,280,
752: 239,280, 239,280, 277,276, 250,291,
753: 335,341, 280,280, 282,280, 250,292,
754: 250,292, 250,292, 250,292, 250,292,
755: 250,292, 250,292, 250,292, 250,292,
756: 250,292, 290,290, 277,309, 277,309,
757: 277,309, 277,309, 277,309, 277,309,
758: 277,309, 277,309, 277,309, 277,309,
759: 280,280, 282,280, 291,317, 0,0,
760: 0,0, 0,0, 0,0, 0,0,
761: 0,0, 0,0, 0,0, 0,0,
762: 290,290, 239,281, 310,329, 317,317,
763: 328,328, 340,340, 282,239, 0,0,
764: 0,0, 0,0, 0,0, 0,0,
765: 0,0, 291,317, 309,328, 309,328,
766: 309,328, 309,328, 309,328, 309,328,
767: 309,328, 309,328, 309,328, 309,328,
768: 0,0, 310,329, 317,317, 328,328,
769: 340,340, 334,340, 0,0, 0,0,
770: 0,0, 0,0, 0,0, 0,0,
771: 0,0, 0,0, 341,340, 0,0,
772: 0,0, 0,0, 317,334, 317,335,
773: 317,334, 317,334, 317,334, 317,334,
774: 317,334, 317,334, 317,334, 317,334,
775: 334,340, 280,281, 282,281, 0,0,
776: 0,0, 0,0, 0,0, 0,0,
777: 0,0, 341,340, 0,0, 0,0,
778: 0,0, 0,0, 0,0, 0,0,
779: 334,340, 334,340, 334,340, 334,340,
780: 334,340, 334,340, 334,340, 334,340,
781: 334,340, 334,340, 341,334, 0,0,
782: 0,0};
783: struct yysvf yysvec[] ={
784: 0, 0, 0,
785: yycrank+1, 0, 0,
786: yycrank+0, yysvec+1, 0,
787: yycrank+27, 0, 0,
788: yycrank+0, yysvec+3, 0,
789: yycrank+29, 0, yyvstop+1,
790: yycrank+0, 0, yyvstop+3,
791: yycrank+47, 0, 0,
792: yycrank+120, 0, 0,
793: yycrank+37, yysvec+8, 0,
794: yycrank+38, 0, 0,
795: yycrank+50, 0, 0,
796: yycrank+78, 0, 0,
797: yycrank+63, 0, 0,
798: yycrank+84, 0, 0,
799: yycrank+42, 0, 0,
800: yycrank+55, 0, 0,
801: yycrank+85, 0, 0,
802: yycrank+79, 0, 0,
803: yycrank+56, 0, 0,
804: yycrank+64, 0, yyvstop+5,
805: yycrank+51, 0, 0,
806: yycrank+139, 0, 0,
807: yycrank+89, 0, yyvstop+7,
808: yycrank+43, 0, yyvstop+9,
809: yycrank+84, 0, yyvstop+11,
810: yycrank+0, yysvec+11, yyvstop+13,
811: yycrank+85, 0, yyvstop+15,
812: yycrank+0, yysvec+12, yyvstop+17,
813: yycrank+50, 0, yyvstop+19,
814: yycrank+90, 0, yyvstop+21,
815: yycrank+0, 0, yyvstop+23,
816: yycrank+94, 0, 0,
817: yycrank+0, 0, yyvstop+25,
818: yycrank+110, 0, yyvstop+27,
819: yycrank+82, 0, yyvstop+29,
820: yycrank+0, yysvec+16, yyvstop+31,
821: yycrank+98, 0, yyvstop+33,
822: yycrank+0, 0, yyvstop+35,
823: yycrank+0, yysvec+17, yyvstop+37,
824: yycrank+0, yysvec+18, yyvstop+39,
825: yycrank+45, 0, yyvstop+41,
826: yycrank+0, yysvec+19, yyvstop+43,
827: yycrank+103, 0, yyvstop+45,
828: yycrank+50, 0, 0,
829: yycrank+97, 0, 0,
830: yycrank+115, 0, 0,
831: yycrank+110, 0, 0,
832: yycrank+114, 0, 0,
833: yycrank+144, 0, 0,
834: yycrank+213, 0, 0,
835: yycrank+223, yysvec+8, 0,
836: yycrank+233, 0, 0,
837: yycrank+107, 0, 0,
838: yycrank+115, 0, 0,
839: yycrank+122, 0, 0,
840: yycrank+194, 0, 0,
841: yycrank+131, 0, 0,
842: yycrank+122, 0, 0,
843: yycrank+135, 0, 0,
844: yycrank+138, 0, 0,
845: yycrank+260, yysvec+49, 0,
846: yycrank+133, 0, 0,
847: yycrank+149, 0, 0,
848: yycrank+158, 0, 0,
849: yycrank+160, 0, 0,
850: yycrank+188, 0, 0,
851: yycrank+184, 0, 0,
852: yycrank+187, 0, 0,
853: yycrank+182, 0, 0,
854: yycrank+188, 0, 0,
855: yycrank+181, 0, 0,
856: yycrank+184, 0, 0,
857: yycrank+185, 0, 0,
858: yycrank+190, 0, 0,
859: yycrank+194, 0, 0,
860: yycrank+189, 0, 0,
861: yycrank+207, 0, 0,
862: yycrank+209, 0, 0,
863: yycrank+253, 0, 0,
864: yycrank+271, 0, 0,
865: yycrank+281, 0, 0,
866: yycrank+239, 0, 0,
867: yycrank+0, yysvec+24, 0,
868: yycrank+0, yysvec+25, 0,
869: yycrank+0, yysvec+27, 0,
870: yycrank+0, yysvec+29, 0,
871: yycrank+0, yysvec+30, 0,
872: yycrank+240, 0, 0,
873: yycrank+241, 0, 0,
874: yycrank+197, 0, 0,
875: yycrank+0, yysvec+37, 0,
876: yycrank+0, yysvec+41, 0,
877: yycrank+0, yysvec+43, 0,
878: yycrank+197, 0, 0,
879: yycrank+198, 0, 0,
880: yycrank+199, 0, 0,
881: yycrank+200, 0, 0,
882: yycrank+201, 0, 0,
883: yycrank+226, 0, 0,
884: yycrank+227, 0, 0,
885: yycrank+228, 0, 0,
886: yycrank+229, 0, 0,
887: yycrank+230, 0, 0,
888: yycrank+231, 0, 0,
889: yycrank+232, 0, 0,
890: yycrank+233, 0, 0,
891: yycrank+234, 0, 0,
892: yycrank+235, 0, 0,
893: yycrank+236, 0, 0,
894: yycrank+237, 0, 0,
895: yycrank+0, 0, yyvstop+47,
896: yycrank+241, 0, 0,
897: yycrank+242, 0, 0,
898: yycrank+254, 0, 0,
899: yycrank+250, 0, 0,
900: yycrank+245, 0, 0,
901: yycrank+252, 0, 0,
902: yycrank+246, 0, 0,
903: yycrank+263, 0, 0,
904: yycrank+265, 0, 0,
905: yycrank+319, 0, 0,
906: yycrank+329, 0, 0,
907: yycrank+378, 0, yyvstop+49,
908: yycrank+274, 0, 0,
909: yycrank+286, 0, 0,
910: yycrank+291, 0, 0,
911: yycrank+293, 0, 0,
912: yycrank+282, 0, 0,
913: yycrank+285, 0, 0,
914: yycrank+280, 0, 0,
915: yycrank+278, 0, 0,
916: yycrank+281, 0, 0,
917: yycrank+286, 0, 0,
918: yycrank+390, 0, 0,
919: yycrank+391, 0, 0,
920: yycrank+301, yysvec+135, 0,
921: yycrank+405, 0, 0,
922: yycrank+406, 0, yyvstop+51,
923: yycrank+407, 0, 0,
924: yycrank+408, 0, 0,
925: yycrank+302, yysvec+135, 0,
926: yycrank+409, 0, 0,
927: yycrank+410, 0, 0,
928: yycrank+304, yysvec+138, yyvstop+53,
929: yycrank+304, yysvec+135, 0,
930: yycrank+295, yysvec+143, 0,
931: yycrank+411, 0, yyvstop+55,
932: yycrank+291, yysvec+143, 0,
933: yycrank+308, yysvec+138, yyvstop+57,
934: yycrank+412, 0, yyvstop+59,
935: yycrank+415, 0, yyvstop+61,
936: yycrank+436, 0, yyvstop+63,
937: yycrank+397, 0, 0,
938: yycrank+448, 0, 0,
939: yycrank+461, 0, 0,
940: yycrank+0, 0, yyvstop+65,
941: yycrank+0, 0, yyvstop+67,
942: yycrank+0, 0, yyvstop+69,
943: yycrank+0, 0, yyvstop+71,
944: yycrank+0, 0, yyvstop+73,
945: yycrank+0, 0, yyvstop+75,
946: yycrank+0, 0, yyvstop+77,
947: yycrank+0, 0, yyvstop+79,
948: yycrank+0, 0, yyvstop+81,
949: yycrank+0, 0, yyvstop+83,
950: yycrank+0, 0, yyvstop+85,
951: yycrank+0, 0, yyvstop+87,
952: yycrank+0, 0, yyvstop+89,
953: yycrank+0, 0, yyvstop+91,
954: yycrank+0, 0, yyvstop+93,
955: yycrank+0, 0, yyvstop+95,
956: yycrank+0, 0, yyvstop+97,
957: yycrank+0, 0, yyvstop+99,
958: yycrank+0, 0, yyvstop+101,
959: yycrank+370, 0, 0,
960: yycrank+309, yysvec+175, 0,
961: yycrank+371, 0, 0,
962: yycrank+313, yysvec+175, 0,
963: yycrank+407, 0, 0,
964: yycrank+405, 0, 0,
965: yycrank+384, 0, 0,
966: yycrank+483, 0, 0,
967: yycrank+402, 0, 0,
968: yycrank+513, 0, yyvstop+103,
969: yycrank+475, 0, yyvstop+105,
970: yycrank+399, yysvec+185, yyvstop+107,
971: yycrank+499, 0, 0,
972: yycrank+349, 0, 0,
973: yycrank+351, 0, 0,
974: yycrank+526, 0, 0,
975: yycrank+541, 0, 0,
976: yycrank+360, yysvec+191, 0,
977: yycrank+556, 0, 0,
978: yycrank+570, 0, 0,
979: yycrank+584, 0, 0,
980: yycrank+361, yysvec+191, 0,
981: yycrank+598, 0, 0,
982: yycrank+612, 0, 0,
983: yycrank+362, yysvec+191, 0,
984: yycrank+353, yysvec+198, 0,
985: yycrank+349, yysvec+198, 0,
986: yycrank+662, 0, 0,
987: yycrank+358, 0, 0,
988: yycrank+352, 0, 0,
989: yycrank+360, 0, 0,
990: yycrank+354, 0, 0,
991: yycrank+647, 0, yyvstop+109,
992: yycrank+375, 0, 0,
993: yycrank+376, 0, 0,
994: yycrank+370, 0, 0,
995: yycrank+379, 0, 0,
996: yycrank+368, 0, 0,
997: yycrank+380, 0, 0,
998: yycrank+365, 0, 0,
999: yycrank+380, 0, 0,
1000: yycrank+385, 0, 0,
1001: yycrank+368, 0, 0,
1002: yycrank+385, 0, 0,
1003: yycrank+385, 0, 0,
1004: yycrank+672, 0, 0,
1005: yycrank+682, 0, 0,
1006: yycrank+692, 0, 0,
1007: yycrank+443, 0, yyvstop+111,
1008: yycrank+392, 0, 0,
1009: yycrank+394, 0, 0,
1010: yycrank+379, 0, 0,
1011: yycrank+426, 0, 0,
1012: yycrank+410, 0, 0,
1013: yycrank+427, 0, 0,
1014: yycrank+440, 0, 0,
1015: yycrank+702, 0, 0,
1016: yycrank+485, yysvec+231, 0,
1017: yycrank+649, 0, yyvstop+113,
1018: yycrank+712, 0, 0,
1019: yycrank+761, 0, yyvstop+115,
1020: yycrank+650, 0, yyvstop+117,
1021: yycrank+663, 0, yyvstop+119,
1022: yycrank+723, 0, 0,
1023: yycrank+772, 0, yyvstop+121,
1024: yycrank+486, yysvec+239, yyvstop+123,
1025: yycrank+436, 0, 0,
1026: yycrank+442, 0, 0,
1027: yycrank+450, 0, 0,
1028: yycrank+443, 0, 0,
1029: yycrank+487, 0, 0,
1030: yycrank+481, 0, 0,
1031: yycrank+490, 0, 0,
1032: yycrank+502, 0, 0,
1033: yycrank+502, 0, 0,
1034: yycrank+787, 0, yyvstop+125,
1035: yycrank+498, 0, 0,
1036: yycrank+519, 0, 0,
1037: yycrank+531, 0, 0,
1038: yycrank+524, 0, 0,
1039: yycrank+559, 0, 0,
1040: yycrank+0, yysvec+254, 0,
1041: yycrank+576, 0, 0,
1042: yycrank+574, 0, 0,
1043: yycrank+576, 0, 0,
1044: yycrank+568, 0, 0,
1045: yycrank+0, yysvec+254, 0,
1046: yycrank+578, 0, 0,
1047: yycrank+583, 0, 0,
1048: yycrank+568, 0, 0,
1049: yycrank+0, 0, yyvstop+127,
1050: yycrank+0, 0, yyvstop+129,
1051: yycrank+0, 0, yyvstop+131,
1052: yycrank+0, 0, yyvstop+133,
1053: yycrank+563, 0, 0,
1054: yycrank+0, yysvec+269, 0,
1055: yycrank+585, 0, 0,
1056: yycrank+0, yysvec+269, 0,
1057: yycrank+586, 0, 0,
1058: yycrank+591, 0, 0,
1059: yycrank+574, 0, 0,
1060: yycrank+773, 0, yyvstop+135,
1061: yycrank+798, 0, yyvstop+137,
1062: yycrank+774, 0, yyvstop+139,
1063: yycrank+776, 0, yyvstop+141,
1064: yycrank+824, 0, yyvstop+143,
1065: yycrank+574, 0, 0,
1066: yycrank+825, yysvec+238, yyvstop+145,
1067: yycrank+575, 0, 0,
1068: yycrank+594, 0, 0,
1069: yycrank+596, 0, 0,
1070: yycrank+582, 0, 0,
1071: yycrank+600, 0, 0,
1072: yycrank+598, 0, 0,
1073: yycrank+591, 0, 0,
1074: yycrank+836, 0, yyvstop+147,
1075: yycrank+849, 0, 0,
1076: yycrank+657, yysvec+290, yyvstop+149,
1077: yycrank+601, 0, 0,
1078: yycrank+589, 0, 0,
1079: yycrank+660, yysvec+207, yyvstop+151,
1080: yycrank+585, 0, 0,
1081: yycrank+606, 0, 0,
1082: yycrank+594, 0, 0,
1083: yycrank+612, 0, 0,
1084: yycrank+686, 0, 0,
1085: yycrank+689, 0, 0,
1086: yycrank+0, yysvec+254, 0,
1087: yycrank+687, 0, 0,
1088: yycrank+747, 0, 0,
1089: yycrank+692, 0, 0,
1090: yycrank+693, 0, 0,
1091: yycrank+0, yysvec+269, 0,
1092: yycrank+691, 0, 0,
1093: yycrank+834, 0, 0,
1094: yycrank+861, 0, 0,
1095: yycrank+691, 0, 0,
1096: yycrank+680, 0, 0,
1097: yycrank+674, 0, 0,
1098: yycrank+696, 0, 0,
1099: yycrank+684, 0, 0,
1100: yycrank+701, 0, 0,
1101: yycrank+862, 0, 0,
1102: yycrank+0, yysvec+298, 0,
1103: yycrank+0, yysvec+296, 0,
1104: yycrank+0, yysvec+298, 0,
1105: yycrank+0, yysvec+254, 0,
1106: yycrank+699, 0, 0,
1107: yycrank+0, yysvec+254, 0,
1108: yycrank+704, 0, 0,
1109: yycrank+0, yysvec+269, 0,
1110: yycrank+0, yysvec+269, 0,
1111: yycrank+705, 0, 0,
1112: yycrank+863, 0, yyvstop+153,
1113: yycrank+0, yysvec+310, yyvstop+155,
1114: yycrank+0, yysvec+315, 0,
1115: yycrank+0, yysvec+313, 0,
1116: yycrank+0, yysvec+315, 0,
1117: yycrank+702, 0, 0,
1118: yycrank+888, 0, yyvstop+157,
1119: yycrank+775, yysvec+334, yyvstop+159,
1120: yycrank+0, yysvec+298, 0,
1121: yycrank+0, yysvec+254, 0,
1122: yycrank+0, yysvec+269, 0,
1123: yycrank+0, yysvec+315, 0,
1124: yycrank+864, 0, yyvstop+161,
1125: yycrank+897, yysvec+317, yyvstop+163,
1126: 0, 0, 0};
1127: struct yywork *yytop = yycrank+946;
1128: struct yysvf *yybgin = yysvec+1;
1129: char yymatch[] ={
1130: 00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1131: 01 ,011 ,01 ,01 ,01 ,01 ,01 ,01 ,
1132: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1133: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1134: 040 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1135: 01 ,01 ,01 ,01 ,01 ,'-' ,01 ,01 ,
1136: '0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'6' ,'6' ,
1137: '6' ,'6' ,01 ,01 ,01 ,01 ,01 ,01 ,
1138: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1139: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1140: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1141: 01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1142: 01 ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
1143: 'a' ,'a' ,01 ,'k' ,'k' ,'k' ,'n' ,'n' ,
1144: 'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,
1145: 'n' ,'n' ,01 ,01 ,01 ,01 ,01 ,01 ,
1146: 0};
1147: char [] ={
1148: 0,0,0,0,0,0,0,0,
1149: 0,0,0,0,0,0,0,0,
1150: 0,0,0,0,0,0,0,0,
1151: 0,0,0,0,0,0,0,0,
1152: 0,0,0,0,0,0,0,0,
1153: 0,0,0,0,0,0,0,0,
1154: 0};
1155: /* ncform 4.1 83/08/11 */