BSD 4_4 release
[unix-history] / usr / src / contrib / mh-6.8 / zotnet / tws / dtimep.c-lexed
CommitLineData
ad787160
C
1# include "stdio.h"
2static int start_cond = 0;
3#define BEGIN start_cond =
4struct yysvf {
5 struct yywork *yystoff;
6 struct yysvf *yyother;
7 int *yystops;};
8# define Z 2
9#ifndef lint
10static char ident[] = "@(#)$Id: dtimep.lex,v 1.1 1991/04/26 21:51:10 sww Exp $";
11#endif
12#include "tws.h"
13#include "../h/strings.h"
14#include <ctype.h>
15#include <sys/types.h>
16#if !defined(SYS5) && !defined(ZONEINFO)
17#include <sys/timeb.h>
18#endif /* !defined(SYS5) && !defined(ZONEINFO) */
19
20#ifdef SYS5
21extern long timezone;
22#endif SYS5
23
24/*
25 * Patchable flag that says how to interpret NN/NN/NN dates. When
26 * true, we do it European style: DD/MM/YY. When false, we do it
27 * American style: MM/DD/YY. Of course, these are all non-RFC822
28 * compliant.
29 */
30int europeandate = 0;
31
32/*
33 * Table to convert month names to numeric month. We use the
34 * fact that the low order 5 bits of the sum of the 2nd & 3rd
35 * characters of the name is a hash with no collisions for the 12
36 * valid month names. (The mask to 5 bits maps any combination of
37 * upper and lower case into the same hash value).
38 */
39static int month_map[] = {
40 0,
41 6, /* 1 - Jul */
42 3, /* 2 - Apr */
43 5, /* 3 - Jun */
44 0,
45 10, /* 5 - Nov */
46 0,
47 1, /* 7 - Feb */
48 11, /* 8 - Dec */
49 0,
50 0,
51 0,
52 0,
53 0,
54 0,
55 0, /*15 - Jan */
56 0,
57 0,
58 0,
59 2, /*19 - Mar */
60 0,
61 8, /*21 - Sep */
62 0,
63 9, /*23 - Oct */
64 0,
65 0,
66 4, /*26 - May */
67 0,
68 7 /*28 - Aug */
69};
70/*
71 * Same trick for day-of-week using the hash function
72 * (c1 & 7) + (c2 & 4)
73 */
74static int day_map[] = {
75 0,
76 0,
77 0,
78 6, /* 3 - Sat */
79 4, /* 4 - Thu */
80 0,
81 5, /* 6 - Fri */
82 0, /* 7 - Sun */
83 2, /* 8 - Tue */
84 1 /* 9 - Mon */,
85 0,
86 3 /*11 - Wed */
87};
88#define SETDAY { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
89 tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP;\
90 cp += 2; }
91#define SETMONTH { tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
92 cp += 2;\
93 SKIPD;}
94#define CVT2 (i=(*cp++ - '0'),isdigit(*cp)? i*10 + (*cp++ - '0') : i)
95#define SKIPD { while ( !isdigit(*cp++) ) ; --cp; }
96#define EXPZONE { tw.tw_flags &= ~TW_SZONE; tw.tw_flags |= TW_SZEXP; }
97#define ZONE(x) { tw.tw_zone=(x); EXPZONE; }
98#define ZONED(x) { ZONE(x); tw.tw_flags |= TW_DST; }
99#define LC(c) (isupper (c) ? tolower (c) : (c))
100
101#ifdef DSTXXX
102#ifndef BSD42
103#include <time.h>
104#else BSD42
105#include <sys/time.h>
106#endif BSD42
107
108static zonehack (tw)
109register struct tws *tw;
110{
111 register struct tm *tm;
112
113 if (twclock (tw) == -1L)
114 return;
115
116 tm = localtime (&tw -> tw_clock);
117 if (tm -> tm_isdst) {
118 tw -> tw_flags |= TW_DST;
119 tw -> tw_zone -= 60;
120 }
121}
122#endif DSTXXX
123struct tws *dparsetime (str)
124 char *str;
125{
126 register int i;
127 static struct tws tw;
128 register char *cp;
129 register int gotdate = 0;
130#ifndef SYS5
131#ifdef ZONEINFO
132 struct tm *tm;
133 time_t clock;
134#else
135 struct timeb tb;
136#endif /* ZONEINFO */
137#endif /* not SYS5 */
138
139 start_cond = 0;
140
141 /* Zero out the struct. */
142 bzero( (char *) &tw, sizeof tw);
143
144 /* Set default time zone. */
145#ifdef SYS5
146 tzset( );
147 tw.tw_zone = -(timezone / 60);
148#else
149#ifdef ZONEINFO
150 time (&clock);
151 tm = localtime(&clock);
152 tw.tw_zone = tm->tm_gmtoff / 60;
153 if (tm -> tm_isdst) /* if DST is in effect */
154 tw.tw_zone -= 60; /* reset to normal offset */
155#else
156 ftime( &tb );
157 tw.tw_zone = -tb.timezone;
158#endif /* ZONEINFO */
159#endif /* SYS5 */
160
161 while (isspace(*str))
162 str++;
163 while ( 1 )
164 switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) {
165
166 case -1:
167 if (!gotdate || tw.tw_year == 0)
168 return 0;
169 /* fall through */
170 case 0:
171 return &tw;
172
173case 1:
174 SETDAY;
175break;
176case 2:
177 {
178 cp++;
179 SETDAY;
180 }
181break;
182case 3:
183 {
184 if (europeandate) {
185 /* European: DD/MM/YY */
186 tw.tw_mday = CVT2;
187 cp++;
188 tw.tw_mon = CVT2 - 1;
189 } else {
190 /* American: MM/DD/YY */
191 tw.tw_mon = CVT2 - 1;
192 cp++;
193 tw.tw_mday = CVT2;
194 }
195 cp++;
196 for (i = 0; isdigit(*cp); )
197 i = i*10 + (*cp++ - '0');
198 tw.tw_year = i % 100;
199 }
200break;
201case 4:
202{
203 tw.tw_mday = CVT2;
204 while ( !isalpha(*cp++) )
205 ;
206 SETMONTH;
207 for (i = 0; isdigit(*cp); )
208 i = i*10 + (*cp++ - '0');
209 tw.tw_year = i % 100;
210 }
211break;
212case 5:
213 {
214 cp++;
215 SETMONTH;
216 tw.tw_mday = CVT2;
217 SKIPD;
218 for (i = 0; isdigit(*cp); )
219 i = i*10 + (*cp++ - '0');
220 tw.tw_year = i % 100;
221 }
222break;
223case 6:
224 {
225 cp++;
226 SETMONTH;
227 tw.tw_mday = CVT2;
228 }
229break;
230case 7:
231 { /* hack: ctime w/o TZ */
232 tw.tw_hour = CVT2; cp++;
233 tw.tw_min = CVT2; cp++;
234 tw.tw_sec = CVT2;
235 while( !isdigit(*cp++) )
236 ;
237 cp++;
238 tw.tw_year = CVT2;
239 }
240break;
241case 8:
242 {
243 tw.tw_hour = CVT2; cp++;
244 tw.tw_min = CVT2; cp++;
245 tw.tw_sec = CVT2;
246 BEGIN Z;
247 }
248break;
249case 9:
250 {
251 tw.tw_hour = CVT2; cp++;
252 tw.tw_min = CVT2;
253 BEGIN Z;
254 }
255break;
256case 10:
257 {
258 tw.tw_hour = CVT2; cp++;
259 if (tw.tw_hour == 12)
260 tw.tw_hour = 0;
261 tw.tw_min = CVT2;
262 BEGIN Z;
263 }
264break;
265case 11:
266 {
267 tw.tw_hour = CVT2; cp++;
268 if (tw.tw_hour != 12)
269 tw.tw_hour += 12;
270 tw.tw_min = CVT2;
271 BEGIN Z;
272 }
273break;
274case 12:
275 {
276 tw.tw_hour = CVT2;
277 tw.tw_min = CVT2;
278 tw.tw_sec = CVT2;
279 BEGIN Z;
280 }
281break;
282case 13:
283 {
284 /*
285 * Luckly, 4 digit times in the range
286 * 1960-1999 aren't legal as hour
287 * and minutes.
288 */
289 cp += 2;
290 tw.tw_year = CVT2;
291 }
292break;
293case 14:
294 {
295 if (tw.tw_hour) {
296 cp += 2;
297 tw.tw_year = CVT2;
298 tw.tw_zone = 0;
299 } else {
300 tw.tw_hour = CVT2;
301 tw.tw_min = CVT2;
302 BEGIN Z;
303 }
304 }
305break;
306case 15:
307 ZONE(0 * 60);
308break;
309case 16:
310 ZONE(0 * 60);
311break;
312case 17:
313 ZONE(2 * 60);
314break;
315case 18:
316 ZONED(2 * 60);
317break;
318case 19:
319 ZONE(-5 * 60);
320break;
321case 20:
322 ZONED(-5 * 60);
323break;
324case 21:
325 ZONE(-6 * 60);
326break;
327case 22:
328 ZONED(-6 * 60);
329break;
330case 23:
331 ZONE(-7 * 60);
332break;
333case 24:
334 ZONED(-7 * 60);
335break;
336case 25:
337 ZONE(-8 * 60);
338break;
339case 26:
340 ZONED(-8 * 60);
341break;
342case 27:
343 ZONE(-(3 * 60 + 30));
344break;
345case 28:
346 ZONE(-4 * 60);
347break;
348case 29:
349 ZONED(-4 * 60);
350break;
351case 30:
352 ZONE(-9 * 60);
353break;
354case 31:
355 ZONED(-9 * 60);
356break;
357case 32:
358 ZONE(-10 * 60);
359break;
360case 33:
361 ZONED(-10 * 60);
362break;
363case 34:
364 ZONED(0 * 60);
365break;
366case 35:
367 {
368 tw.tw_zone = 60 * (('a'-1) - LC(*cp));
369 EXPZONE;
370 }
371break;
372case 36:
373 {
374 tw.tw_zone = 60 * ('a' - LC(*cp));
375 EXPZONE;
376 }
377break;
378case 37:
379 {
380 tw.tw_zone = 60 * (LC(*cp) - 'm');
381 EXPZONE;
382 }
383break;
384case 38:
385 {
386 cp++;
387 tw.tw_zone = ((cp[0] * 10 + cp[1])
388 -('0' * 10 + '0'))*60
389 +((cp[2] * 10 + cp[3])
390 -('0' * 10 + '0'));
391 EXPZONE;
392#ifdef DSTXXX
393 zonehack (&tw);
394#endif DSTXXX
395 cp += 4;
396 }
397break;
398case 39:
399 {
400 cp++;
401 tw.tw_zone = (('0' * 10 + '0')
402 -(cp[0] * 10 + cp[1]))*60
403 +(('0' * 10 + '0')
404 -(cp[2] * 10 + cp[3]));
405 EXPZONE;
406#ifdef DSTXXX
407 zonehack (&tw);
408#endif DSTXXX
409 cp += 4;
410 }
411break;
412case 40:
413 {
414 while( !isdigit(*cp++) )
415 ;
416 cp++;
417 tw.tw_year = CVT2;
418 }
419break;
420case 41:
421case 42:
422;
423break;
424default: return(0);
425} }
426/* end of yylex */
427int yyvstop[] ={
4280,
429
43042,
4310,
432
43341,
4340,
435
43642,
4370,
438
43935,
4400,
441
44235,
4430,
444
44535,
4460,
447
44835,
4490,
450
45135,
4520,
453
45435,
4550,
456
45735,
4580,
459
46035,
4610,
462
46335,
4640,
465
46636,
4670,
468
46936,
4700,
471
47237,
4730,
474
47537,
4760,
477
47837,
4790,
480
48137,
4820,
483
48437,
4850,
486
48737,
4880,
489
49037,
4910,
492
49337,
4940,
495
49637,
4970,
498
49915,
5000,
501
5029,
5030,
504
5051,
5060,
507
5081,
5090,
510
5111,
5120,
513
5141,
5150,
516
5171,
5180,
519
5201,
5210,
522
5231,
5240,
525
52629,
5270,
528
52928,
5300,
531
53234,
5330,
534
53522,
5360,
537
53821,
5390,
540
54120,
5420,
543
54419,
5450,
546
54716,
5480,
549
55033,
5510,
552
55332,
5540,
555
55618,
5570,
558
55917,
5600,
561
56224,
5630,
564
56523,
5660,
567
56827,
5690,
570
57126,
5720,
573
57425,
5750,
576
57731,
5780,
579
58030,
5810,
582
58314,
5840,
585
5869,
5870,
588
5899,
5900,
591
59213,
59314,
5940,
595
5961,
5970,
598
5992,
6000,
601
60214,
6030,
604
6058,
6060,
607
60810,
6090,
610
61111,
6120,
613
6144,
6150,
616
6174,
6180,
619
62013,
62114,
6220,
623
6246,
6250,
626
62740,
6280,
629
63038,
6310,
632
63339,
6340,
635
6362,
6370,
638
6393,
6400,
641
6423,
6430,
644
64512,
6460,
647
6488,
6490,
650
6518,
6520,
653
6544,
6550,
656
6574,
6580,
659
6604,
6610,
662
6636,
6640,
665
6666,
6670,
668
6691,
6700,
671
6724,
6730,
674
6755,
6760,
677
6785,
6790,
680
6815,
6820,
683
6845,
6850,
686
6877,
6880,
6890};
690# define YYTYPE int
691struct yywork { YYTYPE verify, advance; } yycrank[] ={
6920,0, 0,0, 0,0, 0,0,
6930,0, 0,0, 0,0, 0,0,
6940,0, 0,0, 1,5, 1,6,
6955,5, 0,0, 0,0, 0,0,
6960,0, 0,0, 0,0, 0,0,
6970,0, 21,21, 0,0, 0,0,
6980,0, 0,0, 0,0, 0,0,
6990,0, 0,0, 0,0, 0,0,
7000,0, 1,5, 0,0, 5,5,
7013,21, 3,6, 0,0, 0,0,
7020,0, 1,7, 0,0, 0,0,
70321,21, 0,0, 0,0, 0,0,
7040,0, 1,8, 1,9, 1,8,
7051,10, 1,10, 1,10, 1,10,
7061,10, 1,10, 1,10, 3,21,
7079,63, 21,82, 22,83, 22,83,
7080,0, 0,0, 0,0, 3,7,
7090,0, 0,0, 3,22, 0,0,
7103,23, 0,0, 0,0, 3,8,
7113,9, 3,8, 3,10, 3,10,
7123,10, 3,10, 3,10, 3,10,
7133,10, 10,64, 10,64, 10,64,
71410,64, 10,64, 10,64, 10,64,
71510,64, 10,64, 10,64, 0,0,
7160,0, 0,0, 1,11, 15,72,
7170,0, 1,12, 14,70, 1,13,
71812,67, 13,68, 17,75, 1,14,
71919,79, 20,81, 1,15, 1,16,
7201,17, 15,73, 11,65, 16,74,
7211,18, 1,19, 13,69, 11,66,
7221,20, 19,80, 14,71, 25,99,
7233,24, 3,25, 3,26, 3,27,
7243,28, 3,29, 3,30, 3,31,
7253,32, 3,33, 3,34, 3,34,
7263,35, 3,36, 3,37, 3,38,
7273,39, 3,39, 3,40, 3,41,
7283,42, 3,39, 3,43, 3,39,
7293,44, 7,45, 8,50, 18,76,
73023,84, 23,84, 30,104, 18,77,
7317,46, 24,97, 42,114, 45,117,
73226,100, 28,102, 7,47, 7,48,
73331,105, 33,70, 7,49, 38,112,
73433,107, 24,65, 46,118, 18,78,
73524,98, 8,50, 24,66, 26,101,
73628,103, 36,74, 49,123, 31,106,
73756,129, 36,111, 38,113, 33,108,
73847,119, 33,71, 8,51, 57,130,
7398,52, 8,53, 8,53, 8,53,
7408,53, 8,53, 8,53, 8,53,
7418,53, 8,53, 8,53, 8,54,
74244,115, 23,85, 23,86, 23,87,
74347,120, 23,88, 35,72, 23,89,
74423,90, 35,109, 23,91, 59,133,
74550,50, 23,92, 23,93, 44,116,
74623,94, 48,121, 55,127, 58,131,
74735,73, 23,95, 60,134, 55,128,
74835,110, 23,96, 61,135, 62,136,
74965,138, 64,52, 48,122, 51,51,
75066,139, 67,140, 68,141, 50,50,
75169,142, 70,143, 8,55, 58,132,
75264,54, 8,56, 71,144, 8,57,
75371,145, 73,148, 72,146, 8,58,
75450,51, 74,149, 8,59, 8,60,
7558,61, 72,147, 51,51, 75,150,
7568,62, 52,124, 52,124, 52,124,
75752,124, 52,124, 52,124, 52,124,
75852,124, 52,124, 52,124, 53,125,
75953,125, 53,125, 53,125, 53,125,
76053,125, 53,125, 53,125, 53,125,
76153,125, 54,126, 54,126, 54,126,
76254,126, 54,126, 54,126, 54,126,
76354,126, 54,126, 54,126, 63,125,
76463,125, 63,125, 63,125, 63,125,
76563,125, 63,137, 63,137, 63,137,
76663,137, 76,151, 77,152, 78,153,
76750,55, 79,154, 80,155, 50,56,
76881,156, 50,57, 82,157, 93,111,
76985,97, 50,58, 91,107, 92,109,
77050,59, 50,60, 50,61, 97,160,
77198,161, 99,162, 50,62, 51,55,
772100,163, 101,164, 51,56, 85,98,
77351,57, 91,108, 92,110, 102,165,
77451,58, 103,166, 104,167, 51,59,
77551,60, 51,61, 105,168, 106,169,
776107,170, 51,62, 83,158, 83,158,
77783,158, 83,158, 83,158, 83,158,
77883,158, 83,158, 83,158, 83,158,
77984,159, 84,159, 84,159, 84,159,
78084,159, 84,159, 84,159, 84,159,
78184,159, 84,159, 108,171, 109,172,
782110,173, 111,174, 112,175, 113,176,
783115,177, 116,178, 117,179, 118,180,
784119,181, 120,182, 121,183, 122,184,
785123,185, 124,186, 124,187, 124,187,
786124,187, 124,187, 124,187, 124,187,
787124,187, 124,187, 124,187, 124,187,
788125,188, 125,188, 125,188, 125,188,
789125,188, 125,188, 125,188, 125,188,
790125,188, 125,188, 126,189, 127,194,
791128,195, 129,196, 130,197, 131,198,
792132,199, 133,201, 132,200, 134,203,
793135,204, 136,205, 138,207, 139,207,
794133,202, 140,207, 143,214, 145,147,
795148,216, 149,217, 150,218, 152,220,
796153,221, 126,189, 137,206, 137,206,
797137,206, 137,206, 137,206, 137,206,
798137,206, 137,206, 137,206, 137,206,
799141,207, 138,207, 139,207, 142,212,
800140,207, 126,190, 126,190, 126,190,
801126,190, 126,190, 126,190, 126,190,
802126,190, 126,190, 126,190, 126,191,
803144,207, 146,207, 147,207, 180,230,
804154,212, 151,212, 156,212, 141,207,
805155,212, 182,232, 142,212, 157,225,
806157,225, 157,225, 157,225, 179,228,
807181,228, 183,228, 187,186, 184,228,
808190,191, 192,241, 142,212, 144,207,
809146,207, 147,207, 185,228, 154,212,
810151,212, 156,212, 193,242, 155,212,
811198,250, 200,202, 203,252, 204,253,
812205,254, 208,147, 126,192, 154,212,
813151,212, 156,212, 209,257, 155,212,
814210,258, 211,259, 206,255, 212,212,
815213,260, 214,261, 215,147, 216,262,
816217,263, 126,193, 218,264, 219,265,
817220,266, 140,210, 138,208, 158,226,
818158,226, 158,226, 158,226, 158,226,
819158,226, 158,226, 158,226, 158,226,
820158,226, 206,255, 212,212, 139,209,
821221,267, 222,268, 179,229, 223,269,
822224,270, 228,274, 142,213, 159,227,
823159,227, 159,227, 159,227, 159,227,
824159,227, 159,227, 159,227, 159,227,
825159,227, 141,211, 183,233, 146,215,
826181,231, 184,234, 188,238, 185,235,
827186,236, 186,237, 186,236, 186,236,
828186,236, 186,236, 186,236, 186,236,
829186,236, 186,236, 189,189, 156,224,
830194,202, 154,222, 229,275, 230,276,
831144,147, 151,219, 155,223, 231,277,
832232,278, 188,238, 191,240, 191,240,
833191,240, 191,240, 191,240, 191,240,
834191,240, 191,240, 191,240, 191,240,
835233,279, 189,189, 234,280, 194,202,
836235,281, 188,239, 188,239, 188,239,
837188,239, 188,239, 188,239, 188,239,
838188,239, 188,239, 188,239, 195,202,
839194,243, 237,283, 238,238, 194,244,
840194,245, 194,244, 194,244, 194,244,
841194,244, 194,244, 194,244, 194,244,
842194,244, 241,241, 242,242, 245,290,
843246,202, 247,291, 248,292, 249,293,
844250,294, 251,202, 195,202, 252,295,
845253,296, 238,238, 254,297, 257,147,
846196,202, 255,255, 258,301, 259,302,
847260,303, 261,304, 263,305, 195,243,
848241,241, 242,242, 195,244, 195,245,
849195,244, 195,244, 195,244, 195,244,
850195,244, 195,244, 195,244, 195,244,
851264,306, 265,307, 189,192, 196,202,
852255,255, 266,308, 197,202, 268,309,
853269,310, 270,311, 275,312, 277,313,
854194,246, 279,314, 280,315, 281,316,
855196,243, 189,193, 282,282, 196,244,
856196,245, 196,244, 196,244, 196,244,
857196,244, 196,244, 196,244, 196,244,
858196,244, 197,202, 289,318, 291,202,
859284,284, 286,285, 199,202, 288,288,
860292,319, 293,320, 294,321, 295,322,
861296,323, 282,282, 197,243, 297,324,
862283,282, 197,244, 197,245, 197,244,
863197,244, 197,244, 197,244, 197,244,
864197,244, 197,244, 197,244, 284,284,
865286,285, 199,202, 288,288, 195,247,
866201,202, 300,299, 298,298, 301,326,
867299,325, 302,327, 303,212, 283,282,
868304,147, 305,328, 199,243, 306,147,
869196,248, 199,244, 199,245, 199,244,
870199,244, 199,244, 199,244, 199,244,
871199,244, 199,244, 199,244, 201,202,
872283,236, 298,298, 202,202, 299,325,
873307,329, 308,330, 309,331, 311,332,
874312,228, 313,333, 314,334, 285,285,
875201,243, 207,207, 316,335, 201,244,
876201,245, 201,244, 201,244, 201,244,
877201,244, 201,244, 201,244, 201,244,
878201,244, 202,202, 317,336, 197,249,
879319,338, 320,339, 321,202, 322,340,
880323,202, 324,341, 285,285, 330,344,
881207,207, 332,345, 202,243, 335,346,
882318,337, 202,244, 202,245, 202,244,
883202,244, 202,244, 202,244, 202,244,
884202,244, 202,244, 202,244, 285,317,
885207,256, 207,256, 207,256, 207,256,
886207,256, 207,256, 207,256, 207,256,
887207,256, 207,256, 199,202, 318,337,
888341,348, 343,350, 201,251, 225,271,
889225,271, 225,271, 225,271, 225,271,
890225,271, 225,271, 225,271, 225,271,
891225,271, 226,272, 226,272, 226,272,
892226,272, 226,272, 226,272, 226,272,
893226,272, 226,272, 226,272, 227,273,
894227,273, 227,273, 227,273, 227,273,
895227,273, 227,273, 227,273, 227,273,
896227,273, 236,282, 236,282, 236,282,
897236,282, 236,282, 236,282, 236,282,
898236,282, 236,282, 236,282, 239,284,
899239,284, 239,284, 239,284, 239,284,
900239,284, 239,284, 239,284, 239,284,
901239,284, 240,285, 349,349, 287,287,
902336,347, 336,347, 336,347, 336,347,
9030,0, 0,0, 0,0, 243,243,
904347,351, 347,351, 347,351, 347,351,
905347,351, 347,351, 347,351, 347,351,
906347,351, 347,351, 0,0, 0,0,
907240,285, 349,349, 287,287, 0,0,
9080,0, 0,0, 0,0, 0,0,
9090,0, 0,0, 243,243, 0,0,
9100,0, 244,287, 287,288, 0,0,
911240,286, 240,286, 240,286, 240,286,
912240,286, 240,286, 240,286, 240,286,
913240,286, 240,286, 243,244, 243,245,
914243,244, 243,244, 243,244, 243,244,
915243,244, 243,244, 243,244, 243,244,
916244,287, 0,0, 0,0, 256,298,
9170,0, 0,0, 0,0, 0,0,
9180,0, 0,0, 0,0, 0,0,
919244,288, 0,0, 325,325, 0,0,
920244,287, 244,287, 244,287, 244,287,
921244,287, 244,287, 244,287, 244,287,
922244,287, 244,287, 256,298, 0,0,
9230,0, 290,287, 0,0, 287,289,
9240,0, 0,0, 0,0, 0,0,
9250,0, 325,325, 256,299, 0,0,
926342,349, 0,0, 256,300, 256,300,
927256,300, 256,300, 256,300, 256,300,
928256,300, 256,300, 256,300, 256,300,
929290,287, 325,342, 325,343, 325,342,
930325,342, 325,342, 325,342, 325,342,
931325,342, 325,342, 325,342, 342,349,
932290,288, 244,289, 350,349, 0,0,
9330,0, 290,244, 0,0, 0,0,
9340,0, 0,0, 0,0, 0,0,
9350,0, 0,0, 0,0, 342,349,
936342,349, 342,349, 342,349, 342,349,
937342,349, 342,349, 342,349, 342,349,
938342,349, 350,349, 0,0, 0,0,
9390,0, 0,0, 0,0, 0,0,
9400,0, 0,0, 0,0, 0,0,
9410,0, 0,0, 0,0, 0,0,
9420,0, 0,0, 350,342, 0,0,
9430,0, 0,0, 0,0, 0,0,
9440,0, 0,0, 0,0, 0,0,
9450,0, 290,289, 0,0, 0,0,
9460,0};
947struct yysvf yysvec[] ={
9480, 0, 0,
949yycrank+1, 0, 0,
950yycrank+0, yysvec+1, 0,
951yycrank+27, 0, 0,
952yycrank+0, yysvec+3, 0,
953yycrank+3, 0, yyvstop+1,
954yycrank+0, 0, yyvstop+3,
955yycrank+47, 0, 0,
956yycrank+141, 0, 0,
957yycrank+3, yysvec+8, 0,
958yycrank+37, yysvec+8, 0,
959yycrank+2, 0, 0,
960yycrank+3, 0, 0,
961yycrank+4, 0, 0,
962yycrank+5, 0, 0,
963yycrank+2, 0, 0,
964yycrank+4, 0, 0,
965yycrank+7, 0, 0,
966yycrank+54, 0, 0,
967yycrank+4, 0, 0,
968yycrank+8, 0, 0,
969yycrank+12, 0, yyvstop+5,
970yycrank+14, 0, 0,
971yycrank+104, 0, 0,
972yycrank+57, 0, yyvstop+7,
973yycrank+8, 0, yyvstop+9,
974yycrank+60, 0, yyvstop+11,
975yycrank+0, yysvec+12, yyvstop+13,
976yycrank+61, 0, yyvstop+15,
977yycrank+0, yysvec+13, yyvstop+17,
978yycrank+45, 0, yyvstop+19,
979yycrank+64, 0, yyvstop+21,
980yycrank+0, 0, yyvstop+23,
981yycrank+68, 0, 0,
982yycrank+0, 0, yyvstop+25,
983yycrank+109, 0, yyvstop+27,
984yycrank+66, 0, yyvstop+29,
985yycrank+0, yysvec+17, yyvstop+31,
986yycrank+67, 0, yyvstop+33,
987yycrank+0, 0, yyvstop+35,
988yycrank+0, yysvec+18, yyvstop+37,
989yycrank+0, yysvec+19, yyvstop+39,
990yycrank+42, 0, yyvstop+41,
991yycrank+0, yysvec+20, yyvstop+43,
992yycrank+100, 0, yyvstop+45,
993yycrank+45, 0, 0,
994yycrank+59, 0, 0,
995yycrank+87, 0, 0,
996yycrank+113, 0, 0,
997yycrank+77, 0, 0,
998yycrank+203, 0, 0,
999yycrank+222, 0, 0,
1000yycrank+209, 0, 0,
1001yycrank+219, yysvec+8, 0,
1002yycrank+229, 0, 0,
1003yycrank+106, 0, 0,
1004yycrank+79, 0, 0,
1005yycrank+86, 0, 0,
1006yycrank+122, 0, 0,
1007yycrank+114, 0, 0,
1008yycrank+111, 0, 0,
1009yycrank+127, 0, 0,
1010yycrank+126, 0, 0,
1011yycrank+239, yysvec+8, 0,
1012yycrank+182, yysvec+50, 0,
1013yycrank+114, 0, 0,
1014yycrank+129, 0, 0,
1015yycrank+134, 0, 0,
1016yycrank+136, 0, 0,
1017yycrank+131, 0, 0,
1018yycrank+127, 0, 0,
1019yycrank+134, 0, 0,
1020yycrank+132, 0, 0,
1021yycrank+135, 0, 0,
1022yycrank+131, 0, 0,
1023yycrank+139, 0, 0,
1024yycrank+181, 0, 0,
1025yycrank+186, 0, 0,
1026yycrank+189, 0, 0,
1027yycrank+184, 0, 0,
1028yycrank+201, 0, 0,
1029yycrank+204, 0, 0,
1030yycrank+249, 0, 0,
1031yycrank+290, 0, 0,
1032yycrank+300, 0, 0,
1033yycrank+208, 0, 0,
1034yycrank+0, yysvec+25, 0,
1035yycrank+0, yysvec+26, 0,
1036yycrank+0, yysvec+28, 0,
1037yycrank+0, yysvec+30, 0,
1038yycrank+0, yysvec+31, 0,
1039yycrank+210, 0, 0,
1040yycrank+211, 0, 0,
1041yycrank+192, 0, 0,
1042yycrank+0, yysvec+38, 0,
1043yycrank+0, yysvec+42, 0,
1044yycrank+0, yysvec+44, 0,
1045yycrank+199, 0, 0,
1046yycrank+200, 0, 0,
1047yycrank+201, 0, 0,
1048yycrank+204, 0, 0,
1049yycrank+205, 0, 0,
1050yycrank+211, 0, 0,
1051yycrank+213, 0, 0,
1052yycrank+214, 0, 0,
1053yycrank+218, 0, 0,
1054yycrank+219, 0, 0,
1055yycrank+220, 0, 0,
1056yycrank+242, 0, 0,
1057yycrank+243, 0, 0,
1058yycrank+244, 0, 0,
1059yycrank+245, 0, 0,
1060yycrank+246, 0, 0,
1061yycrank+247, 0, 0,
1062yycrank+0, 0, yyvstop+47,
1063yycrank+248, 0, 0,
1064yycrank+249, 0, 0,
1065yycrank+261, 0, 0,
1066yycrank+257, 0, 0,
1067yycrank+252, 0, 0,
1068yycrank+259, 0, 0,
1069yycrank+253, 0, 0,
1070yycrank+270, 0, 0,
1071yycrank+272, 0, 0,
1072yycrank+326, 0, 0,
1073yycrank+336, 0, 0,
1074yycrank+385, 0, yyvstop+49,
1075yycrank+281, 0, 0,
1076yycrank+293, 0, 0,
1077yycrank+298, 0, 0,
1078yycrank+300, 0, 0,
1079yycrank+289, 0, 0,
1080yycrank+292, 0, 0,
1081yycrank+287, 0, 0,
1082yycrank+285, 0, 0,
1083yycrank+288, 0, 0,
1084yycrank+293, 0, 0,
1085yycrank+370, 0, 0,
1086yycrank+397, 0, 0,
1087yycrank+398, 0, 0,
1088yycrank+400, 0, 0,
1089yycrank+419, 0, 0,
1090yycrank+422, 0, yyvstop+51,
1091yycrank+293, yysvec+139, 0,
1092yycrank+435, 0, 0,
1093yycrank+310, yysvec+140, 0,
1094yycrank+436, 0, 0,
1095yycrank+437, 0, 0,
1096yycrank+312, yysvec+142, yyvstop+53,
1097yycrank+312, yysvec+140, 0,
1098yycrank+303, yysvec+147, 0,
1099yycrank+440, 0, yyvstop+55,
1100yycrank+299, yysvec+147, 0,
1101yycrank+316, yysvec+142, yyvstop+57,
1102yycrank+439, 0, yyvstop+59,
1103yycrank+443, 0, yyvstop+61,
1104yycrank+441, 0, yyvstop+63,
1105yycrank+401, 0, 0,
1106yycrank+455, 0, 0,
1107yycrank+475, 0, 0,
1108yycrank+0, 0, yyvstop+65,
1109yycrank+0, 0, yyvstop+67,
1110yycrank+0, 0, yyvstop+69,
1111yycrank+0, 0, yyvstop+71,
1112yycrank+0, 0, yyvstop+73,
1113yycrank+0, 0, yyvstop+75,
1114yycrank+0, 0, yyvstop+77,
1115yycrank+0, 0, yyvstop+79,
1116yycrank+0, 0, yyvstop+81,
1117yycrank+0, 0, yyvstop+83,
1118yycrank+0, 0, yyvstop+85,
1119yycrank+0, 0, yyvstop+87,
1120yycrank+0, 0, yyvstop+89,
1121yycrank+0, 0, yyvstop+91,
1122yycrank+0, 0, yyvstop+93,
1123yycrank+0, 0, yyvstop+95,
1124yycrank+0, 0, yyvstop+97,
1125yycrank+0, 0, yyvstop+99,
1126yycrank+0, 0, yyvstop+101,
1127yycrank+418, 0, 0,
1128yycrank+347, yysvec+179, 0,
1129yycrank+419, 0, 0,
1130yycrank+353, yysvec+179, 0,
1131yycrank+420, 0, 0,
1132yycrank+422, 0, 0,
1133yycrank+429, 0, 0,
1134yycrank+492, 0, 0,
1135yycrank+415, 0, 0,
1136yycrank+529, 0, yyvstop+103,
1137yycrank+541, 0, yyvstop+105,
1138yycrank+406, yysvec+189, yyvstop+107,
1139yycrank+514, 0, 0,
1140yycrank+356, 0, 0,
1141yycrank+365, 0, 0,
1142yycrank+543, 0, 0,
1143yycrank+578, 0, 0,
1144yycrank+607, 0, 0,
1145yycrank+633, 0, 0,
1146yycrank+359, yysvec+195, 0,
1147yycrank+661, 0, 0,
1148yycrank+376, yysvec+196, 0,
1149yycrank+687, 0, 0,
1150yycrank+713, 0, 0,
1151yycrank+377, yysvec+196, 0,
1152yycrank+368, yysvec+202, 0,
1153yycrank+364, yysvec+202, 0,
1154yycrank+481, yysvec+188, yyvstop+109,
1155yycrank+724, 0, 0,
1156yycrank+373, 0, 0,
1157yycrank+371, 0, 0,
1158yycrank+379, 0, 0,
1159yycrank+372, 0, 0,
1160yycrank+482, 0, yyvstop+112,
1161yycrank+395, 0, 0,
1162yycrank+396, 0, 0,
1163yycrank+390, 0, 0,
1164yycrank+398, 0, 0,
1165yycrank+387, 0, 0,
1166yycrank+400, 0, 0,
1167yycrank+385, 0, 0,
1168yycrank+399, 0, 0,
1169yycrank+419, 0, 0,
1170yycrank+402, 0, 0,
1171yycrank+419, 0, 0,
1172yycrank+419, 0, 0,
1173yycrank+739, 0, 0,
1174yycrank+749, 0, 0,
1175yycrank+759, 0, 0,
1176yycrank+477, 0, yyvstop+114,
1177yycrank+457, 0, 0,
1178yycrank+458, 0, 0,
1179yycrank+445, 0, 0,
1180yycrank+463, 0, 0,
1181yycrank+457, 0, 0,
1182yycrank+474, 0, 0,
1183yycrank+475, 0, 0,
1184yycrank+769, 0, 0,
1185yycrank+532, yysvec+236, 0,
1186yycrank+581, 0, yyvstop+116,
1187yycrank+779, 0, 0,
1188yycrank+828, 0, yyvstop+118,
1189yycrank+592, 0, yyvstop+120,
1190yycrank+593, 0, yyvstop+122,
1191yycrank+838, 0, 0,
1192yycrank+864, 0, yyvstop+124,
1193yycrank+546, yysvec+244, yyvstop+126,
1194yycrank+496, 0, 0,
1195yycrank+490, 0, 0,
1196yycrank+497, 0, 0,
1197yycrank+490, 0, 0,
1198yycrank+511, 0, 0,
1199yycrank+505, 0, 0,
1200yycrank+502, 0, 0,
1201yycrank+514, 0, 0,
1202yycrank+513, 0, 0,
1203yycrank+608, 0, yyvstop+128,
1204yycrank+890, 0, yyvstop+131,
1205yycrank+499, 0, 0,
1206yycrank+520, 0, 0,
1207yycrank+522, 0, 0,
1208yycrank+499, 0, 0,
1209yycrank+507, 0, 0,
1210yycrank+0, yysvec+260, 0,
1211yycrank+524, 0, 0,
1212yycrank+535, 0, 0,
1213yycrank+537, 0, 0,
1214yycrank+532, 0, 0,
1215yycrank+0, yysvec+260, 0,
1216yycrank+543, 0, 0,
1217yycrank+547, 0, 0,
1218yycrank+530, 0, 0,
1219yycrank+0, 0, yyvstop+133,
1220yycrank+0, 0, yyvstop+135,
1221yycrank+0, 0, yyvstop+137,
1222yycrank+0, 0, yyvstop+139,
1223yycrank+525, 0, 0,
1224yycrank+0, yysvec+275, 0,
1225yycrank+547, 0, 0,
1226yycrank+0, yysvec+275, 0,
1227yycrank+549, 0, 0,
1228yycrank+553, 0, 0,
1229yycrank+536, 0, 0,
1230yycrank+645, 0, yyvstop+141,
1231yycrank+671, yysvec+186, yyvstop+143,
1232yycrank+659, 0, yyvstop+145,
1233yycrank+722, 0, yyvstop+147,
1234yycrank+660, 0, yyvstop+149,
1235yycrank+830, 0, yyvstop+151,
1236yycrank+662, 0, yyvstop+153,
1237yycrank+550, 0, 0,
1238yycrank+916, yysvec+243, yyvstop+155,
1239yycrank+551, 0, 0,
1240yycrank+574, 0, 0,
1241yycrank+576, 0, 0,
1242yycrank+560, 0, 0,
1243yycrank+577, 0, 0,
1244yycrank+575, 0, 0,
1245yycrank+570, 0, 0,
1246yycrank+689, 0, yyvstop+157,
1247yycrank+691, 0, 0,
1248yycrank+653, yysvec+298, yyvstop+159,
1249yycrank+598, 0, 0,
1250yycrank+587, 0, 0,
1251yycrank+658, yysvec+212, yyvstop+161,
1252yycrank+583, 0, 0,
1253yycrank+604, 0, 0,
1254yycrank+593, 0, 0,
1255yycrank+627, 0, 0,
1256yycrank+627, 0, 0,
1257yycrank+629, 0, 0,
1258yycrank+0, yysvec+260, 0,
1259yycrank+627, 0, 0,
1260yycrank+687, 0, 0,
1261yycrank+632, 0, 0,
1262yycrank+633, 0, 0,
1263yycrank+0, yysvec+275, 0,
1264yycrank+634, 0, 0,
1265yycrank+689, 0, 0,
1266yycrank+751, 0, 0,
1267yycrank+647, 0, 0,
1268yycrank+635, 0, 0,
1269yycrank+629, 0, 0,
1270yycrank+650, 0, 0,
1271yycrank+638, 0, 0,
1272yycrank+655, 0, 0,
1273yycrank+901, 0, 0,
1274yycrank+0, yysvec+306, 0,
1275yycrank+0, yysvec+304, 0,
1276yycrank+0, yysvec+306, 0,
1277yycrank+0, yysvec+260, 0,
1278yycrank+654, 0, 0,
1279yycrank+0, yysvec+260, 0,
1280yycrank+660, 0, 0,
1281yycrank+0, yysvec+275, 0,
1282yycrank+0, yysvec+275, 0,
1283yycrank+662, 0, 0,
1284yycrank+786, 0, 0,
1285yycrank+0, yysvec+318, yyvstop+163,
1286yycrank+0, yysvec+323, 0,
1287yycrank+0, yysvec+321, 0,
1288yycrank+0, yysvec+323, 0,
1289yycrank+683, 0, 0,
1290yycrank+927, 0, yyvstop+165,
1291yycrank+728, yysvec+342, yyvstop+167,
1292yycrank+0, yysvec+306, 0,
1293yycrank+0, yysvec+260, 0,
1294yycrank+0, yysvec+275, 0,
1295yycrank+800, 0, 0,
1296yycrank+0, yysvec+323, 0,
1297yycrank+829, 0, yyvstop+169,
1298yycrank+953, yysvec+325, yyvstop+171,
1299yycrank+0, 0, yyvstop+173,
13000, 0, 0};
1301struct yywork *yytop = yycrank+1013;
1302struct yysvf *yybgin = yysvec+1;
1303char yymatch[] ={
130400 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
130501 ,011 ,01 ,01 ,01 ,01 ,01 ,01 ,
130601 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
130701 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1308011 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
130901 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
1310'0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'6' ,'6' ,
1311'6' ,'6' ,01 ,01 ,01 ,01 ,01 ,01 ,
131201 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
131301 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
131401 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
131501 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
131601 ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
1317'a' ,'a' ,01 ,'k' ,'k' ,'k' ,'n' ,'n' ,
1318'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,
1319'n' ,'n' ,01 ,01 ,01 ,01 ,01 ,01 ,
132001 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132101 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132201 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132301 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132401 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132501 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132601 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132701 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132801 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
132901 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
133001 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
133101 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
133201 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
133301 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
133401 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
133501 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
13360};
1337char yyextra[] ={
13380,0,0,0,0,0,0,0,
13390,0,0,0,0,0,0,0,
13400,0,0,0,0,0,0,0,
13410,0,0,0,0,0,0,0,
13420,0,0,0,0,0,0,0,
13430,0,0,0,0,0,0,0,
13440};
1345/* ncform 4.1 83/08/11 */
1346