Source:NetHack 3.0.0/lev lex.c

From NetHackWiki
Jump to navigation Jump to search

Below is the full text to lev_lex.c from the source code of NetHack 3.0.0. To link to a particular line, write [[NetHack 3.0.0/lev_lex.c#line123]], for example.

Warning! This is the source code from an old release. For the latest release, see Source code

The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

1.    # include "stdio.h"
2.    # define U(x) x
3.    # define NLSTATE yyprevious=YYNEWLINE
4.    # define BEGIN yybgin = yysvec + 1 +
5.    # define INITIAL 0
6.    # define YYLERR yysvec
7.    # define YYSTATE (yyestate-yysvec-1)
8.    # define YYOPTIM 1
9.    # define YYLMAX 200
10.   # define output(c) putc(c,yyout)
11.   # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
12.   # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
13.   # define yymore() (yymorfg=1)
14.   # define ECHO fprintf(yyout, "%s",yytext)
15.   # define REJECT { nstr = yyreject(); goto yyfussy;}
16.   int yyleng; extern char yytext[];
17.   int yymorfg;
18.   extern char *yysptr, yysbuf[];
19.   int yytchar;
20.   FILE *yyin ={stdin}, *yyout ={stdout};
21.   extern int yylineno;
22.   struct yysvf { 
23.   	struct yywork *yystoff;
24.   	struct yysvf *yyother;
25.   	int *yystops;};
26.   struct yysvf *yyestate;
27.   extern struct yysvf yysvec[], *yybgin;
28.   /*	SCCS Id: @(#)lev_lex.c	3.0	89/07/02
29.   /*	Copyright (c) 1989 by Jean-Christophe Collet */
30.   /* NetHack may be freely redistributed.  See license for details. */
31.   
32.   #include "hack.h"
33.   #include "lev_comp.h"
34.   #include "sp_lev.h"
35.   
36.   int line_number = 1;
37.   
38.   /* This is *** UGLY *** but I can't think a better way to do it
39.    * I really need a huge buffer to scan maps...
40.    */
41.   
42.   #undef YYLMAX
43.   #define YYLMAX	2048
44.   
45.   # define MAPC 2
46.   # define YYNEWLINE 10
47.   yylex(){
48.   int nstr; extern int yyprevious;
49.   while((nstr = yylook()) >= 0)
50.   yyfussy: switch(nstr){
51.   case 0:
52.   if(yywrap()) return(0); break;
53.   case 1:
54.   	{ line_number++; }
55.   break;
56.   case 2:
57.   	return MAZE_ID;
58.   break;
59.   case 3:
60.   	return LEVEL_ID;
61.   break;
62.   case 4:
63.   return GEOMETRY_ID;
64.   break;
65.   case 5:
66.   	{ BEGIN MAPC; }
67.   break;
68.   case 6:
69.   { line_number++; yymore(); }
70.   break;
71.   case 7:
72.   { BEGIN 0;
73.   		  yytext[yyleng-7] = 0; /* Discard \nENDMAP */
74.   		  yylval.map = (char *) alloc(strlen(yytext)+1);
75.   		  strcpy(yylval.map, yytext+1);
76.   		  return MAP_ID;
77.   		}
78.   break;
79.   case 8:
80.   	return OBJECT_ID;
81.   break;
82.   case 9:
83.   	return MONSTER_ID;
84.   break;
85.   case 10:
86.   	return TRAP_ID;
87.   break;
88.   case 11:
89.   	return DOOR_ID;
90.   break;
91.   case 12:
92.   return DRAWBRIDGE_ID;
93.   break;
94.   case 13:
95.   return MAZEWALK_ID;
96.   break;
97.   case 14:
98.   	return REGION_ID;
99.   break;
100.  case 15:
101.  return RANDOM_OBJECTS_ID;
102.  break;
103.  case 16:
104.  return RANDOM_MONSTERS_ID;
105.  break;
106.  case 17:
107.  return RANDOM_PLACES_ID;
108.  break;
109.  case 18:
110.  	return ALTAR_ID;
111.  break;
112.  case 19:
113.  	return LADDER_ID;
114.  break;
115.  case 20:
116.  return NON_DIGGABLE_ID;
117.  break;
118.  case 21:
119.  	return ROOM_ID;
120.  break;
121.  case 22:
122.  	{ yylval.i=D_ISOPEN; return DOOR_STATE; }
123.  break;
124.  case 23:
125.  	{ yylval.i=D_CLOSED; return DOOR_STATE; }
126.  break;
127.  case 24:
128.  	{ yylval.i=D_LOCKED; return DOOR_STATE; }
129.  break;
130.  case 25:
131.  	{ yylval.i=D_NODOOR; return DOOR_STATE; }
132.  break;
133.  case 26:
134.  	{ yylval.i=D_BROKEN; return DOOR_STATE; }
135.  break;
136.  case 27:
137.  	{ yylval.i=W_NORTH; return DIRECTION; }
138.  break;
139.  case 28:
140.  	{ yylval.i=W_EAST; return DIRECTION; }
141.  break;
142.  case 29:
143.  	{ yylval.i=W_SOUTH; return DIRECTION; }
144.  break;
145.  case 30:
146.  	{ yylval.i=W_WEST; return DIRECTION; }
147.  break;
148.  case 31:
149.  	{ yylval.i = -1; return RANDOM_TYPE; }
150.  break;
151.  case 32:
152.  	return O_REGISTER;
153.  break;
154.  case 33:
155.  	return M_REGISTER;
156.  break;
157.  case 34:
158.  	return P_REGISTER;
159.  break;
160.  case 35:
161.  	return A_REGISTER;
162.  break;
163.  case 36:
164.  	{ yylval.i=1; return LEFT_OR_RIGHT; }
165.  break;
166.  case 37:
167.  	{ yylval.i=3; return LEFT_OR_RIGHT; }
168.  break;
169.  case 38:
170.  	{ yylval.i=2; return CENTER; }
171.  break;
172.  case 39:
173.  	{ yylval.i=1; return TOP_OR_BOT; }
174.  break;
175.  case 40:
176.  	{ yylval.i=3; return TOP_OR_BOT; }
177.  break;
178.  case 41:
179.  	{ yylval.i=1; return LIGHT_STATE; }
180.  break;
181.  case 42:
182.  	{ yylval.i=0; return LIGHT_STATE; }
183.  break;
184.  case 43:
185.  	{ yylval.i=A_LAW; return ALIGNMENT; }
186.  break;
187.  case 44:
188.  	{ yylval.i=A_NEUTRAL; return ALIGNMENT; }
189.  break;
190.  case 45:
191.  	{ yylval.i=A_CHAOS; return ALIGNMENT; }
192.  break;
193.  case 46:
194.  	{ yylval.i=1; return ALTAR_TYPE; }
195.  break;
196.  case 47:
197.  	{ yylval.i=0; return ALTAR_TYPE; }
198.  break;
199.  case 48:
200.  	{ yylval.i=1; return UP_OR_DOWN; }
201.  break;
202.  case 49:
203.  	{ yylval.i=0; return UP_OR_DOWN; }
204.  break;
205.  case 50:
206.  	{ yylval.i=atoi(yytext); return INTEGER; }
207.  break;
208.  case 51:
209.  { yytext[yyleng-1] = 0; /* Discard the trailing \" */
210.  		  yylval.map = (char *) alloc(strlen(yytext+1)+1);
211.  		  strcpy(yylval.map, yytext+1); /* Discard the first \" */
212.  		  return STRING; }
213.  break;
214.  case 52:
215.  	{ line_number++; }
216.  break;
217.  case 53:
218.  	;
219.  break;
220.  case 54:
221.  	{ yylval.i = yytext[1]; return CHAR; }
222.  break;
223.  case 55:
224.  	{ return yytext[0]; }
225.  break;
226.  case -1:
227.  break;
228.  default:
229.  fprintf(yyout,"bad switch yylook %d",nstr);
230.  } return(0); }
231.  /* end of yylex */
232.  int yyvstop[] ={
233.  0,
234.  
235.  55,
236.  0,
237.  
238.  53,
239.  55,
240.  0,
241.  
242.  52,
243.  0,
244.  
245.  55,
246.  0,
247.  
248.  55,
249.  0,
250.  
251.  50,
252.  55,
253.  0,
254.  
255.  55,
256.  0,
257.  
258.  55,
259.  0,
260.  
261.  55,
262.  0,
263.  
264.  55,
265.  0,
266.  
267.  55,
268.  0,
269.  
270.  55,
271.  0,
272.  
273.  55,
274.  0,
275.  
276.  55,
277.  0,
278.  
279.  55,
280.  0,
281.  
282.  55,
283.  0,
284.  
285.  55,
286.  0,
287.  
288.  55,
289.  0,
290.  
291.  55,
292.  0,
293.  
294.  55,
295.  0,
296.  
297.  55,
298.  0,
299.  
300.  55,
301.  0,
302.  
303.  55,
304.  0,
305.  
306.  55,
307.  0,
308.  
309.  55,
310.  0,
311.  
312.  55,
313.  0,
314.  
315.  55,
316.  0,
317.  
318.  55,
319.  0,
320.  
321.  55,
322.  0,
323.  
324.  55,
325.  0,
326.  
327.  55,
328.  0,
329.  
330.  55,
331.  0,
332.  
333.  6,
334.  52,
335.  0,
336.  
337.  53,
338.  55,
339.  0,
340.  
341.  55,
342.  0,
343.  
344.  55,
345.  0,
346.  
347.  55,
348.  0,
349.  
350.  53,
351.  0,
352.  
353.  51,
354.  0,
355.  
356.  50,
357.  0,
358.  
359.  48,
360.  0,
361.  
362.  1,
363.  0,
364.  
365.  6,
366.  0,
367.  
368.  53,
369.  0,
370.  
371.  1,
372.  6,
373.  0,
374.  
375.  54,
376.  0,
377.  
378.  43,
379.  0,
380.  
381.  41,
382.  0,
383.  
384.  39,
385.  0,
386.  
387.  -5,
388.  0,
389.  
390.  11,
391.  0,
392.  
393.  2,
394.  0,
395.  
396.  21,
397.  0,
398.  
399.  10,
400.  0,
401.  
402.  49,
403.  0,
404.  
405.  28,
406.  0,
407.  
408.  36,
409.  0,
410.  
411.  22,
412.  0,
413.  
414.  30,
415.  0,
416.  
417.  5,
418.  0,
419.  
420.  18,
421.  0,
422.  
423.  3,
424.  0,
425.  
426.  35,
427.  0,
428.  
429.  47,
430.  0,
431.  
432.  45,
433.  0,
434.  
435.  27,
436.  0,
437.  
438.  34,
439.  0,
440.  
441.  37,
442.  0,
443.  
444.  29,
445.  0,
446.  
447.  42,
448.  0,
449.  
450.  19,
451.  0,
452.  
453.  8,
454.  0,
455.  
456.  14,
457.  0,
458.  
459.  40,
460.  0,
461.  
462.  26,
463.  0,
464.  
465.  38,
466.  0,
467.  
468.  23,
469.  0,
470.  
471.  24,
472.  0,
473.  
474.  25,
475.  0,
476.  
477.  32,
478.  0,
479.  
480.  31,
481.  0,
482.  
483.  46,
484.  0,
485.  
486.  -7,
487.  0,
488.  
489.  9,
490.  0,
491.  
492.  33,
493.  0,
494.  
495.  44,
496.  0,
497.  
498.  7,
499.  0,
500.  
501.  4,
502.  0,
503.  
504.  13,
505.  0,
506.  
507.  12,
508.  0,
509.  
510.  20,
511.  0,
512.  
513.  17,
514.  0,
515.  
516.  15,
517.  0,
518.  
519.  16,
520.  0,
521.  0};
522.  # define YYTYPE int
523.  struct yywork { YYTYPE verify, advance; } yycrank[] ={
524.  0,0,	0,0,	1,5,	0,0,	
525.  0,0,	0,0,	0,0,	0,0,	
526.  8,43,	0,0,	1,6,	1,7,	
527.  9,45,	0,0,	6,42,	0,0,	
528.  8,43,	8,43,	0,0,	0,0,	
529.  9,45,	9,0,	41,94,	0,0,	
530.  0,0,	0,0,	0,0,	0,0,	
531.  0,0,	0,0,	0,0,	0,0,	
532.  0,0,	1,6,	0,0,	1,8,	
533.  1,5,	6,42,	0,0,	8,43,	
534.  1,9,	8,44,	8,43,	9,45,	
535.  41,95,	9,45,	9,45,	41,95,	
536.  45,96,	1,10,	0,0,	0,0,	
537.  0,0,	0,0,	0,0,	8,43,	
538.  0,0,	0,0,	0,0,	9,45,	
539.  0,0,	0,0,	0,0,	0,0,	
540.  0,0,	0,0,	1,11,	14,51,	
541.  15,53,	1,12,	13,50,	14,52,	
542.  1,13,	17,56,	36,89,	49,99,	
543.  51,101,	1,14,	1,15,	1,16,	
544.  1,17,	11,47,	15,54,	1,18,	
545.  12,48,	1,19,	16,55,	12,49,	
546.  2,5,	18,57,	19,60,	40,93,	
547.  47,97,	18,58,	48,98,	50,100,	
548.  2,6,	2,7,	1,20,	1,21,	
549.  1,22,	1,23,	1,24,	18,59,	
550.  24,68,	34,86,	52,102,	53,103,	
551.  54,104,	1,25,	1,26,	1,27,	
552.  1,28,	1,29,	20,61,	1,30,	
553.  1,31,	1,32,	1,33,	2,6,	
554.  1,34,	2,8,	2,35,	23,67,	
555.  21,62,	26,73,	2,9,	21,63,	
556.  29,78,	32,83,	2,5,	55,105,	
557.  2,5,	2,5,	28,76,	2,10,	
558.  10,46,	10,46,	10,46,	10,46,	
559.  10,46,	10,46,	10,46,	10,46,	
560.  10,46,	10,46,	22,64,	27,74,	
561.  28,77,	22,65,	56,106,	30,79,	
562.  2,11,	22,66,	31,81,	2,12,	
563.  57,107,	27,75,	2,13,	30,80,	
564.  58,108,	31,82,	2,5,	2,14,	
565.  2,36,	2,16,	2,17,	59,109,	
566.  25,69,	2,18,	2,5,	2,19,	
567.  25,70,	33,84,	60,110,	33,85,	
568.  25,71,	62,113,	61,111,	2,5,	
569.  63,114,	64,115,	25,72,	65,116,	
570.  2,20,	2,21,	2,22,	2,23,	
571.  2,24,	61,112,	66,117,	3,37,	
572.  67,118,	68,119,	69,120,	2,25,	
573.  2,26,	2,27,	2,28,	2,29,	
574.  35,87,	2,30,	2,31,	2,32,	
575.  2,33,	70,121,	2,34,	71,122,	
576.  35,87,	35,88,	2,5,	2,5,	
577.  2,5,	3,38,	72,123,	73,124,	
578.  3,39,	74,125,	75,126,	76,128,	
579.  3,9,	77,129,	78,130,	79,131,	
580.  80,132,	81,133,	82,134,	83,135,	
581.  84,136,	86,137,	89,138,	35,87,	
582.  75,127,	35,87,	35,87,	93,139,	
583.  97,140,	98,141,	99,142,	95,94,	
584.  89,103,	100,143,	101,144,	102,145,	
585.  103,146,	104,147,	3,11,	35,87,	
586.  105,148,	3,12,	3,40,	106,149,	
587.  3,13,	107,150,	108,151,	109,152,	
588.  110,153,	3,14,	3,15,	3,16,	
589.  3,17,	95,95,	111,154,	3,18,	
590.  95,95,	3,19,	112,155,	113,156,	
591.  114,157,	115,158,	116,159,	117,160,	
592.  118,161,	119,162,	121,163,	123,164,	
593.  124,165,	4,37,	3,20,	3,21,	
594.  3,22,	3,23,	3,24,	125,166,	
595.  126,167,	127,168,	128,169,	129,170,	
596.  130,171,	3,25,	3,26,	3,27,	
597.  3,28,	3,29,	131,172,	3,30,	
598.  3,31,	3,32,	3,33,	4,38,	
599.  3,34,	132,173,	4,41,	133,174,	
600.  134,175,	136,176,	4,9,	137,177,	
601.  138,178,	139,179,	4,39,	140,180,	
602.  4,39,	4,39,	142,181,	143,182,	
603.  144,183,	145,184,	146,185,	147,186,	
604.  148,187,	149,188,	150,189,	151,190,	
605.  154,191,	155,192,	156,193,	157,194,	
606.  158,195,	159,196,	160,197,	164,198,	
607.  4,11,	165,199,	166,200,	4,12,	
608.  4,40,	167,201,	4,13,	168,202,	
609.  169,203,	171,204,	4,39,	4,14,	
610.  4,36,	4,16,	4,17,	172,205,	
611.  173,206,	4,18,	4,39,	4,19,	
612.  174,207,	175,208,	176,209,	179,210,	
613.  181,211,	182,212,	183,213,	4,39,	
614.  185,214,	186,215,	38,42,	38,90,	
615.  4,20,	4,21,	4,22,	4,23,	
616.  4,24,	187,216,	188,217,	189,218,	
617.  190,219,	193,220,	194,221,	4,25,	
618.  4,26,	4,27,	4,28,	4,29,	
619.  195,222,	4,30,	4,31,	4,32,	
620.  4,33,	38,91,	4,34,	39,90,	
621.  38,92,	197,223,	4,39,	4,39,	
622.  4,39,	198,224,	199,225,	200,226,	
623.  38,92,	201,227,	38,92,	38,92,	
624.  203,228,	205,229,	207,230,	210,231,	
625.  211,232,	212,233,	214,234,	215,235,	
626.  216,236,	39,92,	218,237,	225,238,	
627.  39,92,	226,239,	231,240,	232,241,	
628.  233,242,	234,243,	236,244,	241,248,	
629.  39,92,	244,249,	39,92,	39,92,	
630.  237,245,	245,250,	237,246,	237,247,	
631.  38,92,	246,251,	247,252,	248,253,	
632.  249,254,	250,255,	251,256,	252,257,	
633.  38,92,	254,258,	255,259,	256,260,	
634.  257,261,	258,262,	259,263,	260,264,	
635.  261,265,	38,92,	263,266,	264,267,	
636.  265,268,	266,269,	267,270,	269,271,	
637.  39,92,	0,0,	0,0,	0,0,	
638.  0,0,	0,0,	0,0,	0,0,	
639.  39,92,	0,0,	0,0,	0,0,	
640.  0,0,	0,0,	0,0,	0,0,	
641.  0,0,	39,92,	0,0,	0,0,	
642.  0,0,	0,0,	0,0,	0,0,	
643.  38,92,	38,92,	38,92,	0,0,	
644.  0,0,	0,0,	0,0,	0,0,	
645.  0,0,	0,0,	0,0,	0,0,	
646.  0,0,	0,0,	0,0,	0,0,	
647.  0,0,	0,0,	0,0,	0,0,	
648.  0,0,	0,0,	0,0,	0,0,	
649.  39,92,	39,92,	39,92,	0,0,	
650.  0,0};
651.  struct yysvf yysvec[] ={
652.  0,	0,	0,
653.  yycrank+-1,	0,		0,	
654.  yycrank+-87,	0,		0,	
655.  yycrank+-181,	yysvec+1,	0,	
656.  yycrank+-267,	yysvec+2,	0,	
657.  yycrank+0,	0,		yyvstop+1,
658.  yycrank+5,	0,		yyvstop+3,
659.  yycrank+0,	0,		yyvstop+6,
660.  yycrank+-7,	0,		yyvstop+8,
661.  yycrank+-11,	0,		yyvstop+10,
662.  yycrank+88,	0,		yyvstop+12,
663.  yycrank+5,	0,		yyvstop+15,
664.  yycrank+5,	0,		yyvstop+17,
665.  yycrank+1,	0,		yyvstop+19,
666.  yycrank+2,	0,		yyvstop+21,
667.  yycrank+3,	0,		yyvstop+23,
668.  yycrank+7,	0,		yyvstop+25,
669.  yycrank+7,	0,		yyvstop+27,
670.  yycrank+24,	0,		yyvstop+29,
671.  yycrank+8,	0,		yyvstop+31,
672.  yycrank+6,	0,		yyvstop+33,
673.  yycrank+13,	0,		yyvstop+35,
674.  yycrank+45,	0,		yyvstop+37,
675.  yycrank+12,	0,		yyvstop+39,
676.  yycrank+7,	0,		yyvstop+41,
677.  yycrank+71,	0,		yyvstop+43,
678.  yycrank+14,	0,		yyvstop+45,
679.  yycrank+46,	0,		yyvstop+47,
680.  yycrank+36,	0,		yyvstop+49,
681.  yycrank+20,	0,		yyvstop+51,
682.  yycrank+54,	0,		yyvstop+53,
683.  yycrank+50,	0,		yyvstop+55,
684.  yycrank+18,	0,		yyvstop+57,
685.  yycrank+63,	0,		yyvstop+59,
686.  yycrank+4,	0,		yyvstop+61,
687.  yycrank+-199,	0,		yyvstop+63,
688.  yycrank+9,	yysvec+15,	yyvstop+65,
689.  yycrank+0,	0,		yyvstop+67,
690.  yycrank+353,	0,		yyvstop+70,
691.  yycrank+377,	0,		yyvstop+73,
692.  yycrank+13,	0,		yyvstop+75,
693.  yycrank+-12,	yysvec+35,	yyvstop+77,
694.  yycrank+0,	yysvec+6,	yyvstop+79,
695.  yycrank+0,	yysvec+8,	0,	
696.  yycrank+0,	0,		yyvstop+81,
697.  yycrank+9,	0,		0,	
698.  yycrank+0,	yysvec+10,	yyvstop+83,
699.  yycrank+8,	0,		0,	
700.  yycrank+15,	0,		0,	
701.  yycrank+10,	0,		0,	
702.  yycrank+16,	0,		0,	
703.  yycrank+8,	0,		0,	
704.  yycrank+20,	0,		0,	
705.  yycrank+17,	0,		0,	
706.  yycrank+30,	0,		0,	
707.  yycrank+53,	0,		0,	
708.  yycrank+76,	0,		0,	
709.  yycrank+78,	0,		0,	
710.  yycrank+89,	0,		0,	
711.  yycrank+88,	0,		0,	
712.  yycrank+109,	0,		0,	
713.  yycrank+73,	0,		0,	
714.  yycrank+61,	0,		0,	
715.  yycrank+69,	0,		0,	
716.  yycrank+71,	0,		0,	
717.  yycrank+86,	0,		0,	
718.  yycrank+79,	0,		0,	
719.  yycrank+73,	0,		0,	
720.  yycrank+78,	0,		0,	
721.  yycrank+75,	0,		0,	
722.  yycrank+103,	0,		0,	
723.  yycrank+91,	0,		0,	
724.  yycrank+115,	0,		0,	
725.  yycrank+105,	0,		0,	
726.  yycrank+100,	0,		0,	
727.  yycrank+118,	0,		0,	
728.  yycrank+113,	0,		0,	
729.  yycrank+120,	0,		0,	
730.  yycrank+125,	0,		0,	
731.  yycrank+113,	0,		0,	
732.  yycrank+121,	0,		0,	
733.  yycrank+111,	0,		0,	
734.  yycrank+109,	0,		0,	
735.  yycrank+115,	0,		0,	
736.  yycrank+120,	0,		0,	
737.  yycrank+0,	0,		yyvstop+85,
738.  yycrank+114,	0,		0,	
739.  yycrank+0,	yysvec+35,	0,	
740.  yycrank+0,	0,		yyvstop+87,
741.  yycrank+150,	0,		0,	
742.  yycrank+0,	0,		yyvstop+89,
743.  yycrank+0,	yysvec+38,	yyvstop+91,
744.  yycrank+0,	yysvec+39,	0,	
745.  yycrank+167,	0,		0,	
746.  yycrank+0,	0,		yyvstop+93,
747.  yycrank+-229,	yysvec+35,	0,	
748.  yycrank+0,	0,		yyvstop+96,
749.  yycrank+171,	0,		0,	
750.  yycrank+155,	0,		0,	
751.  yycrank+151,	0,		0,	
752.  yycrank+164,	0,		0,	
753.  yycrank+174,	0,		0,	
754.  yycrank+174,	0,		0,	
755.  yycrank+175,	0,		0,	
756.  yycrank+162,	0,		0,	
757.  yycrank+153,	0,		0,	
758.  yycrank+182,	0,		0,	
759.  yycrank+185,	0,		0,	
760.  yycrank+181,	0,		0,	
761.  yycrank+178,	0,		0,	
762.  yycrank+176,	0,		0,	
763.  yycrank+159,	0,		0,	
764.  yycrank+169,	0,		0,	
765.  yycrank+151,	0,		0,	
766.  yycrank+161,	0,		0,	
767.  yycrank+153,	0,		0,	
768.  yycrank+159,	0,		0,	
769.  yycrank+156,	0,		0,	
770.  yycrank+162,	0,		0,	
771.  yycrank+157,	0,		0,	
772.  yycrank+0,	0,		yyvstop+98,
773.  yycrank+158,	0,		0,	
774.  yycrank+0,	0,		yyvstop+100,
775.  yycrank+168,	0,		0,	
776.  yycrank+161,	0,		0,	
777.  yycrank+167,	0,		0,	
778.  yycrank+173,	0,		0,	
779.  yycrank+169,	0,		0,	
780.  yycrank+185,	0,		0,	
781.  yycrank+177,	0,		0,	
782.  yycrank+189,	0,		0,	
783.  yycrank+194,	0,		0,	
784.  yycrank+197,	0,		0,	
785.  yycrank+198,	0,		0,	
786.  yycrank+188,	0,		0,	
787.  yycrank+0,	0,		yyvstop+102,
788.  yycrank+200,	0,		0,	
789.  yycrank+191,	0,		0,	
790.  yycrank+298,	0,		yyvstop+104,
791.  yycrank+232,	0,		0,	
792.  yycrank+229,	0,		0,	
793.  yycrank+0,	0,		yyvstop+106,
794.  yycrank+248,	0,		0,	
795.  yycrank+246,	0,		0,	
796.  yycrank+247,	0,		0,	
797.  yycrank+241,	0,		0,	
798.  yycrank+231,	0,		yyvstop+108,
799.  yycrank+235,	0,		0,	
800.  yycrank+252,	0,		0,	
801.  yycrank+254,	0,		0,	
802.  yycrank+243,	0,		0,	
803.  yycrank+244,	0,		0,	
804.  yycrank+0,	0,		yyvstop+110,
805.  yycrank+0,	0,		yyvstop+112,
806.  yycrank+214,	0,		0,	
807.  yycrank+211,	0,		0,	
808.  yycrank+215,	0,		0,	
809.  yycrank+226,	0,		0,	
810.  yycrank+227,	0,		0,	
811.  yycrank+214,	0,		0,	
812.  yycrank+229,	0,		0,	
813.  yycrank+0,	0,		yyvstop+114,
814.  yycrank+0,	0,		yyvstop+116,
815.  yycrank+0,	0,		yyvstop+118,
816.  yycrank+230,	0,		0,	
817.  yycrank+217,	0,		0,	
818.  yycrank+220,	0,		0,	
819.  yycrank+226,	0,		0,	
820.  yycrank+235,	0,		0,	
821.  yycrank+241,	0,		0,	
822.  yycrank+0,	0,		yyvstop+120,
823.  yycrank+240,	0,		0,	
824.  yycrank+236,	0,		0,	
825.  yycrank+232,	0,		0,	
826.  yycrank+242,	0,		0,	
827.  yycrank+249,	0,		0,	
828.  yycrank+238,	0,		0,	
829.  yycrank+0,	0,		yyvstop+122,
830.  yycrank+0,	0,		yyvstop+124,
831.  yycrank+290,	0,		0,	
832.  yycrank+0,	0,		yyvstop+126,
833.  yycrank+274,	0,		0,	
834.  yycrank+273,	0,		0,	
835.  yycrank+276,	0,		0,	
836.  yycrank+0,	0,		yyvstop+128,
837.  yycrank+295,	0,		0,	
838.  yycrank+292,	0,		0,	
839.  yycrank+296,	0,		0,	
840.  yycrank+286,	0,		0,	
841.  yycrank+294,	0,		0,	
842.  yycrank+294,	0,		0,	
843.  yycrank+0,	0,		yyvstop+130,
844.  yycrank+0,	0,		yyvstop+132,
845.  yycrank+264,	0,		0,	
846.  yycrank+264,	0,		0,	
847.  yycrank+266,	0,		0,	
848.  yycrank+0,	0,		yyvstop+134,
849.  yycrank+289,	0,		0,	
850.  yycrank+293,	0,		0,	
851.  yycrank+293,	0,		0,	
852.  yycrank+298,	0,		0,	
853.  yycrank+283,	0,		0,	
854.  yycrank+0,	0,		yyvstop+136,
855.  yycrank+284,	0,		0,	
856.  yycrank+0,	0,		yyvstop+138,
857.  yycrank+292,	0,		0,	
858.  yycrank+0,	0,		yyvstop+140,
859.  yycrank+301,	0,		0,	
860.  yycrank+0,	0,		yyvstop+142,
861.  yycrank+0,	0,		yyvstop+144,
862.  yycrank+323,	0,		0,	
863.  yycrank+331,	0,		0,	
864.  yycrank+323,	0,		0,	
865.  yycrank+0,	0,		yyvstop+146,
866.  yycrank+330,	0,		0,	
867.  yycrank+325,	0,		0,	
868.  yycrank+337,	0,		0,	
869.  yycrank+0,	0,		yyvstop+148,
870.  yycrank+315,	0,		0,	
871.  yycrank+0,	0,		yyvstop+150,
872.  yycrank+0,	0,		yyvstop+152,
873.  yycrank+0,	0,		yyvstop+154,
874.  yycrank+0,	0,		yyvstop+156,
875.  yycrank+0,	0,		yyvstop+158,
876.  yycrank+0,	0,		yyvstop+160,
877.  yycrank+297,	0,		0,	
878.  yycrank+305,	0,		0,	
879.  yycrank+0,	0,		yyvstop+162,
880.  yycrank+0,	0,		yyvstop+164,
881.  yycrank+0,	0,		yyvstop+166,
882.  yycrank+0,	0,		yyvstop+168,
883.  yycrank+404,	0,		yyvstop+170,
884.  yycrank+347,	0,		0,	
885.  yycrank+327,	0,		0,	
886.  yycrank+342,	0,		0,	
887.  yycrank+0,	0,		yyvstop+172,
888.  yycrank+347,	0,		0,	
889.  yycrank+347,	0,		0,	
890.  yycrank+0,	0,		yyvstop+174,
891.  yycrank+0,	0,		yyvstop+176,
892.  yycrank+0,	0,		yyvstop+178,
893.  yycrank+348,	0,		0,	
894.  yycrank+0,	0,		yyvstop+180,
895.  yycrank+0,	0,		yyvstop+182,
896.  yycrank+356,	0,		0,	
897.  yycrank+346,	0,		0,	
898.  yycrank+363,	0,		0,	
899.  yycrank+354,	0,		0,	
900.  yycrank+362,	0,		0,	
901.  yycrank+366,	0,		0,	
902.  yycrank+355,	0,		0,	
903.  yycrank+360,	0,		0,	
904.  yycrank+370,	0,		0,	
905.  yycrank+0,	0,		yyvstop+184,
906.  yycrank+361,	0,		0,	
907.  yycrank+355,	0,		0,	
908.  yycrank+370,	0,		0,	
909.  yycrank+373,	0,		0,	
910.  yycrank+372,	0,		0,	
911.  yycrank+358,	0,		0,	
912.  yycrank+376,	0,		0,	
913.  yycrank+375,	0,		0,	
914.  yycrank+0,	0,		yyvstop+186,
915.  yycrank+377,	0,		0,	
916.  yycrank+363,	0,		0,	
917.  yycrank+365,	0,		0,	
918.  yycrank+367,	0,		0,	
919.  yycrank+367,	0,		0,	
920.  yycrank+0,	0,		yyvstop+188,
921.  yycrank+368,	0,		0,	
922.  yycrank+0,	0,		yyvstop+190,
923.  yycrank+0,	0,		yyvstop+192,
924.  0,	0,	0};
925.  struct yywork *yytop = yycrank+502;
926.  struct yysvf *yybgin = yysvec+1;
927.  char yymatch[] ={
928.  00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
929.  01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
930.  01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
931.  01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
932.  040 ,01  ,'"' ,'#' ,01  ,01  ,01  ,01  ,
933.  01  ,01  ,01  ,'#' ,01  ,'#' ,'#' ,01  ,
934.  '0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
935.  '0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
936.  01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
937.  01  ,01  ,01  ,'#' ,01  ,01  ,01  ,01  ,
938.  01  ,01  ,01  ,'#' ,01  ,01  ,01  ,01  ,
939.  01  ,01  ,01  ,01  ,'#' ,01  ,01  ,01  ,
940.  01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
941.  01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
942.  01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
943.  01  ,01  ,01  ,'#' ,'#' ,'#' ,01  ,01  ,
944.  0};
945.  char yyextra[] ={
946.  0,0,0,0,0,1,0,1,
947.  0,0,0,0,0,0,0,0,
948.  0,0,0,0,0,0,0,0,
949.  0,0,0,0,0,0,0,0,
950.  0,0,0,0,0,0,0,0,
951.  0,0,0,0,0,0,0,0,
952.  0,0,0,0,0,0,0,0,
953.  0};
954.  /*	ncform	4.1	83/08/11	*/
955.  
956.  int yylineno =1;
957.  # define YYU(x) x
958.  # define NLSTATE yyprevious=YYNEWLINE
959.  char yytext[YYLMAX];
960.  struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
961.  char yysbuf[YYLMAX];
962.  char *yysptr = yysbuf;
963.  int *yyfnd;
964.  extern struct yysvf *yyestate;
965.  int yyprevious = YYNEWLINE;
966.  yylook(){
967.  	register struct yysvf *yystate, **lsp;
968.  	register struct yywork *yyt;
969.  	struct yysvf *yyz;
970.  	int yych;
971.  	struct yywork *yyr;
972.  # ifdef LEXDEBUG
973.  	int debug;
974.  # endif
975.  	char *yylastch;
976.  	/* start off machines */
977.  # ifdef LEXDEBUG
978.  	debug = 0;
979.  # endif
980.  	if (!yymorfg)
981.  		yylastch = yytext;
982.  	else {
983.  		yymorfg=0;
984.  		yylastch = yytext+yyleng;
985.  		}
986.  	for(;;){
987.  		lsp = yylstate;
988.  		yyestate = yystate = yybgin;
989.  		if (yyprevious==YYNEWLINE) yystate++;
990.  		for (;;){
991.  # ifdef LEXDEBUG
992.  			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
993.  # endif
994.  			yyt = yystate->yystoff;
995.  			if(yyt == yycrank){		/* may not be any transitions */
996.  				yyz = yystate->yyother;
997.  				if(yyz == 0)break;
998.  				if(yyz->yystoff == yycrank)break;
999.  				}
1000. 			*yylastch++ = yych = input();
1001. 		tryagain:
1002. # ifdef LEXDEBUG
1003. 			if(debug){
1004. 				fprintf(yyout,"char ");
1005. 				allprint(yych);
1006. 				putchar('\n');
1007. 				}
1008. # endif
1009. 			yyr = yyt;
1010. 			if ( (int)yyt > (int)yycrank){
1011. 				yyt = yyr + yych;
1012. 				if (yyt <= yytop && yyt->verify+yysvec == yystate){
1013. 					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
1014. 						{unput(*--yylastch);break;}
1015. 					*lsp++ = yystate = yyt->advance+yysvec;
1016. 					goto contin;
1017. 					}
1018. 				}
1019. # ifdef YYOPTIM
1020. 			else if((int)yyt < (int)yycrank) {		/* r < yycrank */
1021. 				yyt = yyr = yycrank+(yycrank-yyt);
1022. # ifdef LEXDEBUG
1023. 				if(debug)fprintf(yyout,"compressed state\n");
1024. # endif
1025. 				yyt = yyt + yych;
1026. 				if(yyt <= yytop && yyt->verify+yysvec == yystate){
1027. 					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
1028. 						{unput(*--yylastch);break;}
1029. 					*lsp++ = yystate = yyt->advance+yysvec;
1030. 					goto contin;
1031. 					}
1032. 				yyt = yyr + YYU(yymatch[yych]);
1033. # ifdef LEXDEBUG
1034. 				if(debug){
1035. 					fprintf(yyout,"try fall back character ");
1036. 					allprint(YYU(yymatch[yych]));
1037. 					putchar('\n');
1038. 					}
1039. # endif
1040. 				if(yyt <= yytop && yyt->verify+yysvec == yystate){
1041. 					if(yyt->advance+yysvec == YYLERR)	/* error transition */
1042. 						{unput(*--yylastch);break;}
1043. 					*lsp++ = yystate = yyt->advance+yysvec;
1044. 					goto contin;
1045. 					}
1046. 				}
1047. 			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
1048. # ifdef LEXDEBUG
1049. 				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
1050. # endif
1051. 				goto tryagain;
1052. 				}
1053. # endif
1054. 			else
1055. 				{unput(*--yylastch);break;}
1056. 		contin:
1057. # ifdef LEXDEBUG
1058. 			if(debug){
1059. 				fprintf(yyout,"state %d char ",yystate-yysvec-1);
1060. 				allprint(yych);
1061. 				putchar('\n');
1062. 				}
1063. # endif
1064. 			;
1065. 			}
1066. # ifdef LEXDEBUG
1067. 		if(debug){
1068. 			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
1069. 			allprint(yych);
1070. 			putchar('\n');
1071. 			}
1072. # endif
1073. 		while (lsp-- > yylstate){
1074. 			*yylastch-- = 0;
1075. 			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
1076. 				yyolsp = lsp;
1077. 				if(yyextra[*yyfnd]){		/* must backup */
1078. 					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
1079. 						lsp--;
1080. 						unput(*yylastch--);
1081. 						}
1082. 					}
1083. 				yyprevious = YYU(*yylastch);
1084. 				yylsp = lsp;
1085. 				yyleng = yylastch-yytext+1;
1086. 				yytext[yyleng] = 0;
1087. # ifdef LEXDEBUG
1088. 				if(debug){
1089. 					fprintf(yyout,"\nmatch ");
1090. 					sprint(yytext);
1091. 					fprintf(yyout," action %d\n",*yyfnd);
1092. 					}
1093. # endif
1094. 				return(*yyfnd++);
1095. 				}
1096. 			unput(*yylastch);
1097. 			}
1098. 		if (yytext[0] == 0  /* && feof(yyin) */)
1099. 			{
1100. 			yysptr=yysbuf;
1101. 			return(0);
1102. 			}
1103. 		yyprevious = yytext[0] = input();
1104. 		if (yyprevious>0)
1105. 			output(yyprevious);
1106. 		yylastch=yytext;
1107. # ifdef LEXDEBUG
1108. 		if(debug)putchar('\n');
1109. # endif
1110. 		}
1111. 	}
1112. yyback(p, m)
1113. 	int *p;
1114. {
1115. if (p==0) return(0);
1116. while (*p)
1117. 	{
1118. 	if (*p++ == m)
1119. 		return(1);
1120. 	}
1121. return(0);
1122. }
1123. 	/* the following are only used in the lex library */
1124. yyinput(){
1125. 	return(input());
1126. 	}
1127. yyoutput(c)
1128.   int c; {
1129. 	output(c);
1130. 	}
1131. yyunput(c)
1132.    int c; {
1133. 	unput(c);
1134. 	}