home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch2u < prev    next >
Internet Message Format  |  1993-06-16  |  54KB

  1. Path: uunet!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v17i096:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch2u/33
  5. Date: 11 Jun 1993 00:15:16 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 1676
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <1v8iqk$j5u@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1783
  12.  
  13. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  14. Posting-number: Volume 17, Issue 96
  15. Archive-name: nethack31/Patch2u
  16. Patch-To: nethack31: Volume 16, Issue 1-116
  17. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  18.  
  19.  
  20.  
  21. #! /bin/sh
  22. # This is a shell archive.  Remove anything before this line, then unpack
  23. # it by saving it into a file and typing "sh file".  To overwrite existing
  24. # files, type "sh file -c".  You can also feed this as standard input via
  25. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  26. # will see the following message at the end:
  27. #        "End of archive 21 (of 33)."
  28. # Contents:  sys/share/lev_lex.c
  29. # Wrapped by billr@saab on Thu Jun 10 16:55:05 1993
  30. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  31. if test -f 'sys/share/lev_lex.c' -a "${1}" != "-c" ; then 
  32.   echo shar: Renaming existing file \"'sys/share/lev_lex.c'\" to \"'sys/share/lev_lex.c.orig'\"
  33.   mv -f 'sys/share/lev_lex.c' 'sys/share/lev_lex.c.orig'
  34. fi
  35. echo shar: Extracting \"'sys/share/lev_lex.c'\" \(50181 characters\)
  36. sed "s/^X//" >'sys/share/lev_lex.c' <<'END_OF_FILE'
  37. X/* A lexical scanner for NetHack generated by flex */
  38. X
  39. X/* scanner skeleton version:
  40. X * flexhack.skel 3.1.2 (from .../flex/RCS/flex.skel,v 2.16 90/08/03 14:09:36)
  41. X */
  42. X#define FLEX_SCANNER
  43. X
  44. X/* amount of stuff to slurp up with each read */
  45. X#ifndef YY_READ_BUF_SIZE
  46. X#define YY_READ_BUF_SIZE 8192
  47. X#endif
  48. X
  49. X/* returned upon end-of-file */
  50. X#define YY_END_TOK 0
  51. X
  52. X/* copy whatever the last rule matched to the standard output */
  53. X#define ECHO (void)fwrite((genericptr_t)yytext, yyleng, 1, yyout)
  54. X
  55. X/* gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
  56. X * is returned in "result".
  57. X */
  58. X#define YY_INPUT(buf,result,max_size) \
  59. X    if ((result = fread((genericptr_t)buf, 1, max_size, yyin)) <= 0 && \
  60. X        !feof(yyin))  YY_FATAL_ERROR( "fread(yyin) in flex scanner failed" );
  61. X#define YY_NULL 0
  62. X
  63. X/* no semi-colon after return; correct usage is to write "yyterminate();" */
  64. X#define yyterminate() return ( YY_NULL )
  65. X
  66. X/* report a fatal error */
  67. X#define YY_FATAL_ERROR(msg) \
  68. X    do { \
  69. X        (void) fputs( msg, stderr ); \
  70. X        (void) putc( '\n', stderr ); \
  71. X        exit( 1 ); \
  72. X    } while ( 0 )
  73. X
  74. X/* default yywrap function - always treat EOF as an EOF */
  75. X#define yywrap() 1
  76. X
  77. X/* enter a start condition.  This macro really ought to take a parameter,
  78. X * but we do it the disgusting crufty way forced on us by the ()-less
  79. X * definition of BEGIN
  80. X */
  81. X#define BEGIN yy_start = 1 + 2 *
  82. X
  83. X/* action number for EOF rule of a given start state */
  84. X#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
  85. X
  86. X/* special action meaning "start processing a new file" */
  87. X#define YY_NEW_FILE \
  88. X    do { \
  89. X        yy_init_buffer( yy_current_buffer, yyin ); \
  90. X        yy_load_buffer_state(); \
  91. X    } while ( 0 )
  92. X
  93. X/* default declaration of generated scanner - a define so the user can
  94. X * easily add parameters
  95. X */
  96. X#define YY_DECL int NDECL(yylex)
  97. X
  98. X/* code executed at the end of each rule */
  99. X#define YY_BREAK break;
  100. X
  101. X#define YY_END_OF_BUFFER_CHAR 0
  102. X
  103. X#ifndef YY_BUF_SIZE
  104. X#define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of default input buffer */
  105. X#endif
  106. X
  107. Xtypedef struct yy_buffer_state *YY_BUFFER_STATE;
  108. X
  109. X#define YY_CHAR char
  110. X#define INITIAL 0
  111. X/*    SCCS Id: @(#)lev_lex.c    3.1    93/05/27    */
  112. X/*    Copyright (c) 1989 by Jean-Christophe Collet */
  113. X/* NetHack may be freely redistributed.  See license for details. */
  114. X
  115. X#define LEV_LEX_C
  116. X
  117. X#include "hack.h"
  118. X#include "lev_comp.h"
  119. X#include "sp_lev.h"
  120. X
  121. X/* Most of these don't exist in flex, yywrap is macro and
  122. X * yyunput is properly declared in flex.skel.
  123. X */
  124. X#ifndef FLEX_SCANNER
  125. Xint FDECL (yyback, (int *, int));
  126. Xint NDECL (yylook);
  127. Xint NDECL (yyinput);
  128. Xint NDECL (yywrap);
  129. Xint NDECL (yylex);
  130. X    /* Traditional lexes let yyunput() and yyoutput() default to int;
  131. X     * newer ones may declare them as void since they don't return
  132. X     * values.  For even more fun, the lex supplied as part of the
  133. X     * newer unbundled compiler for SunOS 4.x adds the void declarations
  134. X     * (under __STDC__ or _cplusplus ifdefs -- otherwise they remain
  135. X     * int) while the bundled lex and the one with the older unbundled
  136. X     * compiler do not.  To detect this, we need help from outside --
  137. X     * sys/unix/Makefile.utl.
  138. X     */
  139. X# if defined(NeXT) || defined(SVR4)
  140. X#  define VOIDYYPUT
  141. X# endif
  142. X# if !defined(VOIDYYPUT)
  143. X#  if defined(POSIX_TYPES) && !defined(BOS) && !defined(HISX) && !defined(_M_UNIX)
  144. X#   define VOIDYYPUT
  145. X#  endif
  146. X# endif
  147. X# if !defined(VOIDYYPUT) && defined(WEIRD_LEX)
  148. X#  if defined(SUNOS4) && defined(__STDC__) && (WEIRD_LEX > 1) 
  149. X#   define VOIDYYPUT
  150. X#  endif
  151. X# endif
  152. X# ifdef VOIDYYPUT
  153. Xvoid FDECL (yyunput, (int));
  154. Xvoid FDECL (yyoutput, (int));
  155. X# else
  156. Xint FDECL (yyunput, (int));
  157. Xint FDECL (yyoutput, (int));
  158. X# endif
  159. X#endif    /* FLEX_SCANNER */
  160. X
  161. Xvoid FDECL (init_yyin, (FILE *));
  162. Xvoid FDECL (init_yyout, (FILE *));
  163. X
  164. X#ifdef MICRO
  165. X#undef exit
  166. Xextern void FDECL(exit, (int));
  167. X#endif
  168. X
  169. X/*
  170. X * This doesn't always get put in lev_comp.h
  171. X * (esp. when using older versions of bison).
  172. X */
  173. Xextern YYSTYPE yylval;
  174. X
  175. Xint line_number = 1, colon_line_number = 1;
  176. X
  177. X/*
  178. X * This is *** UGLY *** but I can't think a better way to do it;
  179. X * I really need a huge buffer to scan maps...
  180. X * (This should probably be `#ifndef FLEX_SCANNER' since it's lex-specific.)
  181. X */
  182. X#ifdef YYLMAX
  183. X#undef YYLMAX
  184. X#endif
  185. X#define YYLMAX    2048
  186. X
  187. X/*
  188. X *    This is a hack required by Michael Hamel to get things
  189. X *    working on the Mac.
  190. X */
  191. X#if defined(applec) && !defined(FLEX_SCANNER)
  192. X#undef input
  193. X#undef unput
  194. X#define unput(c) { yytchar = (c); if (yytchar == 10) yylineno--; *yysptr++ = yytchar; }
  195. X# ifndef YYNEWLINE
  196. X# define YYNEWLINE 10
  197. X# endif
  198. X
  199. Xchar
  200. Xinput() {    /* Under MPW \n is chr(13)! Compensate for this. */
  201. X
  202. X    if (yysptr > yysbuf) return(*--yysptr);
  203. X    else {
  204. X        yytchar = getc(yyin);
  205. X        if (yytchar == '\n') {
  206. X            yylineno++;
  207. X            return(YYNEWLINE);
  208. X        }
  209. X        if (yytchar == EOF) return(0);
  210. X        else            return(yytchar);
  211. X    }
  212. X}
  213. X#endif    /* applec && !FLEX_SCANNER */
  214. X
  215. X#define MAPC 1
  216. X
  217. X/* done after the current pattern has been matched and before the
  218. X * corresponding action - sets up yytext
  219. X */
  220. X#define YY_DO_BEFORE_ACTION \
  221. X    yytext = yy_bp; \
  222. X    yytext -= yy_more_len; \
  223. X    yyleng = yy_cp - yytext; \
  224. X    yy_hold_char = *yy_cp; \
  225. X    *yy_cp = '\0'; \
  226. X    yy_c_buf_p = yy_cp;
  227. X
  228. X#define EOB_ACT_CONTINUE_SCAN 0
  229. X#define EOB_ACT_END_OF_FILE 1
  230. X#define EOB_ACT_LAST_MATCH 2
  231. X
  232. X/* return all but the first 'n' matched characters back to the input stream */
  233. X#define yyless(n) \
  234. X    do { \
  235. X        /* undo effects of setting up yytext */ \
  236. X        *yy_cp = yy_hold_char; \
  237. X        yy_c_buf_p = yy_cp = yy_bp + n; \
  238. X        YY_DO_BEFORE_ACTION; /* set up yytext again */ \
  239. X    } while ( 0 )
  240. X
  241. X#define unput(c) yyunput((int)c, yytext)
  242. X
  243. X
  244. Xstruct yy_buffer_state {
  245. X    FILE *yy_input_file;
  246. X
  247. X    YY_CHAR *yy_ch_buf;        /* input buffer */
  248. X    YY_CHAR *yy_buf_pos;    /* current position in input buffer */
  249. X
  250. X    /* size of input buffer in bytes, not including room for EOB characters */
  251. X    int yy_buf_size;
  252. X
  253. X    /* number of characters read into yy_ch_buf, not including EOB characters */
  254. X    int yy_n_chars;
  255. X
  256. X    int yy_eof_status;        /* whether we've seen an EOF on this buffer */
  257. X#define EOF_NOT_SEEN 0
  258. X    /* "pending" happens when the EOF has been seen but there's still
  259. X     * some text process
  260. X     */
  261. X#define EOF_PENDING 1
  262. X#define EOF_DONE 2
  263. X};
  264. X
  265. Xstatic YY_BUFFER_STATE yy_current_buffer;
  266. X
  267. X/* we provide macros for accessing buffer states in case in the
  268. X * future we want to put the buffer states in a more general
  269. X * "scanner state"
  270. X */
  271. X#define YY_CURRENT_BUFFER yy_current_buffer
  272. X
  273. X
  274. X/* yy_hold_char holds the character lost when yytext is formed */
  275. Xstatic YY_CHAR yy_hold_char;
  276. X
  277. Xstatic int yy_n_chars;        /* number of characters read into yy_ch_buf */
  278. X
  279. X
  280. X#ifndef YY_USER_ACTION
  281. X#define YY_USER_ACTION
  282. X#endif
  283. X
  284. X#ifndef YY_USER_INIT
  285. X#define YY_USER_INIT
  286. X#endif
  287. X
  288. Xextern YY_CHAR *yytext;
  289. Xextern int yyleng;
  290. Xextern FILE *yyin, *yyout;
  291. X
  292. XYY_CHAR *yytext;
  293. Xint yyleng;
  294. X
  295. XFILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
  296. X
  297. X#define YY_END_OF_BUFFER 106
  298. Xtypedef int yy_state_type;
  299. Xstatic const short int yy_accept[573] =
  300. X    {   0,
  301. X        0,    0,    0,    0,  106,  104,  102,  101,  104,  104,
  302. X      104,   99,    4,  104,  104,  104,  104,  104,  104,  104,
  303. X      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
  304. X      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
  305. X      104,  104,  104,  104,  104,  104,  104,  104,  104,    2,
  306. X      102,  104,  104,  104,  104,  104,  104,  104,  104,  104,
  307. X      104,  104,  104,  102,    0,  100,    0,   99,    0,    0,
  308. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  309. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  310. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  311. X
  312. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  313. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  314. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  315. X        0,    0,    0,    0,    0,    0,    0,    0,   84,    0,
  316. X        0,    3,    0,    2,  102,    0,    0,    0,    0,    0,
  317. X        0,    0,    2,    0,  103,    0,    0,    0,    0,    0,
  318. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  319. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  320. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  321. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  322. X
  323. X        0,    0,    0,    0,    0,    0,    0,    0,   71,    0,
  324. X        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
  325. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  326. X        0,    0,    0,    0,    0,   64,    0,    0,    0,    0,
  327. X        0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
  328. X        0,    0,    0,    0,    0,   39,    0,    0,    0,    6,
  329. X        0,    0,   41,    0,    0,    0,   32,    0,    0,    0,
  330. X       35,   31,    0,    0,    0,   15,    0,    0,    0,    0,
  331. X        0,    0,    0,    0,   90,    0,    0,    0,    0,   85,
  332. X       88,   50,    0,    0,    0,    0,    0,    0,   59,    0,
  333. X
  334. X        0,    0,    0,    0,   91,    0,    0,    0,    0,    0,
  335. X       54,    0,    0,    0,   44,    0,    0,    0,    0,    0,
  336. X        0,    0,    0,   87,    0,    0,    0,   52,   12,    0,
  337. X        0,   24,    0,    0,    0,    0,    0,   10,    0,    0,
  338. X        0,    0,    8,    0,    0,    0,    7,    0,    0,    0,
  339. X        0,    0,    0,   26,    0,    0,    0,   58,   83,    0,
  340. X       77,    0,    0,    0,    0,   73,    0,    0,    0,   86,
  341. X        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  342. X        0,    0,    0,    0,   49,    0,    0,    0,   57,    0,
  343. X       63,    0,    0,    0,   51,    0,    0,   67,    0,    0,
  344. X
  345. X       29,   42,    0,    0,    0,    0,    0,    0,   25,    0,
  346. X        0,    0,    0,    0,   13,   27,    0,   20,    0,    0,
  347. X        0,   76,    0,   65,   48,   61,   45,   94,    0,   68,
  348. X        0,    0,    0,    0,    0,   46,    0,    0,    0,    0,
  349. X        0,    0,   47,   97,    0,   55,    0,   53,    0,    0,
  350. X       82,    0,    0,    1,    0,    0,    0,    0,    0,    0,
  351. X        0,    5,   14,    0,    0,    0,   36,    0,   19,   92,
  352. X       89,    0,    0,    0,   75,    0,    0,    0,    0,   56,
  353. X       72,   70,    0,    0,   81,    0,    0,    0,   38,    0,
  354. X        0,   30,   11,    9,   18,    0,    0,    0,    0,    0,
  355. X
  356. X        0,    0,    0,    0,    0,    0,    0,    0,   80,    0,
  357. X       74,    0,   93,   69,    0,   40,    0,    0,    0,    0,
  358. X        0,    0,    0,   60,    0,   96,   43,   78,   79,    0,
  359. X        0,   17,    0,    0,    0,    0,    0,    0,    0,   62,
  360. X       95,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  361. X       33,   34,    0,    0,    0,    0,    0,   98,    0,    0,
  362. X        0,   23,    0,    0,    0,   21,    0,    0,   22,   28,
  363. X       37,    0
  364. X    } ;
  365. X
  366. Xstatic const YY_CHAR yy_ec[128] =
  367. X    {   0,
  368. X        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
  369. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  370. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  371. X        1,    4,    1,    5,    6,    1,    1,    1,    7,    1,
  372. X        1,    1,    8,    1,    9,   10,    1,   11,   11,   11,
  373. X       11,   11,   11,   11,   11,   11,   11,   12,    1,    1,
  374. X        1,    1,    1,    1,   13,   14,   15,   16,   17,   18,
  375. X       19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
  376. X        1,   29,   30,   31,   32,   33,   34,    1,   35,   36,
  377. X        1,   10,    1,    1,   37,    1,   38,   39,   40,   41,
  378. X
  379. X       42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
  380. X       52,   53,    1,   54,   55,   56,   57,   58,   59,    1,
  381. X        1,    1,   10,   10,   10,    1,    1
  382. X    } ;
  383. X
  384. Xstatic const YY_CHAR yy_meta[60] =
  385. X    {   0,
  386. X        1,    2,    3,    2,    1,    2,    1,    2,    2,    2,
  387. X        1,    1,    2,    2,    2,    1,    1,    1,    1,    2,
  388. X        2,    1,    2,    2,    1,    1,    1,    2,    1,    2,
  389. X        1,    1,    1,    2,    1,    1,    1,    1,    1,    1,
  390. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  391. X        1,    1,    1,    1,    1,    1,    1,    1,    1
  392. X    } ;
  393. X
  394. Xstatic const short int yy_base[577] =
  395. X    {   0,
  396. X        0,   54,   77,   57,  674,  675,   60,  675,  668,    0,
  397. X      661,  660,  675,  646,  640,   41,   38,  642,   42,   57,
  398. X      641,   58,   76,   75,  652,  638,   82,   83,   79,  651,
  399. X       57,   68,   79,   20,   72,   32,   75,   88,   81,   87,
  400. X       92,   93,  100,   99,   89,   96,  621,  659,  135,  675,
  401. X      151,  154,  156,  158,  161,  166,  635,  163,  168,  152,
  402. X      156,  161,  191,  171,  655,  675,  652,  647,  626,  643,
  403. X      642,  625,  626,  639,  632,  637,  617,  621,  623,  625,
  404. X      629,  611,  607,  612,  615,  615,  166,  617,  169,  612,
  405. X      618,  609,  609,  621,  619,  608,  618,  606,  157,  580,
  406. X
  407. X      590,  585,  570,  573,  570,  572,  584,  569,  566,  560,
  408. X      563,  562,  572,  566,  565,  153,  558,  553,  165,  555,
  409. X      570,  166,  555,  557,  550,  179,  559,  563,  566,  565,
  410. X      551,  557,  549,  170,  542,  545,  540,  188,  675,  541,
  411. X      592,  675,  198,  675,  236,  239,  241,  167,   57,  232,
  412. X      233,  234,  675,    0,  675,  581,  567,  566,  562,  561,
  413. X      555,  559,  568,  560,  560,  568,  552,  566,  564,  563,
  414. X      549,  548,  560,  563,  538,  557,  549,  541,  555,  549,
  415. X      544,  545,  546,  537,  548,  536,  539,  518,  523,  518,
  416. X      511,  503,  501,  508,  504,  498,  501,  497,  496,  499,
  417. X
  418. X      493,  492,  493,  491,  496,  501,  502,  486,  675,  485,
  419. X      486,  675,  491,  496,  485,  497,  487,  479,  477,  483,
  420. X      479,  480,  487,  472,  485,  484,  474,  484,  483,  481,
  421. X      476,  480,  465,  472,  461,  675,  474,  458,  468,  467,
  422. X      456,  508,  239,  485,  240,  480,  493,  492,  485,  675,
  423. X      491,  491,  473,  471,  484,  675,  463,  482,  474,  463,
  424. X      483,  464,  675,  466,  238,  478,  675,  479,  464,  463,
  425. X      675,  675,  460,  461,  459,  675,  465,  434,  430,  441,
  426. X      440,  426,  428,  437,  675,  436,  422,  434,  433,  675,
  427. X      675,  675,  436,  431,  430,  462,  427,  423,  675,  426,
  428. X
  429. X      425,  428,  414,  417,  675,  407,  408,  415,  408,  421,
  430. X      675,  413,  408,  416,  675,  413,  412,  401,  396,  395,
  431. X      394,  398,  403,  675,  393,  397,  389,  675,  675,  431,
  432. X      250,  675,  423,  425,  425,  411,  406,  675,  425,  406,
  433. X      411,  406,  675,  421,  414,  415,  675,  410,  417,  398,
  434. X      404,  402,  400,  675,  398,  397,  405,  675,  675,  369,
  435. X      675,  379,  370,  368,  364,  675,  376,  375,  357,  675,
  436. X      373,  178,  364,  363,  367,  369,  353,  353,  365,  364,
  437. X      367,  360,  349,  349,  675,  359,  344,  356,  675,  348,
  438. X      675,  340,  341,  353,  675,  339,  344,  675,  364,  256,
  439. X
  440. X      675,  675,  364,  369,  368,  367,  358,  373,  675,  361,
  441. X      367,  354,  363,  351,  675,  675,  343,  675,  354,  349,
  442. X      342,  675,  335,  675,  675,  675,  675,  675,  333,  675,
  443. X      332,  327,  320,  329,  324,  675,  312,  312,  327,  312,
  444. X      316,  313,  675,  675,  310,  675,  305,  675,  311,  314,
  445. X      675,  317,  316,  675,  328,  340,  329,  328,  318,  324,
  446. X      328,  675,  675,  331,  319,  253,  675,  317,  675,  675,
  447. X      675,  304,  302,  293,  675,  292,  289,  300,  285,  675,
  448. X      675,  675,  288,  290,  675,  294,  296,  295,  675,  316,
  449. X      315,  675,  675,  675,  675,  320,  298,  304,  303,  315,
  450. X
  451. X      304,  290,  270,  280,  270,  272,  280,  267,  675,  266,
  452. X      675,  274,  675,  675,  301,  675,  303,  303,  286,  288,
  453. X      291,  299,  282,  675,  254,  675,  675,  675,  675,  253,
  454. X      252,  675,  283,  282,  276,  274,  286,  287,  284,  675,
  455. X      675,  258,  282,  274,  276,  265,  280,  277,  274,  251,
  456. X      675,  675,  263,  260,  245,  245,  249,  675,  235,  232,
  457. X      230,  675,  228,  207,  180,  675,  124,  102,  675,  675,
  458. X      675,  675,  281,  284,  286,  288
  459. X    } ;
  460. X
  461. Xstatic const short int yy_def[577] =
  462. X    {   0,
  463. X      572,    1,    1,    3,  572,  572,  572,  572,  573,  574,
  464. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  465. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  466. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  467. X      572,  572,  572,  572,  572,  572,  572,  575,  572,  572,
  468. X      576,  576,  576,  576,  576,  576,  572,  576,  576,   56,
  469. X       56,   59,  575,  572,  573,  572,  572,  572,  572,  572,
  470. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  471. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  472. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  473. X
  474. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  475. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  476. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  477. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  478. X      575,  572,  572,  572,  576,  576,  576,   59,  572,   59,
  479. X       59,   59,  572,   63,  572,  572,  572,  572,  572,  572,
  480. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  481. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  482. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  483. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  484. X
  485. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  486. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  487. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  488. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  489. X      572,  572,   59,  572,   59,  572,  572,  572,  572,  572,
  490. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  491. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  492. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  493. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  494. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  495. X
  496. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  497. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  498. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  499. X       59,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  500. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  501. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  502. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  503. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  504. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  505. X      572,  572,  572,  572,  572,  572,  572,  572,  572,   59,
  506. X
  507. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  508. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  509. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  510. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  511. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  512. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  513. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  514. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  515. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  516. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  517. X
  518. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  519. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  520. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  521. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  522. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  523. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  524. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  525. X      572,    0,  572,  572,  572,  572
  526. X    } ;
  527. X
  528. Xstatic const short int yy_nxt[735] =
  529. X    {   0,
  530. X        6,    7,    8,    7,    9,    6,   10,   11,   11,    6,
  531. X       12,   13,   14,   15,   16,   17,   18,   19,   20,    6,
  532. X       21,    6,    6,   22,   23,   24,   25,   26,   27,   28,
  533. X       29,    6,    6,   30,    6,    6,    6,   31,   32,   33,
  534. X       34,   35,   36,    6,   37,    6,    6,    6,   38,   39,
  535. X       40,   41,   42,   43,   44,   45,   46,    6,   47,   48,
  536. X       71,   64,   63,   64,   73,   76,   74,   72,   77,  114,
  537. X       81,  110,  244,   78,   82,  162,  111,  115,   49,   50,
  538. X       51,   49,   52,   79,   53,   53,   52,   86,   83,   54,
  539. X       55,   56,   84,   57,   90,   96,   52,   58,   91,   52,
  540. X
  541. X       59,   87,   85,   93,   60,   99,   61,   97,   92,  112,
  542. X       62,  100,  116,   94,   95,  101,  102,  122,  123,  103,
  543. X      106,  104,  113,  107,  105,  118,  117,  108,  125,  119,
  544. X      127,  571,  124,  120,  129,  109,  133,  131,  126,  121,
  545. X      136,  130,  137,  134,  128,  132,  138,  143,  139,  570,
  546. X      135,   84,   64,  144,  145,  572,  144,  572,  144,  572,
  547. X      144,   85,  572,  144,  572,  144,   68,  572,  144,  572,
  548. X      144,  146,   64,  152,   64,  146,  151,  572,   89,  243,
  549. X      150,  147,  572,  572,   82,  148,   94,   95,   80,   70,
  550. X      174,  175,   72,  153,  154,  177,  154,  178,  154,  154,
  551. X
  552. X      154,  206,  188,  154,  154,  154,  207,  210,  214,  569,
  553. X      154,  154,  189,  154,  154,  215,  220,  216,  154,  221,
  554. X      154,  233,  211,  234,  154,  242,  431,  238,  222,  223,
  555. X      239,  432,  224,  170,  225,  568,  240,   64,  144,  145,
  556. X      572,  144,  572,  144,  146,  146,  146,  168,  572,  572,
  557. X      572,  146,  146,  348,  567,  572,  572,  245,  182,  566,
  558. X      565,  564,  146,  331,  248,  349,  572,  498,  146,  563,
  559. X      400,  156,  572,  421,  562,  561,  560,  499,  559,  500,
  560. X      501,   65,   65,   65,   67,   67,  141,  141,  141,  146,
  561. X      146,  558,  557,  556,  555,  554,  553,  552,  551,  550,
  562. X
  563. X      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
  564. X      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
  565. X      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
  566. X      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
  567. X      509,  508,  507,  506,  505,  504,  503,  502,  497,  496,
  568. X      495,  494,  493,  492,  491,  490,  489,  488,  487,  486,
  569. X      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
  570. X      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
  571. X      465,  464,  463,  462,  461,  460,  459,  458,  457,  456,
  572. X      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
  573. X
  574. X      445,  444,  443,  442,  441,  440,  439,  438,  437,  436,
  575. X      435,  434,  433,  430,  429,  428,  427,  426,  425,  424,
  576. X      423,  422,  421,  420,  419,  418,  417,  416,  415,  414,
  577. X      413,  412,  411,  410,  409,  408,  407,  406,  405,  404,
  578. X      403,  402,  401,  399,  398,  397,  396,  395,  394,  393,
  579. X      392,  391,  390,  389,  388,  387,  386,  385,  384,  383,
  580. X      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
  581. X      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
  582. X      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
  583. X      352,  351,  350,  347,  346,  345,  344,  343,  342,  341,
  584. X
  585. X      340,  339,  338,  337,  336,  335,  334,  333,  332,  330,
  586. X      329,  328,  327,  326,  325,  324,  323,  322,  321,  320,
  587. X      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
  588. X      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
  589. X      299,  298,  297,  296,  295,  294,  293,  292,  291,  290,
  590. X      289,  288,  287,  286,  285,  284,  283,  282,  281,  280,
  591. X      279,  278,  277,  276,  275,  274,  273,  272,  271,  270,
  592. X      269,  268,  267,  266,  265,  264,  263,  262,  261,  260,
  593. X      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
  594. X      249,  248,  247,  246,  142,  241,  237,  236,  235,  232,
  595. X
  596. X      231,  230,  229,  228,  227,  226,  219,  218,  217,  213,
  597. X      212,  209,  208,  205,  204,  203,  202,  201,  200,  199,
  598. X      198,  197,  196,  195,  194,  193,  192,  191,  190,  187,
  599. X      186,  185,  184,  183,  182,  181,  180,  179,  176,  173,
  600. X      172,  171,  170,  169,  168,  167,  166,  165,  164,  163,
  601. X      162,  161,  160,  159,  158,  157,  156,   68,  155,   66,
  602. X      149,  142,  140,   98,   89,   88,   80,   75,   70,   69,
  603. X       68,   68,   66,  572,    5,  572,  572,  572,  572,  572,
  604. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  605. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  606. X
  607. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  608. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  609. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  610. X      572,  572,  572,  572
  611. X    } ;
  612. X
  613. Xstatic const short int yy_chk[735] =
  614. X    {   0,
  615. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  616. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  617. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  618. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  619. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  620. X        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
  621. X       16,    7,    4,    7,   17,   19,   17,   16,   19,   36,
  622. X       22,   34,  149,   20,   22,  149,   34,   36,    2,    3,
  623. X        3,    4,    3,   20,    3,    3,    3,   24,   23,    3,
  624. X        3,    3,   23,    3,   27,   29,    3,    3,   27,    3,
  625. X
  626. X        3,   24,   23,   28,    3,   31,    3,   29,   27,   35,
  627. X        3,   31,   37,   28,   28,   31,   32,   39,   39,   32,
  628. X       33,   32,   35,   33,   32,   38,   37,   33,   40,   38,
  629. X       41,  568,   39,   38,   42,   33,   44,   43,   40,   38,
  630. X       45,   42,   45,   44,   41,   43,   46,   49,   46,  567,
  631. X       44,   49,   51,   51,   51,   52,   52,   53,   53,   54,
  632. X       54,   49,   55,   55,   58,   58,   53,   56,   56,   59,
  633. X       59,   60,   64,   62,   64,   61,   61,   62,   60,  148,
  634. X       59,   54,   61,  148,   59,   56,   61,   61,   58,   55,
  635. X       87,   87,   56,   63,   63,   89,   63,   89,   63,   63,
  636. X
  637. X       63,  116,   99,   63,   63,   63,  116,  119,  122,  565,
  638. X       63,   63,   99,   63,   63,  122,  126,  122,   63,  126,
  639. X       63,  134,  119,  134,   63,  143,  372,  138,  126,  126,
  640. X      138,  372,  126,  143,  126,  564,  138,  145,  145,  145,
  641. X      146,  146,  147,  147,  150,  151,  152,  150,  150,  151,
  642. X      152,  243,  245,  265,  563,  243,  245,  152,  151,  561,
  643. X      560,  559,  331,  245,  243,  265,  331,  466,  400,  557,
  644. X      331,  147,  400,  400,  556,  555,  554,  466,  553,  466,
  645. X      466,  573,  573,  573,  574,  574,  575,  575,  575,  576,
  646. X      576,  550,  549,  548,  547,  546,  545,  544,  543,  542,
  647. X
  648. X      539,  538,  537,  536,  535,  534,  533,  531,  530,  525,
  649. X      523,  522,  521,  520,  519,  518,  517,  515,  512,  510,
  650. X      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
  651. X      498,  497,  496,  491,  490,  488,  487,  486,  484,  483,
  652. X      479,  478,  477,  476,  474,  473,  472,  468,  465,  464,
  653. X      461,  460,  459,  458,  457,  456,  455,  453,  452,  450,
  654. X      449,  447,  445,  442,  441,  440,  439,  438,  437,  435,
  655. X      434,  433,  432,  431,  429,  423,  421,  420,  419,  417,
  656. X      414,  413,  412,  411,  410,  408,  407,  406,  405,  404,
  657. X      403,  399,  397,  396,  394,  393,  392,  390,  388,  387,
  658. X
  659. X      386,  384,  383,  382,  381,  380,  379,  378,  377,  376,
  660. X      375,  374,  373,  371,  369,  368,  367,  365,  364,  363,
  661. X      362,  360,  357,  356,  355,  353,  352,  351,  350,  349,
  662. X      348,  346,  345,  344,  342,  341,  340,  339,  337,  336,
  663. X      335,  334,  333,  330,  327,  326,  325,  323,  322,  321,
  664. X      320,  319,  318,  317,  316,  314,  313,  312,  310,  309,
  665. X      308,  307,  306,  304,  303,  302,  301,  300,  298,  297,
  666. X      296,  295,  294,  293,  289,  288,  287,  286,  284,  283,
  667. X      282,  281,  280,  279,  278,  277,  275,  274,  273,  270,
  668. X      269,  268,  266,  264,  262,  261,  260,  259,  258,  257,
  669. X
  670. X      255,  254,  253,  252,  251,  249,  248,  247,  246,  244,
  671. X      242,  241,  240,  239,  238,  237,  235,  234,  233,  232,
  672. X      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
  673. X      221,  220,  219,  218,  217,  216,  215,  214,  213,  211,
  674. X      210,  208,  207,  206,  205,  204,  203,  202,  201,  200,
  675. X      199,  198,  197,  196,  195,  194,  193,  192,  191,  190,
  676. X      189,  188,  187,  186,  185,  184,  183,  182,  181,  180,
  677. X      179,  178,  177,  176,  175,  174,  173,  172,  171,  170,
  678. X      169,  168,  167,  166,  165,  164,  163,  162,  161,  160,
  679. X      159,  158,  157,  156,  141,  140,  137,  136,  135,  133,
  680. X
  681. X      132,  131,  130,  129,  128,  127,  125,  124,  123,  121,
  682. X      120,  118,  117,  115,  114,  113,  112,  111,  110,  109,
  683. X      108,  107,  106,  105,  104,  103,  102,  101,  100,   98,
  684. X       97,   96,   95,   94,   93,   92,   91,   90,   88,   86,
  685. X       85,   84,   83,   82,   81,   80,   79,   78,   77,   76,
  686. X       75,   74,   73,   72,   71,   70,   69,   68,   67,   65,
  687. X       57,   48,   47,   30,   26,   25,   21,   18,   15,   14,
  688. X       12,   11,    9,    5,  572,  572,  572,  572,  572,  572,
  689. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  690. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  691. X
  692. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  693. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  694. X      572,  572,  572,  572,  572,  572,  572,  572,  572,  572,
  695. X      572,  572,  572,  572
  696. X    } ;
  697. X
  698. Xstatic yy_state_type yy_last_accepting_state;
  699. Xstatic YY_CHAR *yy_last_accepting_cpos;
  700. X
  701. X/* the intent behind this definition is that it'll catch
  702. X * any uses of REJECT which flex missed
  703. X */
  704. X#define REJECT reject_used_but_not_detected
  705. Xstatic int yy_more_flag = 0;
  706. Xstatic int yy_doing_yy_more = 0;
  707. Xstatic int yy_more_len = 0;
  708. X#define yymore() { yy_more_flag = 1; }
  709. X#define YY_MORE_ADJ (yy_doing_yy_more ? yy_more_len : 0)
  710. X
  711. X/* these variables are all declared out here so that section 3 code can
  712. X * manipulate them
  713. X */
  714. X/* points to current character in buffer */
  715. Xstatic YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0;
  716. Xstatic int yy_init = 1;        /* whether we need to initialize */
  717. Xstatic int yy_start = 0;    /* start state number */
  718. X
  719. X/* flag which is used to allow yywrap()'s to do buffer switches
  720. X * instead of setting up a fresh yyin.  A bit of a hack ...
  721. X */
  722. Xstatic int yy_did_buffer_switch_on_eof;
  723. X
  724. Xstatic yy_state_type NDECL(yy_get_previous_state);
  725. Xstatic yy_state_type FDECL(yy_try_NUL_trans, (yy_state_type));
  726. Xstatic int NDECL(yy_get_next_buffer);
  727. X#if 0        /* not needed for NetHack */
  728. Xstatic int NDECL(yyinput);
  729. Xstatic void FDECL(yyunput, (int,YY_CHAR *));
  730. X#endif
  731. Xvoid FDECL(yyrestart, (FILE *));
  732. Xvoid FDECL(yy_switch_to_buffer, (YY_BUFFER_STATE));
  733. Xvoid NDECL(yy_load_buffer_state);
  734. XYY_BUFFER_STATE FDECL(yy_create_buffer, (FILE *,int));
  735. Xvoid FDECL(yy_delete_buffer, (YY_BUFFER_STATE));
  736. Xvoid FDECL(yy_init_buffer, (YY_BUFFER_STATE,FILE *));
  737. X
  738. X#define yy_new_buffer yy_create_buffer
  739. X
  740. XYY_DECL
  741. X{
  742. X    register yy_state_type yy_current_state;
  743. X    register YY_CHAR *yy_cp, *yy_bp;
  744. X    register int yy_act;
  745. X
  746. X
  747. X
  748. X    if ( yy_init )
  749. X    {
  750. X    YY_USER_INIT;
  751. X
  752. X    if ( ! yy_start )
  753. X        yy_start = 1;    /* first start state */
  754. X
  755. X    if ( ! yyin )
  756. X        yyin = stdin;
  757. X
  758. X    if ( ! yyout )
  759. X        yyout = stdout;
  760. X
  761. X    if ( yy_current_buffer )
  762. X        yy_init_buffer( yy_current_buffer, yyin );
  763. X    else
  764. X        yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
  765. X
  766. X    yy_load_buffer_state();
  767. X
  768. X    yy_init = 0;
  769. X    }
  770. X
  771. X    while ( 1 )        /* loops until end-of-file is reached */
  772. X    {
  773. X    yy_more_len = 0;
  774. X    yy_doing_yy_more = yy_more_flag;
  775. X    if ( yy_doing_yy_more )
  776. X        {
  777. X        yy_more_len = yyleng;
  778. X        yy_more_flag = 0;
  779. X        }
  780. X    yy_cp = yy_c_buf_p;
  781. X
  782. X    /* support of yytext */
  783. X    *yy_cp = yy_hold_char;
  784. X
  785. X    /* yy_bp points to the position in yy_ch_buf of the start of the
  786. X     * current run.
  787. X     */
  788. X    yy_bp = yy_cp;
  789. X
  790. X    yy_current_state = yy_start;
  791. X    if ( yy_bp[-1] == '\n' )
  792. X        ++yy_current_state;
  793. Xyy_match:
  794. X    do
  795. X        {
  796. X        register YY_CHAR yy_c = yy_ec[*yy_cp];
  797. X        if ( yy_accept[yy_current_state] )
  798. X        {
  799. X        yy_last_accepting_state = yy_current_state;
  800. X        yy_last_accepting_cpos = yy_cp;
  801. X        }
  802. X        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  803. X        {
  804. X        yy_current_state = yy_def[yy_current_state];
  805. X        if ( yy_current_state >= 573 )
  806. X            yy_c = yy_meta[yy_c];
  807. X        }
  808. X        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
  809. X        ++yy_cp;
  810. X        }
  811. X    while ( yy_current_state != 572 );
  812. X    yy_cp = yy_last_accepting_cpos;
  813. X    yy_current_state = yy_last_accepting_state;
  814. X
  815. Xyy_find_action:
  816. X    yy_act = yy_accept[yy_current_state];
  817. X
  818. X    YY_DO_BEFORE_ACTION;
  819. X    YY_USER_ACTION;
  820. X
  821. Xdo_action:    /* this label is used only to access EOF actions */
  822. X
  823. X
  824. X    switch ( yy_act )
  825. X        {
  826. X        case 0: /* must backtrack */
  827. X        /* undo the effects of YY_DO_BEFORE_ACTION */
  828. X        *yy_cp = yy_hold_char;
  829. X        yy_cp = yy_last_accepting_cpos;
  830. X        yy_current_state = yy_last_accepting_state;
  831. X        goto yy_find_action;
  832. X
  833. Xcase 1:
  834. X{
  835. X#ifdef FLEX23_BUG
  836. X          /*
  837. X           * There is a bug in Flex 2.3 patch level < 6
  838. X           * (absent in previous versions)
  839. X           * that results in the following behaviour :
  840. X           * Once you enter an yymore(), you never exit from it.
  841. X           * This should do the trick!
  842. X           */
  843. X          extern int yy_more_len;
  844. X
  845. X          yy_more_len = 0;
  846. X#endif
  847. X          BEGIN(INITIAL);
  848. X          yylval.map = (char *) alloc(yyleng-5);
  849. X          strncpy(yylval.map, yytext,yyleng-6);
  850. X          yylval.map[yyleng-6] = 0;
  851. X          return MAP_ID;
  852. X        }
  853. X    YY_BREAK
  854. Xcase 2:
  855. X{ line_number++; yymore(); }
  856. X    YY_BREAK
  857. Xcase 3:
  858. X{ line_number++; }
  859. X    YY_BREAK
  860. Xcase 4:
  861. X{ colon_line_number = line_number; return ':'; }
  862. X    YY_BREAK
  863. Xcase 5:
  864. Xreturn MESSAGE_ID;
  865. X    YY_BREAK
  866. Xcase 6:
  867. Xreturn MAZE_ID;
  868. X    YY_BREAK
  869. Xcase 7:
  870. Xreturn NOMAP_ID;
  871. X    YY_BREAK
  872. Xcase 8:
  873. Xreturn LEVEL_ID;
  874. X    YY_BREAK
  875. Xcase 9:
  876. Xreturn LEV_INIT_ID;
  877. X    YY_BREAK
  878. Xcase 10:
  879. Xreturn FLAGS_ID;
  880. X    YY_BREAK
  881. Xcase 11:
  882. Xreturn GEOMETRY_ID;
  883. X    YY_BREAK
  884. Xcase 12:
  885. X{ BEGIN(MAPC); line_number++; }
  886. X    YY_BREAK
  887. Xcase 13:
  888. Xreturn OBJECT_ID;
  889. X    YY_BREAK
  890. Xcase 14:
  891. Xreturn MONSTER_ID;
  892. X    YY_BREAK
  893. Xcase 15:
  894. Xreturn TRAP_ID;
  895. X    YY_BREAK
  896. Xcase 16:
  897. Xreturn DOOR_ID;
  898. X    YY_BREAK
  899. Xcase 17:
  900. Xreturn DRAWBRIDGE_ID;
  901. X    YY_BREAK
  902. Xcase 18:
  903. Xreturn MAZEWALK_ID;
  904. X    YY_BREAK
  905. Xcase 19:
  906. Xreturn WALLIFY_ID;
  907. X    YY_BREAK
  908. Xcase 20:
  909. Xreturn REGION_ID;
  910. X    YY_BREAK
  911. Xcase 21:
  912. Xreturn RANDOM_OBJECTS_ID;
  913. X    YY_BREAK
  914. Xcase 22:
  915. Xreturn RANDOM_MONSTERS_ID;
  916. X    YY_BREAK
  917. Xcase 23:
  918. Xreturn RANDOM_PLACES_ID;
  919. X    YY_BREAK
  920. Xcase 24:
  921. Xreturn ALTAR_ID;
  922. X    YY_BREAK
  923. Xcase 25:
  924. Xreturn LADDER_ID;
  925. X    YY_BREAK
  926. Xcase 26:
  927. Xreturn STAIR_ID;
  928. X    YY_BREAK
  929. Xcase 27:
  930. Xreturn PORTAL_ID;
  931. X    YY_BREAK
  932. Xcase 28:
  933. Xreturn TELEPRT_ID;
  934. X    YY_BREAK
  935. Xcase 29:
  936. Xreturn BRANCH_ID;
  937. X    YY_BREAK
  938. Xcase 30:
  939. Xreturn FOUNTAIN_ID;
  940. X    YY_BREAK
  941. Xcase 31:
  942. Xreturn SINK_ID;
  943. X    YY_BREAK
  944. Xcase 32:
  945. Xreturn POOL_ID;
  946. X    YY_BREAK
  947. Xcase 33:
  948. Xreturn NON_DIGGABLE_ID;
  949. X    YY_BREAK
  950. Xcase 34:
  951. Xreturn NON_PASSWALL_ID;
  952. X    YY_BREAK
  953. Xcase 35:
  954. Xreturn ROOM_ID;
  955. X    YY_BREAK
  956. Xcase 36:
  957. Xreturn SUBROOM_ID;
  958. X    YY_BREAK
  959. Xcase 37:
  960. Xreturn RAND_CORRIDOR_ID;
  961. X    YY_BREAK
  962. Xcase 38:
  963. Xreturn CORRIDOR_ID;
  964. X    YY_BREAK
  965. Xcase 39:
  966. Xreturn GOLD_ID;
  967. X    YY_BREAK
  968. Xcase 40:
  969. Xreturn ENGRAVING_ID;
  970. X    YY_BREAK
  971. Xcase 41:
  972. Xreturn NAME_ID;
  973. X    YY_BREAK
  974. Xcase 42:
  975. Xreturn CHANCE_ID;
  976. X    YY_BREAK
  977. Xcase 43:
  978. Xreturn LEV;
  979. X    YY_BREAK
  980. Xcase 44:
  981. X{ yylval.i=D_ISOPEN; return DOOR_STATE; }
  982. X    YY_BREAK
  983. Xcase 45:
  984. X{ yylval.i=D_CLOSED; return DOOR_STATE; }
  985. X    YY_BREAK
  986. Xcase 46:
  987. X{ yylval.i=D_LOCKED; return DOOR_STATE; }
  988. X    YY_BREAK
  989. Xcase 47:
  990. X{ yylval.i=D_NODOOR; return DOOR_STATE; }
  991. X    YY_BREAK
  992. Xcase 48:
  993. X{ yylval.i=D_BROKEN; return DOOR_STATE; }
  994. X    YY_BREAK
  995. Xcase 49:
  996. X{ yylval.i=W_NORTH; return DIRECTION; }
  997. X    YY_BREAK
  998. Xcase 50:
  999. X{ yylval.i=W_EAST; return DIRECTION; }
  1000. X    YY_BREAK
  1001. Xcase 51:
  1002. X{ yylval.i=W_SOUTH; return DIRECTION; }
  1003. X    YY_BREAK
  1004. Xcase 52:
  1005. X{ yylval.i=W_WEST; return DIRECTION; }
  1006. X    YY_BREAK
  1007. Xcase 53:
  1008. X{ yylval.i = -1; return RANDOM_TYPE; }
  1009. X    YY_BREAK
  1010. Xcase 54:
  1011. X{ yylval.i = -2; return NONE; }
  1012. X    YY_BREAK
  1013. Xcase 55:
  1014. Xreturn O_REGISTER;
  1015. X    YY_BREAK
  1016. Xcase 56:
  1017. Xreturn M_REGISTER;
  1018. X    YY_BREAK
  1019. Xcase 57:
  1020. Xreturn P_REGISTER;
  1021. X    YY_BREAK
  1022. Xcase 58:
  1023. Xreturn A_REGISTER;
  1024. X    YY_BREAK
  1025. Xcase 59:
  1026. X{ yylval.i=1; return LEFT_OR_RIGHT; }
  1027. X    YY_BREAK
  1028. Xcase 60:
  1029. X{ yylval.i=2; return LEFT_OR_RIGHT; }
  1030. X    YY_BREAK
  1031. Xcase 61:
  1032. X{ yylval.i=3; return CENTER; }
  1033. X    YY_BREAK
  1034. Xcase 62:
  1035. X{ yylval.i=4; return LEFT_OR_RIGHT; }
  1036. X    YY_BREAK
  1037. Xcase 63:
  1038. X{ yylval.i=5; return LEFT_OR_RIGHT; }
  1039. X    YY_BREAK
  1040. Xcase 64:
  1041. X{ yylval.i=1; return TOP_OR_BOT; }
  1042. X    YY_BREAK
  1043. Xcase 65:
  1044. X{ yylval.i=5; return TOP_OR_BOT; }
  1045. X    YY_BREAK
  1046. Xcase 66:
  1047. X{ yylval.i=1; return LIGHT_STATE; }
  1048. X    YY_BREAK
  1049. Xcase 67:
  1050. X{ yylval.i=0; return LIGHT_STATE; }
  1051. X    YY_BREAK
  1052. Xcase 68:
  1053. X{ yylval.i=0; return FILLING; }
  1054. X    YY_BREAK
  1055. Xcase 69:
  1056. X{ yylval.i=1; return FILLING; }
  1057. X    YY_BREAK
  1058. Xcase 70:
  1059. X{ yylval.i= AM_NONE; return ALIGNMENT; }
  1060. X    YY_BREAK
  1061. Xcase 71:
  1062. X{ yylval.i= AM_LAWFUL; return ALIGNMENT; }
  1063. X    YY_BREAK
  1064. Xcase 72:
  1065. X{ yylval.i= AM_NEUTRAL; return ALIGNMENT; }
  1066. X    YY_BREAK
  1067. Xcase 73:
  1068. X{ yylval.i= AM_CHAOTIC; return ALIGNMENT; }
  1069. X    YY_BREAK
  1070. Xcase 74:
  1071. X{ yylval.i=1; return MON_ATTITUDE; }
  1072. X    YY_BREAK
  1073. Xcase 75:
  1074. X{ yylval.i=0; return MON_ATTITUDE; }
  1075. X    YY_BREAK
  1076. Xcase 76:
  1077. X{ yylval.i=1; return MON_ALERTNESS; }
  1078. X    YY_BREAK
  1079. Xcase 77:
  1080. X{ yylval.i=0; return MON_ALERTNESS; }
  1081. X    YY_BREAK
  1082. Xcase 78:
  1083. X{ yylval.i= M_AP_FURNITURE; return MON_APPEARANCE; }
  1084. X    YY_BREAK
  1085. Xcase 79:
  1086. X{ yylval.i= M_AP_MONSTER;   return MON_APPEARANCE; }
  1087. X    YY_BREAK
  1088. Xcase 80:
  1089. X{ yylval.i= M_AP_OBJECT;    return MON_APPEARANCE; }
  1090. X    YY_BREAK
  1091. Xcase 81:
  1092. X{ yylval.i=2; return ALTAR_TYPE; }
  1093. X    YY_BREAK
  1094. Xcase 82:
  1095. X{ yylval.i=1; return ALTAR_TYPE; }
  1096. X    YY_BREAK
  1097. Xcase 83:
  1098. X{ yylval.i=0; return ALTAR_TYPE; }
  1099. X    YY_BREAK
  1100. Xcase 84:
  1101. X{ yylval.i=1; return UP_OR_DOWN; }
  1102. X    YY_BREAK
  1103. Xcase 85:
  1104. X{ yylval.i=0; return UP_OR_DOWN; }
  1105. X    YY_BREAK
  1106. Xcase 86:
  1107. X{ yylval.i=0; return BOOLEAN; }
  1108. X    YY_BREAK
  1109. Xcase 87:
  1110. X{ yylval.i=1; return BOOLEAN; }
  1111. X    YY_BREAK
  1112. Xcase 88:
  1113. X{ yylval.i=DUST; return ENGRAVING_TYPE; }
  1114. X    YY_BREAK
  1115. Xcase 89:
  1116. X{ yylval.i=ENGRAVE; return ENGRAVING_TYPE; }
  1117. X    YY_BREAK
  1118. Xcase 90:
  1119. X{ yylval.i=BURN; return ENGRAVING_TYPE; }
  1120. X    YY_BREAK
  1121. Xcase 91:
  1122. X{ yylval.i=MARK; return ENGRAVING_TYPE; }
  1123. X    YY_BREAK
  1124. Xcase 92:
  1125. X{ yylval.i=1; return CURSE_TYPE; }
  1126. X    YY_BREAK
  1127. Xcase 93:
  1128. X{ yylval.i=2; return CURSE_TYPE; }
  1129. X    YY_BREAK
  1130. Xcase 94:
  1131. X{ yylval.i=3; return CURSE_TYPE; }
  1132. X    YY_BREAK
  1133. Xcase 95:
  1134. X{ yylval.i=NOTELEPORT; return FLAG_TYPE; }
  1135. X    YY_BREAK
  1136. Xcase 96:
  1137. X{ yylval.i=HARDFLOOR; return FLAG_TYPE; }
  1138. X    YY_BREAK
  1139. Xcase 97:
  1140. X{ yylval.i=NOMMAP; return FLAG_TYPE; }
  1141. X    YY_BREAK
  1142. Xcase 98:
  1143. X{ yylval.i=SHORTSIGHTED; return FLAG_TYPE; }
  1144. X    YY_BREAK
  1145. Xcase 99:
  1146. X{ yylval.i=atoi(yytext); return INTEGER; }
  1147. X    YY_BREAK
  1148. Xcase 100:
  1149. X{ yytext[yyleng-1] = 0; /* Discard the trailing \" */
  1150. X          yylval.map = (char *) alloc(strlen(yytext+1)+1);
  1151. X          strcpy(yylval.map, yytext+1); /* Discard the first \" */
  1152. X          return STRING; }
  1153. X    YY_BREAK
  1154. Xcase 101:
  1155. X{ line_number++; }
  1156. X    YY_BREAK
  1157. Xcase 102:
  1158. X;
  1159. X    YY_BREAK
  1160. Xcase 103:
  1161. X{ yylval.i = yytext[1]; return CHAR; }
  1162. X    YY_BREAK
  1163. Xcase 104:
  1164. X{ return yytext[0]; }
  1165. X    YY_BREAK
  1166. Xcase 105:
  1167. XECHO;
  1168. X    YY_BREAK
  1169. Xcase YY_STATE_EOF(INITIAL):
  1170. Xcase YY_STATE_EOF(MAPC):
  1171. X    yyterminate();
  1172. X
  1173. X        case YY_END_OF_BUFFER:
  1174. X        {
  1175. X        /* amount of text matched not including the EOB char */
  1176. X        int yy_amount_of_matched_text = yy_cp - yytext - 1;
  1177. X
  1178. X        /* undo the effects of YY_DO_BEFORE_ACTION */
  1179. X        *yy_cp = yy_hold_char;
  1180. X
  1181. X        /* note that here we test for yy_c_buf_p "<=" to the position
  1182. X         * of the first EOB in the buffer, since yy_c_buf_p will
  1183. X         * already have been incremented past the NUL character
  1184. X         * (since all states make transitions on EOB to the end-
  1185. X         * of-buffer state).  Contrast this with the test in yyinput().
  1186. X         */
  1187. X        if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  1188. X            /* this was really a NUL */
  1189. X            {
  1190. X            yy_state_type yy_next_state;
  1191. X
  1192. X            yy_c_buf_p = yytext + yy_amount_of_matched_text;
  1193. X
  1194. X            yy_current_state = yy_get_previous_state();
  1195. X
  1196. X            /* okay, we're now positioned to make the
  1197. X             * NUL transition.  We couldn't have
  1198. X             * yy_get_previous_state() go ahead and do it
  1199. X             * for us because it doesn't know how to deal
  1200. X             * with the possibility of jamming (and we
  1201. X             * don't want to build jamming into it because
  1202. X             * then it will run more slowly)
  1203. X             */
  1204. X
  1205. X            yy_next_state = yy_try_NUL_trans( yy_current_state );
  1206. X
  1207. X            yy_bp = yytext + YY_MORE_ADJ;
  1208. X
  1209. X            if ( yy_next_state )
  1210. X            {
  1211. X            /* consume the NUL */
  1212. X            yy_cp = ++yy_c_buf_p;
  1213. X            yy_current_state = yy_next_state;
  1214. X            goto yy_match;
  1215. X            }
  1216. X
  1217. X            else
  1218. X            {
  1219. X                yy_cp = yy_last_accepting_cpos;
  1220. X                yy_current_state = yy_last_accepting_state;
  1221. X            goto yy_find_action;
  1222. X            }
  1223. X            }
  1224. X
  1225. X        else switch ( yy_get_next_buffer() )
  1226. X            {
  1227. X            case EOB_ACT_END_OF_FILE:
  1228. X            {
  1229. X            yy_did_buffer_switch_on_eof = 0;
  1230. X
  1231. X            if ( yywrap() )
  1232. X                {
  1233. X                /* note: because we've taken care in
  1234. X                 * yy_get_next_buffer() to have set up yytext,
  1235. X                 * we can now set up yy_c_buf_p so that if some
  1236. X                 * total hoser (like flex itself) wants
  1237. X                 * to call the scanner after we return the
  1238. X                 * YY_NULL, it'll still work - another YY_NULL
  1239. X                 * will get returned.
  1240. X                 */
  1241. X                yy_c_buf_p = yytext + YY_MORE_ADJ;
  1242. X
  1243. X                yy_act = YY_STATE_EOF((yy_start - 1) / 2);
  1244. X                goto do_action;
  1245. X                }
  1246. X
  1247. X            else
  1248. X                {
  1249. X                if ( ! yy_did_buffer_switch_on_eof )
  1250. X                YY_NEW_FILE;
  1251. X                }
  1252. X            }
  1253. X            break;
  1254. X
  1255. X            case EOB_ACT_CONTINUE_SCAN:
  1256. X            yy_c_buf_p = yytext + yy_amount_of_matched_text;
  1257. X
  1258. X            yy_current_state = yy_get_previous_state();
  1259. X
  1260. X            yy_cp = yy_c_buf_p;
  1261. X            yy_bp = yytext + YY_MORE_ADJ;
  1262. X            goto yy_match;
  1263. X
  1264. X            case EOB_ACT_LAST_MATCH:
  1265. X            yy_c_buf_p =
  1266. X                &yy_current_buffer->yy_ch_buf[yy_n_chars];
  1267. X
  1268. X            yy_current_state = yy_get_previous_state();
  1269. X
  1270. X            yy_cp = yy_c_buf_p;
  1271. X            yy_bp = yytext + YY_MORE_ADJ;
  1272. X            goto yy_find_action;
  1273. X            }
  1274. X        break;
  1275. X        }
  1276. X
  1277. X        default:
  1278. X#ifdef FLEX_DEBUG
  1279. X        printf( "action # %d\n", yy_act );
  1280. X#endif
  1281. X        YY_FATAL_ERROR(
  1282. X            "fatal flex scanner internal error--no action found" );
  1283. X        }
  1284. X    }
  1285. X}
  1286. X
  1287. X
  1288. X/* yy_get_next_buffer - try to read in a new buffer
  1289. X *
  1290. X * synopsis
  1291. X *     int yy_get_next_buffer();
  1292. X *
  1293. X * returns a code representing an action
  1294. X *     EOB_ACT_LAST_MATCH -
  1295. X *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
  1296. X *     EOB_ACT_END_OF_FILE - end of file
  1297. X */
  1298. X
  1299. Xstatic int yy_get_next_buffer()
  1300. X{
  1301. X    register YY_CHAR *dest = yy_current_buffer->yy_ch_buf;
  1302. X    register YY_CHAR *source = yytext - 1; /* copy prev. char, too */
  1303. X    register int number_to_move, i;
  1304. X    int ret_val;
  1305. X
  1306. X    if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
  1307. X    YY_FATAL_ERROR(
  1308. X        "fatal flex scanner internal error--end of buffer missed" );
  1309. X
  1310. X    /* try to read more data */
  1311. X
  1312. X    /* first move last chars to start of buffer */
  1313. X    number_to_move = yy_c_buf_p - yytext;
  1314. X
  1315. X    for ( i = 0; i < number_to_move; ++i )
  1316. X    *(dest++) = *(source++);
  1317. X
  1318. X    if ( yy_current_buffer->yy_eof_status != EOF_NOT_SEEN )
  1319. X    /* don't do the read, it's not guaranteed to return an EOF,
  1320. X     * just force an EOF
  1321. X     */
  1322. X    yy_n_chars = 0;
  1323. X
  1324. X    else
  1325. X    {
  1326. X    int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1;
  1327. X
  1328. X    if ( num_to_read > YY_READ_BUF_SIZE )
  1329. X        num_to_read = YY_READ_BUF_SIZE;
  1330. X
  1331. X    else if ( num_to_read <= 0 )
  1332. X        YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" );
  1333. X
  1334. X    /* read in more data */
  1335. X    YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
  1336. X          yy_n_chars, num_to_read );
  1337. X    }
  1338. X
  1339. X    if ( yy_n_chars == 0 )
  1340. X    {
  1341. X    if ( number_to_move - YY_MORE_ADJ == 1 )
  1342. X        {
  1343. X        ret_val = EOB_ACT_END_OF_FILE;
  1344. X        yy_current_buffer->yy_eof_status = EOF_DONE;
  1345. X        }
  1346. X
  1347. X    else
  1348. X        {
  1349. X        ret_val = EOB_ACT_LAST_MATCH;
  1350. X        yy_current_buffer->yy_eof_status = EOF_PENDING;
  1351. X        }
  1352. X    }
  1353. X
  1354. X    else
  1355. X    ret_val = EOB_ACT_CONTINUE_SCAN;
  1356. X
  1357. X    yy_n_chars += number_to_move;
  1358. X    yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
  1359. X    yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
  1360. X
  1361. X    /* yytext begins at the second character in yy_ch_buf; the first
  1362. X     * character is the one which preceded it before reading in the latest
  1363. X     * buffer; it needs to be kept around in case it's a newline, so
  1364. X     * yy_get_previous_state() will have with '^' rules active
  1365. X     */
  1366. X
  1367. X    yytext = &yy_current_buffer->yy_ch_buf[1];
  1368. X
  1369. X    return ( ret_val );
  1370. X}
  1371. X
  1372. X
  1373. X/* yy_get_previous_state - get the state just before the EOB char was reached
  1374. X *
  1375. X * synopsis
  1376. X *     yy_state_type yy_get_previous_state();
  1377. X */
  1378. X
  1379. Xstatic yy_state_type yy_get_previous_state()
  1380. X{
  1381. X    register yy_state_type yy_current_state;
  1382. X    register YY_CHAR *yy_cp;
  1383. X
  1384. X    register YY_CHAR *yy_bp = yytext;
  1385. X
  1386. X    yy_current_state = yy_start;
  1387. X    if ( yy_bp[-1] == '\n' )
  1388. X    ++yy_current_state;
  1389. X
  1390. X    for ( yy_cp = yytext + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
  1391. X    {
  1392. X    register YY_CHAR yy_c = (*yy_cp ? yy_ec[*yy_cp] : 1);
  1393. X    if ( yy_accept[yy_current_state] )
  1394. X        {
  1395. X        yy_last_accepting_state = yy_current_state;
  1396. X        yy_last_accepting_cpos = yy_cp;
  1397. X        }
  1398. X    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1399. X        {
  1400. X        yy_current_state = yy_def[yy_current_state];
  1401. X        if ( yy_current_state >= 573 )
  1402. X        yy_c = yy_meta[yy_c];
  1403. X        }
  1404. X    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
  1405. X    }
  1406. X
  1407. X    return ( yy_current_state );
  1408. X}
  1409. X
  1410. X
  1411. X/* yy_try_NUL_trans - try to make a transition on the NUL character
  1412. X *
  1413. X * synopsis
  1414. X *     next_state = yy_try_NUL_trans( current_state );
  1415. X */
  1416. X
  1417. Xstatic yy_state_type yy_try_NUL_trans( yy_current_state )
  1418. Xregister yy_state_type yy_current_state;
  1419. X{
  1420. X    register int yy_is_jam;
  1421. X    register YY_CHAR *yy_cp = yy_c_buf_p;
  1422. X
  1423. X    register YY_CHAR yy_c = 1;
  1424. X    if ( yy_accept[yy_current_state] )
  1425. X    {
  1426. X    yy_last_accepting_state = yy_current_state;
  1427. X    yy_last_accepting_cpos = yy_cp;
  1428. X    }
  1429. X    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
  1430. X    {
  1431. X    yy_current_state = yy_def[yy_current_state];
  1432. X    if ( yy_current_state >= 573 )
  1433. X        yy_c = yy_meta[yy_c];
  1434. X    }
  1435. X    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
  1436. X    yy_is_jam = (yy_current_state == 572);
  1437. X
  1438. X    return ( yy_is_jam ? 0 : yy_current_state );
  1439. X}
  1440. X
  1441. X
  1442. X#if 0        /* not needed for NetHack */
  1443. X
  1444. Xstatic void yyunput( in_c, yy_bp )
  1445. Xint in_c;        /* YY_CHAR c; */
  1446. Xregister YY_CHAR *yy_bp;
  1447. X{
  1448. X    register YY_CHAR *yy_cp = yy_c_buf_p;
  1449. X    YY_CHAR c = (YY_CHAR)in_c;
  1450. X
  1451. X    /* undo effects of setting up yytext */
  1452. X    *yy_cp = yy_hold_char;
  1453. X
  1454. X    if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  1455. X    { /* need to shift things up to make room */
  1456. X    register int number_to_move = yy_n_chars + 2; /* +2 for EOB chars */
  1457. X    register YY_CHAR *dest =
  1458. X        &yy_current_buffer->yy_ch_buf[yy_current_buffer->yy_buf_size + 2];
  1459. X    register YY_CHAR *source =
  1460. X        &yy_current_buffer->yy_ch_buf[number_to_move];
  1461. X
  1462. X    while ( source > yy_current_buffer->yy_ch_buf )
  1463. X        *--dest = *--source;
  1464. X
  1465. X    yy_cp += dest - source;
  1466. X    yy_bp += dest - source;
  1467. X    yy_n_chars = yy_current_buffer->yy_buf_size;
  1468. X
  1469. X    if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
  1470. X        YY_FATAL_ERROR( "flex scanner push-back overflow" );
  1471. X    }
  1472. X
  1473. X    if ( yy_cp > yy_bp && yy_cp[-1] == '\n' )
  1474. X    yy_cp[-2] = '\n';
  1475. X
  1476. X    *--yy_cp = c;
  1477. X
  1478. X    /* note: the formal parameter *must* be called "yy_bp" for this
  1479. X     *       macro to now work correctly
  1480. X     */
  1481. X    YY_DO_BEFORE_ACTION; /* set up yytext again */
  1482. X}
  1483. X
  1484. X
  1485. Xstatic int yyinput()
  1486. X{
  1487. X    int c;
  1488. X    YY_CHAR *yy_cp = yy_c_buf_p;
  1489. X
  1490. X    *yy_cp = yy_hold_char;
  1491. X
  1492. X    if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
  1493. X    {
  1494. X    /* yy_c_buf_p now points to the character we want to return.
  1495. X     * If this occurs *before* the EOB characters, then it's a
  1496. X     * valid NUL; if not, then we've hit the end of the buffer.
  1497. X     */
  1498. X    if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
  1499. X        /* this was really a NUL */
  1500. X        *yy_c_buf_p = '\0';
  1501. X
  1502. X    else
  1503. X        { /* need more input */
  1504. X        yytext = yy_c_buf_p;
  1505. X        ++yy_c_buf_p;
  1506. X
  1507. X        switch ( yy_get_next_buffer() )
  1508. X        {
  1509. X        case EOB_ACT_END_OF_FILE:
  1510. X            {
  1511. X            if ( yywrap() )
  1512. X            {
  1513. X            yy_c_buf_p = yytext + YY_MORE_ADJ;
  1514. X            return ( EOF );
  1515. X            }
  1516. X
  1517. X            YY_NEW_FILE;
  1518. X
  1519. X            return ( yyinput() );
  1520. X            }
  1521. X            break;
  1522. X
  1523. X        case EOB_ACT_CONTINUE_SCAN:
  1524. X            yy_c_buf_p = yytext + YY_MORE_ADJ;
  1525. X            break;
  1526. X
  1527. X        case EOB_ACT_LAST_MATCH:
  1528. X            YY_FATAL_ERROR( "unexpected last match in yyinput()" );
  1529. X        }
  1530. X        }
  1531. X    }
  1532. X
  1533. X    c = *yy_c_buf_p;
  1534. X    yy_hold_char = *++yy_c_buf_p;
  1535. X
  1536. X    return ( c );
  1537. X}
  1538. X
  1539. X#endif    /* 0 */
  1540. X
  1541. X
  1542. Xvoid yyrestart( input_file )
  1543. XFILE *input_file;
  1544. X{
  1545. X    yy_init_buffer( yy_current_buffer, input_file );
  1546. X    yy_load_buffer_state();
  1547. X}
  1548. X
  1549. X
  1550. Xvoid yy_switch_to_buffer( new_buffer )
  1551. XYY_BUFFER_STATE new_buffer;
  1552. X{
  1553. X    if ( yy_current_buffer == new_buffer )
  1554. X    return;
  1555. X
  1556. X    if ( yy_current_buffer )
  1557. X    {
  1558. X    /* flush out information for old buffer */
  1559. X    *yy_c_buf_p = yy_hold_char;
  1560. X    yy_current_buffer->yy_buf_pos = yy_c_buf_p;
  1561. X    yy_current_buffer->yy_n_chars = yy_n_chars;
  1562. X    }
  1563. X
  1564. X    yy_current_buffer = new_buffer;
  1565. X    yy_load_buffer_state();
  1566. X
  1567. X    /* we don't actually know whether we did this switch during
  1568. X     * EOF (yywrap()) processing, but the only time this flag
  1569. X     * is looked at is after yywrap() is called, so it's safe
  1570. X     * to go ahead and always set it.
  1571. X     */
  1572. X    yy_did_buffer_switch_on_eof = 1;
  1573. X}
  1574. X
  1575. X
  1576. Xvoid yy_load_buffer_state()
  1577. X{
  1578. X    yy_n_chars = yy_current_buffer->yy_n_chars;
  1579. X    yytext = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
  1580. X    yyin = yy_current_buffer->yy_input_file;
  1581. X    yy_hold_char = *yy_c_buf_p;
  1582. X}
  1583. X
  1584. X
  1585. XYY_BUFFER_STATE yy_create_buffer( file, size )
  1586. XFILE *file;
  1587. Xint size;
  1588. X{
  1589. X    YY_BUFFER_STATE b;
  1590. X
  1591. X    b = (YY_BUFFER_STATE) alloc( sizeof( struct yy_buffer_state ) );
  1592. X    b->yy_buf_size = size;
  1593. X
  1594. X    /* yy_ch_buf has to be 2 characters longer than the size given because
  1595. X     * we need to put in 2 end-of-buffer characters.
  1596. X     */
  1597. X    b->yy_ch_buf = (YY_CHAR *) alloc( (unsigned) (b->yy_buf_size + 2) );
  1598. X    yy_init_buffer( b, file );
  1599. X
  1600. X    return ( b );
  1601. X}
  1602. X
  1603. X
  1604. Xvoid yy_delete_buffer( b )
  1605. XYY_BUFFER_STATE b;
  1606. X{
  1607. X    if ( b == yy_current_buffer )
  1608. X    yy_current_buffer = (YY_BUFFER_STATE) 0;
  1609. X
  1610. X    free((genericptr_t)b->yy_ch_buf);
  1611. X    free((genericptr_t)b);
  1612. X}
  1613. X
  1614. X
  1615. Xvoid yy_init_buffer( b, file )
  1616. XYY_BUFFER_STATE b;
  1617. XFILE *file;
  1618. X{
  1619. X    b->yy_input_file = file;
  1620. X
  1621. X    /* we put in the '\n' and start reading from [1] so that an
  1622. X     * initial match-at-newline will be true.
  1623. X     */
  1624. X
  1625. X    b->yy_ch_buf[0] = '\n';
  1626. X    b->yy_n_chars = 1;
  1627. X
  1628. X    /* we always need two end-of-buffer characters.  The first causes
  1629. X     * a transition to the end-of-buffer state.  The second causes
  1630. X     * a jam in that state.
  1631. X     */
  1632. X    b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
  1633. X    b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR;
  1634. X
  1635. X    b->yy_buf_pos = &b->yy_ch_buf[1];
  1636. X
  1637. X    b->yy_eof_status = EOF_NOT_SEEN;
  1638. X}
  1639. X
  1640. X#ifdef    AMIGA
  1641. Xlong *alloc(n)
  1642. X    unsigned n;
  1643. X{
  1644. X    return ((long *)malloc (n));
  1645. X}
  1646. X#endif
  1647. X
  1648. X/* routine to switch to another input file; needed for flex */
  1649. Xvoid init_yyin( input_f )
  1650. XFILE *input_f;
  1651. X{
  1652. X#ifdef FLEX_SCANNER
  1653. X    if (yyin)
  1654. X        yyrestart(input_f);
  1655. X    else
  1656. X#endif
  1657. X        yyin = input_f;
  1658. X}
  1659. X/* analogous routine (for completeness) */
  1660. Xvoid init_yyout( output_f )
  1661. XFILE *output_f;
  1662. X{
  1663. X    yyout = output_f;
  1664. X}
  1665. X
  1666. END_OF_FILE
  1667. if test 50181 -ne `wc -c <'sys/share/lev_lex.c'`; then
  1668.     echo shar: \"'sys/share/lev_lex.c'\" unpacked with wrong size!
  1669. fi
  1670. # end of 'sys/share/lev_lex.c'
  1671. echo shar: End of archive 21 \(of 33\).
  1672. cp /dev/null ark21isdone
  1673. MISSING=""
  1674. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1675.     if test ! -f ark${I}isdone ; then
  1676.     MISSING="${MISSING} ${I}"
  1677.     fi
  1678. done
  1679. if test "${MISSING}" = "" ; then
  1680.     echo You have unpacked all 33 archives.
  1681.     echo "Now execute ./patchit.sh"
  1682.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1683. else
  1684.     echo You still need to unpack the following archives:
  1685.     echo "        " ${MISSING}
  1686. fi
  1687. ##  End of shell archive.
  1688. exit 0
  1689.