home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch1t < prev    next >
Text File  |  1993-03-05  |  59KB  |  1,758 lines

  1. Subject:  v17i061:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch1t/31
  2. Newsgroups: comp.sources.games
  3. Approved: billr@saab.CNA.TEK.COM
  4.  
  5. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  6. Posting-number: Volume 17, Issue 61
  7. Archive-name: nethack31/Patch1t
  8. Patch-To: nethack31: Volume 16, Issue 1-116
  9. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  10.  
  11.  
  12.  
  13. #! /bin/sh
  14. # This is a shell archive.  Remove anything before this line, then unpack
  15. # it by saving it into a file and typing "sh file".  To overwrite existing
  16. # files, type "sh file -c".  You can also feed this as standard input via
  17. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  18. # will see the following message at the end:
  19. #        "End of archive 20 (of 31)."
  20. # Contents:  sys/share/lev_yacc.c1 sys/winnt/Makefile.utl
  21. # Wrapped by billr@saab on Fri Mar  5 10:50:46 1993
  22. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  23. if test -f 'sys/share/lev_yacc.c1' -a "${1}" != "-c" ; then 
  24.   echo shar: Renaming existing file \"'sys/share/lev_yacc.c1'\" to \"'sys/share/lev_yacc.c1.orig'\"
  25.   mv -f 'sys/share/lev_yacc.c1' 'sys/share/lev_yacc.c1.orig'
  26. fi
  27. echo shar: Extracting \"'sys/share/lev_yacc.c1'\" \(46649 characters\)
  28. sed "s/^X//" >'sys/share/lev_yacc.c1' <<'END_OF_FILE'
  29. Xextern char *malloc(), *realloc();
  30. X
  31. X# line 2 "lev_comp.y"
  32. X/*    SCCS Id: @(#)lev_comp.c    3.1    93/02/13    */
  33. X/*    Copyright (c) 1989 by Jean-Christophe Collet */
  34. X/* NetHack may be freely redistributed.  See license for details. */
  35. X
  36. X/*
  37. X * This file contains the Level Compiler code
  38. X * It may handle special mazes & special room-levels
  39. X */
  40. X
  41. X/* In case we're using bison in AIX.  This definition must be
  42. X * placed before any other C-language construct in the file
  43. X * excluding comments and preprocessor directives (thanks IBM
  44. X * for this wonderful feature...).
  45. X *
  46. X * Note: some cpps barf on this 'undefined control' (#pragma).
  47. X * Addition of the leading space seems to prevent barfage for now,
  48. X * and AIX will still see the directive in its non-standard locale.
  49. X */
  50. X
  51. X#ifdef _AIX
  52. X #pragma alloca        /* keep leading space! */
  53. X#endif
  54. X
  55. X#include "hack.h"
  56. X#include "sp_lev.h"
  57. X#ifndef O_WRONLY
  58. X# include <fcntl.h>
  59. X#endif
  60. X#ifndef O_CREAT    /* some older BSD systems do not define O_CREAT in <fcntl.h> */
  61. X# include <sys/file.h>
  62. X#endif
  63. X#ifndef O_BINARY    /* used for micros, no-op for others */
  64. X# define O_BINARY 0
  65. X#endif
  66. X
  67. X#ifdef MICRO
  68. X# define OMASK FCMASK
  69. X#else
  70. X# define OMASK 0644
  71. X#endif
  72. X
  73. X#define MAX_REGISTERS    10
  74. X#define ERR        (-1)
  75. X
  76. X#define New(type)        (type *) alloc(sizeof(type))
  77. X#define NewTab(type, size)    (type **) alloc(sizeof(type *) * size)
  78. X
  79. X#ifdef MICRO
  80. X# undef exit
  81. Xextern void FDECL(exit, (int));
  82. X#endif
  83. X
  84. Xextern void FDECL(yyerror, (char *));
  85. Xextern void FDECL(yywarning, (char *));
  86. Xextern int NDECL(yylex);
  87. Xint NDECL(yyparse);
  88. X
  89. Xextern char *FDECL(dup_string,(char *));
  90. Xextern int FDECL(get_floor_type, (CHAR_P));
  91. Xextern int FDECL(get_room_type, (char *));
  92. Xextern int FDECL(get_trap_type, (char *));
  93. Xextern int FDECL(get_monster_id, (char *, CHAR_P));
  94. Xextern int FDECL(get_object_id, (char *));
  95. Xextern boolean FDECL(check_monster_char, (CHAR_P));
  96. Xextern boolean FDECL(check_object_char, (CHAR_P));
  97. Xextern char FDECL(what_map_char, (CHAR_P));
  98. Xextern void FDECL(scan_map, (char *));
  99. Xextern void NDECL(wallify_map);
  100. Xextern boolean NDECL(check_subrooms);
  101. Xextern void FDECL(check_coord, (int, int, char *));
  102. Xextern void NDECL(store_part);
  103. Xextern void NDECL(store_room);
  104. Xextern void FDECL(write_maze, (int, specialmaze *));
  105. Xextern void FDECL(write_lev, (int, splev *));
  106. Xextern void FDECL(free_rooms, (room **, int));
  107. X
  108. Xstatic struct reg {
  109. X    int x1, y1;
  110. X    int x2, y2;
  111. X}        current_region;
  112. X
  113. Xstatic struct coord {
  114. X    int x;
  115. X    int y;
  116. X}        current_coord, current_align;
  117. X
  118. Xstatic struct size {
  119. X    int height;
  120. X    int width;
  121. X}        current_size;
  122. X
  123. Xchar tmpmessage[256];
  124. Xaltar *tmpaltar[256];
  125. Xlad *tmplad[256];
  126. Xstair *tmpstair[256];
  127. Xdigpos *tmpdig[256];
  128. Xdigpos *tmppass[32];
  129. Xchar *tmpmap[ROWNO];
  130. Xregion *tmpreg[256];
  131. Xlev_region *tmplreg[32];
  132. Xdoor *tmpdoor[256];
  133. Xroom_door *tmprdoor[256];
  134. Xtrap *tmptrap[256];
  135. Xmonster *tmpmonst[256];
  136. Xobject *tmpobj[256];
  137. Xdrawbridge *tmpdb[256];
  138. Xwalk *tmpwalk[256];
  139. Xgold *tmpgold[256];
  140. Xfountain *tmpfountain[256];
  141. Xsink *tmpsink[256];
  142. Xpool *tmppool[256];
  143. Xengraving *tmpengraving[256];
  144. Xmazepart *tmppart[10];
  145. Xroom *tmproom[MAXNROFROOMS*2];
  146. Xcorridor *tmpcor[256];
  147. X
  148. Xstatic specialmaze maze;
  149. Xstatic splev special_lev;
  150. Xstatic lev_init init_lev;
  151. X
  152. Xstatic char olist[MAX_REGISTERS], mlist[MAX_REGISTERS];
  153. Xstatic struct coord plist[MAX_REGISTERS];
  154. X
  155. Xint n_olist = 0, n_mlist = 0, n_plist = 0;
  156. X
  157. Xunsigned int nlreg = 0, nreg = 0, ndoor = 0, ntrap = 0, nmons = 0, nobj = 0;
  158. Xunsigned int ndb = 0, nwalk = 0, npart = 0, ndig = 0, nlad = 0, nstair = 0;
  159. Xunsigned int naltar = 0, ncorridor = 0, nrooms = 0, ngold = 0, nengraving = 0;
  160. Xunsigned int nfountain = 0, npool = 0, nsink = 0, npass = 0;
  161. X
  162. Xstatic unsigned long lev_flags = 0;
  163. X
  164. Xunsigned int max_x_map, max_y_map;
  165. X
  166. Xstatic xchar in_room;
  167. X
  168. Xextern int fatal_error;
  169. Xextern int want_warnings;
  170. Xextern char* fname;
  171. X
  172. X
  173. X# line 144 "lev_comp.y"
  174. Xtypedef union 
  175. X{
  176. X    int    i;
  177. X    char*    map;
  178. X    struct {
  179. X        xchar room;
  180. X        xchar wall;
  181. X        xchar door;
  182. X    } corpos;
  183. X} YYSTYPE;
  184. X# define CHAR 257
  185. X# define INTEGER 258
  186. X# define BOOLEAN 259
  187. X# define MESSAGE_ID 260
  188. X# define MAZE_ID 261
  189. X# define LEVEL_ID 262
  190. X# define LEV_INIT_ID 263
  191. X# define GEOMETRY_ID 264
  192. X# define NOMAP_ID 265
  193. X# define OBJECT_ID 266
  194. X# define MONSTER_ID 267
  195. X# define TRAP_ID 268
  196. X# define DOOR_ID 269
  197. X# define DRAWBRIDGE_ID 270
  198. X# define MAZEWALK_ID 271
  199. X# define WALLIFY_ID 272
  200. X# define REGION_ID 273
  201. X# define FILLING 274
  202. X# define RANDOM_OBJECTS_ID 275
  203. X# define RANDOM_MONSTERS_ID 276
  204. X# define RANDOM_PLACES_ID 277
  205. X# define ALTAR_ID 278
  206. X# define LADDER_ID 279
  207. X# define STAIR_ID 280
  208. X# define NON_DIGGABLE_ID 281
  209. X# define NON_PASSWALL_ID 282
  210. X# define ROOM_ID 283
  211. X# define PORTAL_ID 284
  212. X# define TELEPRT_ID 285
  213. X# define BRANCH_ID 286
  214. X# define LEV 287
  215. X# define CHANCE_ID 288
  216. X# define CORRIDOR_ID 289
  217. X# define GOLD_ID 290
  218. X# define ENGRAVING_ID 291
  219. X# define FOUNTAIN_ID 292
  220. X# define POOL_ID 293
  221. X# define SINK_ID 294
  222. X# define NONE 295
  223. X# define RAND_CORRIDOR_ID 296
  224. X# define DOOR_STATE 297
  225. X# define LIGHT_STATE 298
  226. X# define CURSE_TYPE 299
  227. X# define ENGRAVING_TYPE 300
  228. X# define DIRECTION 301
  229. X# define RANDOM_TYPE 302
  230. X# define O_REGISTER 303
  231. X# define M_REGISTER 304
  232. X# define P_REGISTER 305
  233. X# define A_REGISTER 306
  234. X# define ALIGNMENT 307
  235. X# define LEFT_OR_RIGHT 308
  236. X# define CENTER 309
  237. X# define TOP_OR_BOT 310
  238. X# define ALTAR_TYPE 311
  239. X# define UP_OR_DOWN 312
  240. X# define SUBROOM_ID 313
  241. X# define NAME_ID 314
  242. X# define FLAGS_ID 315
  243. X# define FLAG_TYPE 316
  244. X# define MON_ATTITUDE 317
  245. X# define MON_ALERTNESS 318
  246. X# define MON_APPEARANCE 319
  247. X# define STRING 320
  248. X# define MAP_ID 321
  249. X#define yyclearin yychar = -1
  250. X#define yyerrok yyerrflag = 0
  251. Xextern int yychar;
  252. Xextern int yyerrflag;
  253. X#ifndef YYMAXDEPTH
  254. X#define YYMAXDEPTH 150
  255. X#endif
  256. XYYSTYPE yylval, yyval;
  257. X# define YYERRCODE 256
  258. X
  259. X# line 1542 "lev_comp.y"
  260. X
  261. Xint yyexca[] ={
  262. X-1, 1,
  263. X    0, -1,
  264. X    -2, 0,
  265. X-1, 179,
  266. X    44, 98,
  267. X    -2, 97,
  268. X    };
  269. X# define YYNPROD 214
  270. X# define YYLAST 487
  271. Xint yyact[]={
  272. X
  273. X   156,   451,   308,   432,   183,   380,    67,   398,   221,   155,
  274. X   208,   253,   459,   311,    47,    20,    22,   312,   309,    21,
  275. X   104,   103,   106,   151,    49,   157,    28,    12,   438,   439,
  276. X   441,    21,   113,   428,   154,   293,   427,   458,   289,   213,
  277. X    60,   414,   150,    21,   118,   119,   114,   153,   152,   222,
  278. X    55,    56,   389,    21,   425,   368,    21,    21,    60,   314,
  279. X   301,   185,   184,   225,   367,   181,    68,    69,   149,   311,
  280. X    61,   452,   134,   312,   309,   131,   381,   377,   399,   234,
  281. X   104,   103,   106,   105,   107,   115,   116,   108,    61,   396,
  282. X   249,   158,   113,   117,   109,   120,   121,   330,   110,   111,
  283. X   112,   374,   375,   209,   118,   119,   114,   254,   210,   327,
  284. X   317,   255,   318,    43,   128,   453,   220,   200,   351,   202,
  285. X   205,   207,   400,   235,   313,   297,   411,   242,    74,    36,
  286. X    34,   215,   397,   250,   178,    64,    66,    65,    17,     8,
  287. X     9,    25,   447,   444,   243,   281,   186,   446,   436,   430,
  288. X   413,   407,   406,   404,   388,   369,   363,   356,    44,   354,
  289. X   342,   339,   320,   212,   303,   298,   294,   290,   283,   270,
  290. X   266,   247,   214,   240,   134,   131,    70,    39,   229,   230,
  291. X   231,   232,   132,   236,   130,   129,   133,   394,   337,   335,
  292. X   333,   246,   347,   223,   264,   195,   260,   258,   148,   147,
  293. X   146,   143,   251,   252,   142,   141,   140,   194,   193,   256,
  294. X   139,   192,    78,   191,   190,   187,   226,   227,   228,   176,
  295. X   175,   174,   173,   172,   171,   170,   169,   168,   167,   166,
  296. X   165,   164,   163,   162,   161,   160,   159,   124,   123,   122,
  297. X    81,    80,    76,    75,    48,    38,    26,    18,    15,    14,
  298. X   349,    54,   456,   361,   443,   180,   442,   433,   288,   431,
  299. X   292,    98,   100,    99,    94,   429,   424,    93,    86,    84,
  300. X   295,   296,    79,    83,   421,   418,   412,   299,   410,   405,
  301. X   402,   401,   393,   390,   387,   383,   315,   379,   372,   371,
  302. X   364,   362,   361,   355,   353,   325,   352,   348,   346,   341,
  303. X   338,   336,   334,   332,   324,   321,   307,   182,   177,    77,
  304. X   224,   306,   305,   304,   302,   300,   286,   285,   284,   282,
  305. X   280,   279,   278,   277,   276,   217,   275,   217,   218,   274,
  306. X   218,   267,   265,   350,   263,   262,   261,   259,   382,   378,
  307. X   257,   357,   241,   358,   197,   204,   199,   359,   360,   370,
  308. X   196,   189,   340,   188,   126,   343,   344,   345,   219,   331,
  309. X   125,    50,   323,   224,    40,   391,    30,   455,   449,   237,
  310. X   238,   328,   245,   448,   244,   445,   422,   419,   415,   349,
  311. X    27,   181,   269,   243,   403,   220,    31,    23,    16,    11,
  312. X     2,   216,   273,   392,    10,   365,   272,    13,   271,   268,
  313. X   409,   385,    19,   423,   408,   384,   420,    29,   417,   416,
  314. X   322,   180,    37,   102,   319,   101,    97,    96,    95,    45,
  315. X    92,    51,    91,   434,   435,   437,    90,   440,    89,    88,
  316. X    87,    85,    82,   239,   179,    63,    35,    62,    46,    33,
  317. X    32,   145,   450,   144,   138,   454,   137,   136,   135,   376,
  318. X   326,   329,    59,    58,   127,    73,    72,    57,    53,    24,
  319. X    71,    52,    41,     5,     4,     3,     1,   457,   291,   287,
  320. X     7,     6,   206,   203,   201,   198,   386,   316,   233,   426,
  321. X   248,   395,   373,    42,   310,   366,   211 };
  322. Xint yypact[]={
  323. X
  324. X  -122, -1000, -1000,  -122, -1000, -1000,  -288,  -288,   191,   190,
  325. X -1000,  -125,   189,  -125,  -301,  -301,  -119,   188,  -290,  -119,
  326. X   322, -1000, -1000,  -135,  -119,   187,   -80, -1000,   320, -1000,
  327. X  -144, -1000,  -135, -1000, -1000,  -307,   186, -1000,  -296,   317,
  328. X  -290,  -225, -1000, -1000, -1000, -1000,  -140, -1000,  -242, -1000,
  329. X   -81, -1000,  -168, -1000, -1000,   185,   184,  -243, -1000, -1000,
  330. X   183,   182,  -186, -1000,   181,   180,   179,   316, -1000, -1000,
  331. X   310, -1000, -1000,  -175, -1000,   -82,   -83, -1000,  -246,  -246,
  332. X  -277,  -277, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  333. X -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  334. X -1000, -1000, -1000,   178,   177,   176,   175,   174,   173,   172,
  335. X   171,   170,   169,   168,   167,   166, -1000,   165,   164,   163,
  336. X   162,   161,   -82,   341,   -83,  -248,  -113, -1000,   157, -1000,
  337. X   309, -1000, -1000,   307, -1000, -1000, -1000, -1000, -1000, -1000,
  338. X -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,   156,
  339. X   155,   153,   150,   149,   137,   306, -1000, -1000,   300,  -185,
  340. X  -182,  -194,  -263,    25,   345,    23,    76,    76,    76,    25,
  341. X    25,    25,    25,  -179,    25,   345,   345, -1000, -1000, -1000,
  342. X -1000,   -85, -1000, -1000, -1000, -1000,   298,   343,   -82,   -83,
  343. X  -301,   -87,  -169,    25,    25,    25,  -191,  -191,   296, -1000,
  344. X -1000, -1000,   106,   293, -1000, -1000, -1000,   105,   292, -1000,
  345. X -1000,   291, -1000, -1000,   290, -1000, -1000, -1000,   103,   288,
  346. X   -88,   287, -1000, -1000,   342,   -89, -1000, -1000, -1000,   285,
  347. X -1000,   282,   280,   279, -1000, -1000,   278, -1000, -1000,   277,
  348. X   276,  -114,   275,   -90, -1000, -1000, -1000, -1000,   274, -1000,
  349. X -1000, -1000, -1000,   273, -1000, -1000,   272,  -264,   -91,  -267,
  350. X   -92,    25,    25,  -176,   -93,  -191,   271,  -252,   270,   -94,
  351. X   269,   268,   267,   262,  -233,  -177,  -253,    25,  -190,   341,
  352. X   -96,   261,   104,   260,  -194,    69,    57,   259, -1000, -1000,
  353. X    97,   258, -1000, -1000,    96, -1000, -1000,   257,    95,   256,
  354. X   -97, -1000,    76,   255,   -98,    76,    76,    76,   254, -1000,
  355. X -1000, -1000,   101, -1000, -1000, -1000,   253, -1000, -1000, -1000,
  356. X   338,  -191, -1000, -1000,  -183,   252,   250,   -99, -1000,   249,
  357. X  -101, -1000,    25, -1000,    25, -1000,  -194, -1000,  -277,   248,
  358. X   247,  -102,   209,   246, -1000, -1000,  -247,  -103,  -301, -1000,
  359. X   245,   244,  -200,    37,   243,    36,   241, -1000, -1000, -1000,
  360. X   240,  -104,  -260,   239,  -301,   238, -1000, -1000, -1000,    94,
  361. X -1000,  -170,  -180,   237, -1000, -1000,   236,  -242, -1000,  -105,
  362. X   235,  -106, -1000,  -107, -1000,   234, -1000,  -148,   232, -1000,
  363. X  -108, -1000, -1000,  -271, -1000, -1000, -1000, -1000,   337, -1000,
  364. X -1000,  -180,    36,   231,   336,  -301,   230,   335,   222, -1000,
  365. X  -266,   221,  -109,   215, -1000, -1000, -1000,   213,  -248, -1000,
  366. X   213,  -110, -1000, -1000,  -289,   212,   210, -1000, -1000,  -116,
  367. X   334,  -111, -1000,  -117,   332, -1000,   327, -1000, -1000, -1000,
  368. X -1000,  -301,  -187,  -187, -1000, -1000,   326, -1000, -1000, -1000,
  369. X -1000, -1000, -1000, -1000,   208, -1000,  -283, -1000, -1000, -1000 };
  370. Xint yypgo[]={
  371. X
  372. X     0,     6,     4,   486,     9,    10,    11,     2,   485,   484,
  373. X     3,   483,     7,   482,   481,   480,   479,     1,   478,   477,
  374. X   389,   380,   476,    49,   388,   186,   475,   474,   184,   473,
  375. X   472,     0,   471,   470,   469,   468,   467,   127,   466,   390,
  376. X   465,   464,   463,   387,   386,   462,   461,   460,   459,   458,
  377. X   185,   182,   251,   457,   456,   455,   454,   453,   212,   452,
  378. X   451,     5,   450,   449,   448,   447,   446,   444,   210,   206,
  379. X   205,   204,   201,   443,   441,   200,   199,   198,   440,   439,
  380. X   438,   437,   436,   435,   134,   434,   433,   432,   431,   430,
  381. X   429,   428,   426,   422,   420,   418,   417,   416,   415,   413,
  382. X     8,   405,   404,   403,   401,   400,   399,   398,   396,   395,
  383. X   393,   392,   193,   131,   391 };
  384. Xint yyr1[]={
  385. X
  386. X     0,    38,    38,    39,    39,    40,    40,    41,    42,    33,
  387. X    24,    24,    14,    14,    20,    20,    21,    21,    43,    43,
  388. X    48,    45,    45,    49,    49,    46,    46,    52,    52,    47,
  389. X    47,    54,    55,    55,    56,    56,    37,    53,    53,    59,
  390. X    57,    10,    10,    62,    62,    60,    60,    63,    63,    61,
  391. X    61,    58,    58,    64,    64,    64,    64,    64,    64,    64,
  392. X    64,    64,    64,    64,    64,    64,    65,    66,    67,    15,
  393. X    15,    13,    13,    12,    12,    32,    11,    11,    44,    44,
  394. X    78,    79,    79,    82,     1,     1,     2,     2,    80,    80,
  395. X    83,    83,    83,    50,    50,    51,    51,    84,    86,    84,
  396. X    81,    81,    87,    87,    87,    87,    87,    87,    87,    87,
  397. X    87,    87,    87,    87,    87,    87,    87,    87,    87,    87,
  398. X    87,    87,   101,    68,   102,   102,   103,   103,   103,   103,
  399. X   103,   104,    69,   105,   105,   105,    16,    16,    17,    17,
  400. X    88,    70,    89,    95,    96,    97,    77,   106,    91,   107,
  401. X    92,   108,   109,    93,   111,    94,   110,   110,    23,    23,
  402. X    72,    73,    74,    98,    99,    90,    71,    75,    76,    26,
  403. X    26,    26,    29,    29,    29,    34,    34,    35,    35,     3,
  404. X     3,     4,     4,    22,    22,    22,   100,   100,   100,     5,
  405. X     5,     6,     6,     7,     7,     7,     8,     8,   114,    30,
  406. X    27,     9,    85,    25,    28,    31,    36,    36,    18,    18,
  407. X    19,    19,   113,   112 };
  408. Xint yyr2[]={
  409. X
  410. X     0,     0,     2,     2,     4,     2,     2,    11,    15,     7,
  411. X     1,    27,     2,     2,     1,     7,     7,     3,     0,     4,
  412. X     7,     0,     4,     7,     7,     1,     2,     2,     4,     2,
  413. X     2,     3,     0,     4,    11,    11,    15,     5,     5,    25,
  414. X    25,     1,     5,    11,     3,    11,     3,    11,     3,    11,
  415. X     3,     0,     4,     2,     2,     2,     2,     2,     2,     2,
  416. X     2,     2,     2,     2,     2,     2,     7,     7,    19,     2,
  417. X     2,     2,     2,     2,     2,    11,     3,     3,     2,     4,
  418. X     7,     3,     5,    11,     2,     2,     2,     2,     0,     4,
  419. X     7,     7,     7,     3,     7,     3,     7,     3,     1,     8,
  420. X     0,     4,     2,     2,     2,     2,     2,     2,     2,     2,
  421. X     2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  422. X     2,     2,     1,    19,     0,     4,     5,     5,     5,     5,
  423. X     7,     1,    19,     1,     9,    13,     2,     2,     2,     3,
  424. X    11,    11,    15,    11,     3,    11,    11,     1,    17,     1,
  425. X    17,     1,     1,    17,     1,    13,     1,     5,     3,    21,
  426. X     7,     7,     7,     7,     7,    17,    15,    11,    15,     2,
  427. X     3,     2,     2,     3,     2,     2,     3,     2,     3,     3,
  428. X     2,     3,     2,     1,     5,     9,     2,     2,     3,     2,
  429. X     2,     2,     2,     2,     2,     3,     2,     2,     9,     9,
  430. X     9,     9,     2,     3,     3,     2,     2,     3,     2,     2,
  431. X     2,     2,    11,    19 };
  432. Xint yychk[]={
  433. X
  434. X -1000,   -38,   -39,   -40,   -41,   -42,   -32,   -33,   261,   262,
  435. X   -39,   -20,   315,   -20,    58,    58,   -24,   263,    58,   -24,
  436. X   -31,   320,   -31,   -43,   -48,   260,    58,   -21,   316,   -43,
  437. X    44,   -44,   -78,   -79,   265,   -82,   264,   -43,    58,   257,
  438. X    44,   -45,   -11,   257,   302,   -44,   -80,   321,    58,   320,
  439. X    44,   -21,   -46,   -49,   -52,   275,   276,   -53,   -57,   -59,
  440. X   283,   313,   -81,   -83,   275,   277,   276,    -1,   308,   309,
  441. X   257,   -47,   -54,   -55,   296,    58,    58,   -52,   -58,   -58,
  442. X    58,    58,   -87,   -68,   -69,   -88,   -70,   -89,   -90,   -91,
  443. X   -92,   -93,   -94,   -71,   -72,   -95,   -96,   -97,   -77,   -75,
  444. X   -76,   -98,   -99,   267,   266,   269,   268,   270,   273,   280,
  445. X   284,   285,   286,   278,   292,   271,   272,   279,   290,   291,
  446. X   281,   282,    58,    58,    58,    44,    44,   -56,   289,   -50,
  447. X   -28,   257,   -51,   -25,   257,   -64,   -65,   -66,   -67,   -68,
  448. X   -69,   -70,   -71,   -72,   -73,   -74,   -75,   -76,   -77,   314,
  449. X   288,   269,   294,   293,   280,    -4,   -31,   302,    -4,    58,
  450. X    58,    58,    58,    58,    58,    58,    58,    58,    58,    58,
  451. X    58,    58,    58,    58,    58,    58,    58,   -50,   -84,   -85,
  452. X  -113,    40,   -51,    -2,   310,   309,   259,    58,    44,    44,
  453. X    58,    58,    58,    58,    58,    58,    44,    44,   -26,   -25,
  454. X   302,   -27,   304,   -29,   -28,   302,   -30,   303,    -5,   297,
  455. X   302,    -3,   -31,   302,  -100,  -113,  -114,   302,   305,  -112,
  456. X    40,  -100,   -23,  -112,   287,    40,   -23,   -23,   -23,  -100,
  457. X  -100,  -100,  -100,   -18,   258,   302,  -100,  -112,  -112,   -86,
  458. X   258,    44,   -37,    40,   -50,   -51,   -31,   258,   -15,   259,
  459. X   302,  -100,  -100,    -6,   298,   302,    -6,    44,    91,    44,
  460. X    91,    44,    44,    44,    91,    44,   258,    44,  -106,    40,
  461. X   258,  -107,  -108,  -111,    44,    44,    44,    44,    44,    44,
  462. X    44,   259,    44,   258,    44,    44,    44,   -34,   -31,   302,
  463. X   258,   -35,   -31,   302,   258,  -100,  -100,   301,   258,    -6,
  464. X    44,   312,    44,   258,    44,    44,    44,    44,    -7,   307,
  465. X    -9,   302,   306,   301,   312,  -100,   -19,   300,   302,   -84,
  466. X   258,    44,   -37,   258,    44,    -5,   -62,    40,   302,   -60,
  467. X    40,   302,    44,    93,    44,    93,    44,    93,    44,   258,
  468. X   -23,    44,   258,   -23,   -23,   -23,    44,    91,    44,    41,
  469. X    -6,   301,    44,    44,   258,    44,   258,  -100,  -100,    -5,
  470. X    -4,    44,    44,   258,    44,  -109,    -8,   311,   302,   258,
  471. X   -31,    44,    44,   -13,   301,   302,   -63,    40,   302,    44,
  472. X   -61,    40,   302,    44,  -101,  -104,   -22,    44,   258,   312,
  473. X    44,   -31,  -110,    44,    93,   -14,   259,   302,   -12,   258,
  474. X   302,    44,    44,    -1,   258,    44,   258,   258,  -102,  -105,
  475. X    44,   274,    44,   258,   312,    41,   -12,   -61,    44,    41,
  476. X   -31,    44,    41,  -103,    44,   320,   -16,   302,   299,    44,
  477. X   258,    44,   -10,    44,    -2,   -10,   258,   -31,   317,   318,
  478. X    -7,   319,    44,    44,   259,    41,   258,   259,    41,    41,
  479. X   -31,   -17,   258,   302,   -17,    41,    44,   -36,   320,   295 };
  480. Xint yydef[]={
  481. X
  482. X     1,    -2,     2,     3,     5,     6,    14,    14,     0,     0,
  483. X     4,    10,     0,    10,     0,     0,    18,     0,     0,    18,
  484. X     0,   205,     9,     0,    18,     0,     0,    15,    17,    21,
  485. X     0,     7,    78,    88,    81,     0,     0,    19,     0,     0,
  486. X     0,    25,    75,    76,    77,    79,   100,    82,     0,    20,
  487. X     0,    16,    32,    22,    26,     0,     0,    27,    51,    51,
  488. X     0,     0,    80,    89,     0,     0,     0,     0,    84,    85,
  489. X     0,     8,    29,    30,    31,     0,     0,    28,    37,    38,
  490. X     0,     0,   101,   102,   103,   104,   105,   106,   107,   108,
  491. X   109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
  492. X   119,   120,   121,     0,     0,     0,     0,     0,     0,     0,
  493. X     0,     0,     0,     0,     0,     0,   144,     0,     0,     0,
  494. X     0,     0,     0,     0,     0,     0,     0,    33,     0,    23,
  495. X    93,   204,    24,    95,   203,    52,    53,    54,    55,    56,
  496. X    57,    58,    59,    60,    61,    62,    63,    64,    65,     0,
  497. X     0,     0,     0,     0,     0,     0,   181,   182,     0,     0,
  498. X     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  499. X     0,     0,     0,     0,     0,     0,     0,    90,    91,    -2,
  500. X   202,     0,    92,    83,    86,    87,     0,     0,     0,     0,
  501. X     0,     0,     0,     0,     0,     0,     0,     0,     0,   169,
  502. X   170,   171,     0,     0,   172,   173,   174,     0,     0,   189,
  503. X   190,     0,   179,   180,     0,   186,   187,   188,     0,     0,
  504. X     0,     0,   147,   158,     0,     0,   149,   151,   154,     0,
  505. X   160,     0,     0,     0,   208,   209,     0,   163,   164,     0,
  506. X     0,     0,     0,     0,    94,    96,    66,    67,     0,    69,
  507. X    70,   161,   162,     0,   191,   192,     0,     0,     0,     0,
  508. X     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  509. X     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  510. X     0,     0,     0,     0,     0,     0,     0,     0,   175,   176,
  511. X     0,     0,   177,   178,     0,   140,   141,     0,     0,     0,
  512. X     0,   146,     0,     0,     0,     0,     0,     0,     0,   193,
  513. X   194,   195,     0,   143,   145,   167,     0,   210,   211,    99,
  514. X     0,     0,    34,    35,     0,     0,     0,     0,    44,     0,
  515. X     0,    46,     0,   200,     0,   199,     0,   198,     0,     0,
  516. X     0,     0,     0,     0,   152,   155,     0,     0,     0,   212,
  517. X     0,     0,     0,     0,     0,     0,     0,   122,   131,   142,
  518. X   183,     0,     0,     0,     0,   156,   166,   196,   197,     0,
  519. X   168,     0,     0,     0,    71,    72,     0,     0,    48,     0,
  520. X     0,     0,    50,     0,   124,   133,   165,     0,     0,   148,
  521. X     0,   150,   153,     0,   201,    11,    12,    13,     0,    73,
  522. X    74,     0,     0,     0,     0,     0,     0,     0,   123,   132,
  523. X     0,   184,     0,     0,   157,    36,    68,    41,     0,    43,
  524. X    41,     0,    45,   125,     0,     0,     0,   136,   137,     0,
  525. X     0,     0,    40,     0,     0,    39,     0,   126,   127,   128,
  526. X   129,     0,     0,     0,   185,   213,     0,    42,    47,    49,
  527. X   130,   134,   138,   139,     0,   159,     0,   135,   206,   207 };
  528. Xtypedef struct { char *t_name; int t_val; } yytoktype;
  529. X#ifndef YYDEBUG
  530. X#    define YYDEBUG    0    /* don't allow debugging */
  531. X#endif
  532. X
  533. X#if YYDEBUG
  534. X
  535. Xyytoktype yytoks[] =
  536. X{
  537. X    "CHAR",    257,
  538. X    "INTEGER",    258,
  539. X    "BOOLEAN",    259,
  540. X    "MESSAGE_ID",    260,
  541. X    "MAZE_ID",    261,
  542. X    "LEVEL_ID",    262,
  543. X    "LEV_INIT_ID",    263,
  544. X    "GEOMETRY_ID",    264,
  545. X    "NOMAP_ID",    265,
  546. X    "OBJECT_ID",    266,
  547. X    "MONSTER_ID",    267,
  548. X    "TRAP_ID",    268,
  549. X    "DOOR_ID",    269,
  550. X    "DRAWBRIDGE_ID",    270,
  551. X    "MAZEWALK_ID",    271,
  552. X    "WALLIFY_ID",    272,
  553. X    "REGION_ID",    273,
  554. X    "FILLING",    274,
  555. X    "RANDOM_OBJECTS_ID",    275,
  556. X    "RANDOM_MONSTERS_ID",    276,
  557. X    "RANDOM_PLACES_ID",    277,
  558. X    "ALTAR_ID",    278,
  559. X    "LADDER_ID",    279,
  560. X    "STAIR_ID",    280,
  561. X    "NON_DIGGABLE_ID",    281,
  562. X    "NON_PASSWALL_ID",    282,
  563. X    "ROOM_ID",    283,
  564. X    "PORTAL_ID",    284,
  565. X    "TELEPRT_ID",    285,
  566. X    "BRANCH_ID",    286,
  567. X    "LEV",    287,
  568. X    "CHANCE_ID",    288,
  569. X    "CORRIDOR_ID",    289,
  570. X    "GOLD_ID",    290,
  571. X    "ENGRAVING_ID",    291,
  572. X    "FOUNTAIN_ID",    292,
  573. X    "POOL_ID",    293,
  574. X    "SINK_ID",    294,
  575. X    "NONE",    295,
  576. X    "RAND_CORRIDOR_ID",    296,
  577. X    "DOOR_STATE",    297,
  578. X    "LIGHT_STATE",    298,
  579. X    "CURSE_TYPE",    299,
  580. X    "ENGRAVING_TYPE",    300,
  581. X    "DIRECTION",    301,
  582. X    "RANDOM_TYPE",    302,
  583. X    "O_REGISTER",    303,
  584. X    "M_REGISTER",    304,
  585. X    "P_REGISTER",    305,
  586. X    "A_REGISTER",    306,
  587. X    "ALIGNMENT",    307,
  588. X    "LEFT_OR_RIGHT",    308,
  589. X    "CENTER",    309,
  590. X    "TOP_OR_BOT",    310,
  591. X    "ALTAR_TYPE",    311,
  592. X    "UP_OR_DOWN",    312,
  593. X    "SUBROOM_ID",    313,
  594. X    "NAME_ID",    314,
  595. X    "FLAGS_ID",    315,
  596. X    "FLAG_TYPE",    316,
  597. X    "MON_ATTITUDE",    317,
  598. X    "MON_ALERTNESS",    318,
  599. X    "MON_APPEARANCE",    319,
  600. X    ",",    44,
  601. X    ":",    58,
  602. X    "(",    40,
  603. X    ")",    41,
  604. X    "[",    91,
  605. X    "]",    93,
  606. X    "STRING",    320,
  607. X    "MAP_ID",    321,
  608. X    "-unknown-",    -1    /* ends search */
  609. X};
  610. X
  611. Xchar * yyreds[] =
  612. X{
  613. X    "-no such reduction-",
  614. X    "file : /* empty */",
  615. X    "file : levels",
  616. X    "levels : level",
  617. X    "levels : level levels",
  618. X    "level : maze_level",
  619. X    "level : room_level",
  620. X    "maze_level : maze_def flags lev_init messages regions",
  621. X    "room_level : level_def flags lev_init messages rreg_init rooms corridors_def",
  622. X    "level_def : LEVEL_ID ':' string",
  623. X    "lev_init : /* empty */",
  624. X    "lev_init : LEV_INIT_ID ':' CHAR ',' CHAR ',' BOOLEAN ',' BOOLEAN ',' light_state ',' walled",
  625. X    "walled : BOOLEAN",
  626. X    "walled : RANDOM_TYPE",
  627. X    "flags : /* empty */",
  628. X    "flags : FLAGS_ID ':' flag_list",
  629. X    "flag_list : FLAG_TYPE ',' flag_list",
  630. X    "flag_list : FLAG_TYPE",
  631. X    "messages : /* empty */",
  632. X    "messages : message messages",
  633. X    "message : MESSAGE_ID ':' STRING",
  634. X    "rreg_init : /* empty */",
  635. X    "rreg_init : rreg_init init_rreg",
  636. X    "init_rreg : RANDOM_OBJECTS_ID ':' object_list",
  637. X    "init_rreg : RANDOM_MONSTERS_ID ':' monster_list",
  638. X    "rooms : /* empty */",
  639. X    "rooms : roomlist",
  640. X    "roomlist : aroom",
  641. X    "roomlist : aroom roomlist",
  642. X    "corridors_def : random_corridors",
  643. X    "corridors_def : corridors",
  644. X    "random_corridors : RAND_CORRIDOR_ID",
  645. X    "corridors : /* empty */",
  646. X    "corridors : corridors corridor",
  647. X    "corridor : CORRIDOR_ID ':' corr_spec ',' corr_spec",
  648. X    "corridor : CORRIDOR_ID ':' corr_spec ',' INTEGER",
  649. X    "corr_spec : '(' INTEGER ',' DIRECTION ',' door_pos ')'",
  650. X    "aroom : room_def room_details",
  651. X    "aroom : subroom_def room_details",
  652. X    "subroom_def : SUBROOM_ID ':' room_type ',' light_state ',' subroom_pos ',' room_size ',' string roomfill",
  653. X    "room_def : ROOM_ID ':' room_type ',' light_state ',' room_pos ',' room_align ',' room_size roomfill",
  654. X    "roomfill : /* empty */",
  655. X    "roomfill : ',' BOOLEAN",
  656. X    "room_pos : '(' INTEGER ',' INTEGER ')'",
  657. X    "room_pos : RANDOM_TYPE",
  658. X    "subroom_pos : '(' INTEGER ',' INTEGER ')'",
  659. X    "subroom_pos : RANDOM_TYPE",
  660. X    "room_align : '(' h_justif ',' v_justif ')'",
  661. X    "room_align : RANDOM_TYPE",
  662. X    "room_size : '(' INTEGER ',' INTEGER ')'",
  663. X    "room_size : RANDOM_TYPE",
  664. X    "room_details : /* empty */",
  665. X    "room_details : room_details room_detail",
  666. X    "room_detail : room_name",
  667. X    "room_detail : room_chance",
  668. X    "room_detail : room_door",
  669. X    "room_detail : monster_detail",
  670. X    "room_detail : object_detail",
  671. X    "room_detail : trap_detail",
  672. X    "room_detail : altar_detail",
  673. X    "room_detail : fountain_detail",
  674. X    "room_detail : sink_detail",
  675. X    "room_detail : pool_detail",
  676. X    "room_detail : gold_detail",
  677. X    "room_detail : engraving_detail",
  678. X    "room_detail : stair_detail",
  679. X    "room_name : NAME_ID ':' string",
  680. X    "room_chance : CHANCE_ID ':' INTEGER",
  681. X    "room_door : DOOR_ID ':' secret ',' door_state ',' door_wall ',' door_pos",
  682. X    "secret : BOOLEAN",
  683. X    "secret : RANDOM_TYPE",
  684. X    "door_wall : DIRECTION",
  685. X    "door_wall : RANDOM_TYPE",
  686. X    "door_pos : INTEGER",
  687. X    "door_pos : RANDOM_TYPE",
  688. X    "maze_def : MAZE_ID ':' string ',' filling",
  689. X    "filling : CHAR",
  690. X    "filling : RANDOM_TYPE",
  691. X    "regions : aregion",
  692. X    "regions : aregion regions",
  693. X    "aregion : map_definition reg_init map_details",
  694. X    "map_definition : NOMAP_ID",
  695. X    "map_definition : map_geometry MAP_ID",
  696. X    "map_geometry : GEOMETRY_ID ':' h_justif ',' v_justif",
  697. X    "h_justif : LEFT_OR_RIGHT",
  698. X    "h_justif : CENTER",
  699. X    "v_justif : TOP_OR_BOT",
  700. X    "v_justif : CENTER",
  701. X    "reg_init : /* empty */",
  702. X    "reg_init : reg_init init_reg",
  703. X    "init_reg : RANDOM_OBJECTS_ID ':' object_list",
  704. X    "init_reg : RANDOM_PLACES_ID ':' place_list",
  705. X    "init_reg : RANDOM_MONSTERS_ID ':' monster_list",
  706. X    "object_list : object",
  707. X    "object_list : object ',' object_list",
  708. X    "monster_list : monster",
  709. X    "monster_list : monster ',' monster_list",
  710. X    "place_list : place",
  711. X    "place_list : place",
  712. X    "place_list : place ',' place_list",
  713. X    "map_details : /* empty */",
  714. X    "map_details : map_details map_detail",
  715. X    "map_detail : monster_detail",
  716. X    "map_detail : object_detail",
  717. X    "map_detail : door_detail",
  718. X    "map_detail : trap_detail",
  719. X    "map_detail : drawbridge_detail",
  720. X    "map_detail : region_detail",
  721. X    "map_detail : stair_region",
  722. X    "map_detail : portal_region",
  723. X    "map_detail : teleprt_region",
  724. X    "map_detail : branch_region",
  725. X    "map_detail : altar_detail",
  726. X    "map_detail : fountain_detail",
  727. X    "map_detail : mazewalk_detail",
  728. X    "map_detail : wallify_detail",
  729. X    "map_detail : ladder_detail",
  730. X    "map_detail : stair_detail",
  731. X    "map_detail : gold_detail",
  732. X    "map_detail : engraving_detail",
  733. X    "map_detail : diggable_detail",
  734. X    "map_detail : passwall_detail",
  735. X    "monster_detail : MONSTER_ID ':' monster_c ',' m_name ',' coordinate",
  736. X    "monster_detail : MONSTER_ID ':' monster_c ',' m_name ',' coordinate monster_infos",
  737. X    "monster_infos : /* empty */",
  738. X    "monster_infos : monster_infos monster_info",
  739. X    "monster_info : ',' string",
  740. X    "monster_info : ',' MON_ATTITUDE",
  741. X    "monster_info : ',' MON_ALERTNESS",
  742. X    "monster_info : ',' alignment",
  743. X    "monster_info : ',' MON_APPEARANCE string",
  744. X    "object_detail : OBJECT_ID ':' object_c ',' o_name ',' coordinate",
  745. X    "object_detail : OBJECT_ID ':' object_c ',' o_name ',' coordinate object_infos",
  746. X    "object_infos : /* empty */",
  747. X    "object_infos : ',' STRING ',' enchantment",
  748. X    "object_infos : ',' curse_state ',' enchantment ',' art_name",
  749. X    "curse_state : RANDOM_TYPE",
  750. X    "curse_state : CURSE_TYPE",
  751. X    "enchantment : INTEGER",
  752. X    "enchantment : RANDOM_TYPE",
  753. X    "door_detail : DOOR_ID ':' door_state ',' coordinate",
  754. X    "trap_detail : TRAP_ID ':' trap_name ',' coordinate",
  755. X    "drawbridge_detail : DRAWBRIDGE_ID ':' coordinate ',' DIRECTION ',' door_state",
  756. X    "mazewalk_detail : MAZEWALK_ID ':' coordinate ',' DIRECTION",
  757. X    "wallify_detail : WALLIFY_ID",
  758. X    "ladder_detail : LADDER_ID ':' coordinate ',' UP_OR_DOWN",
  759. X    "stair_detail : STAIR_ID ':' coordinate ',' UP_OR_DOWN",
  760. X    "stair_region : STAIR_ID ':' lev_region",
  761. X    "stair_region : STAIR_ID ':' lev_region ',' lev_region ',' UP_OR_DOWN",
  762. X    "portal_region : PORTAL_ID ':' lev_region",
  763. X    "portal_region : PORTAL_ID ':' lev_region ',' lev_region ',' string",
  764. X    "teleprt_region : TELEPRT_ID ':' lev_region",
  765. X    "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region",
  766. X    "teleprt_region : TELEPRT_ID ':' lev_region ',' lev_region teleprt_detail",
  767. X    "branch_region : BRANCH_ID ':' lev_region",
  768. X    "branch_region : BRANCH_ID ':' lev_region ',' lev_region",
  769. X    "teleprt_detail : /* empty */",
  770. X    "teleprt_detail : ',' UP_OR_DOWN",
  771. X    "lev_region : region",
  772. X    "lev_region : LEV '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
  773. X    "fountain_detail : FOUNTAIN_ID ':' coordinate",
  774. X    "sink_detail : SINK_ID ':' coordinate",
  775. X    "pool_detail : POOL_ID ':' coordinate",
  776. X    "diggable_detail : NON_DIGGABLE_ID ':' region",
  777. X    "passwall_detail : NON_PASSWALL_ID ':' region",
  778. X    "region_detail : REGION_ID ':' region ',' light_state ',' room_type prefilled",
  779. X    "altar_detail : ALTAR_ID ':' coordinate ',' alignment ',' altar_type",
  780. X    "gold_detail : GOLD_ID ':' amount ',' coordinate",
  781. X    "engraving_detail : ENGRAVING_ID ':' coordinate ',' engraving_type ',' string",
  782. X    "monster_c : monster",
  783. X    "monster_c : RANDOM_TYPE",
  784. X    "monster_c : m_register",
  785. X    "object_c : object",
  786. X    "object_c : RANDOM_TYPE",
  787. X    "object_c : o_register",
  788. X    "m_name : string",
  789. X    "m_name : RANDOM_TYPE",
  790. X    "o_name : string",
  791. X    "o_name : RANDOM_TYPE",
  792. X    "trap_name : string",
  793. X    "trap_name : RANDOM_TYPE",
  794. X    "room_type : string",
  795. X    "room_type : RANDOM_TYPE",
  796. X    "prefilled : /* empty */",
  797. X    "prefilled : ',' FILLING",
  798. X    "prefilled : ',' FILLING ',' BOOLEAN",
  799. X    "coordinate : coord",
  800. X    "coordinate : p_register",
  801. X    "coordinate : RANDOM_TYPE",
  802. X    "door_state : DOOR_STATE",
  803. X    "door_state : RANDOM_TYPE",
  804. X    "light_state : LIGHT_STATE",
  805. X    "light_state : RANDOM_TYPE",
  806. X    "alignment : ALIGNMENT",
  807. X    "alignment : a_register",
  808. X    "alignment : RANDOM_TYPE",
  809. X    "altar_type : ALTAR_TYPE",
  810. X    "altar_type : RANDOM_TYPE",
  811. X    "p_register : P_REGISTER '[' INTEGER ']'",
  812. X    "o_register : O_REGISTER '[' INTEGER ']'",
  813. X    "m_register : M_REGISTER '[' INTEGER ']'",
  814. X    "a_register : A_REGISTER '[' INTEGER ']'",
  815. X    "place : coord",
  816. X    "monster : CHAR",
  817. X    "object : CHAR",
  818. X    "string : STRING",
  819. X    "art_name : STRING",
  820. X    "art_name : NONE",
  821. X    "amount : INTEGER",
  822. X    "amount : RANDOM_TYPE",
  823. X    "engraving_type : ENGRAVING_TYPE",
  824. X    "engraving_type : RANDOM_TYPE",
  825. X    "coord : '(' INTEGER ',' INTEGER ')'",
  826. X    "region : '(' INTEGER ',' INTEGER ',' INTEGER ',' INTEGER ')'",
  827. X};
  828. X#endif /* YYDEBUG */
  829. X#line 1 "/usr/lib/yaccpar"
  830. X/*    @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10    */
  831. X
  832. X/*
  833. X** Skeleton parser driver for yacc output
  834. X*/
  835. X
  836. X/*
  837. X** yacc user known macros and defines
  838. X*/
  839. X#define YYERROR        goto yyerrlab
  840. X#define YYACCEPT    { free(yys); free(yyv); return(0); }
  841. X#define YYABORT        { free(yys); free(yyv); return(1); }
  842. X#define YYBACKUP( newtoken, newvalue )\
  843. X{\
  844. X    if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  845. X    {\
  846. X        yyerror( "syntax error - cannot backup" );\
  847. X        goto yyerrlab;\
  848. X    }\
  849. X    yychar = newtoken;\
  850. X    yystate = *yyps;\
  851. X    yylval = newvalue;\
  852. X    goto yynewstate;\
  853. X}
  854. X#define YYRECOVERING()    (!!yyerrflag)
  855. X#ifndef YYDEBUG
  856. X#    define YYDEBUG    1    /* make debugging available */
  857. X#endif
  858. X
  859. X/*
  860. X** user known globals
  861. X*/
  862. Xint yydebug;            /* set to 1 to get debugging */
  863. X
  864. X/*
  865. X** driver internal defines
  866. X*/
  867. X#define YYFLAG        (-1000)
  868. X
  869. X/*
  870. X** static variables used by the parser
  871. X*/
  872. Xstatic YYSTYPE *yyv;            /* value stack */
  873. Xstatic int *yys;            /* state stack */
  874. X
  875. Xstatic YYSTYPE *yypv;            /* top of value stack */
  876. Xstatic int *yyps;            /* top of state stack */
  877. X
  878. Xstatic int yystate;            /* current state */
  879. Xstatic int yytmp;            /* extra var (lasts between blocks) */
  880. X
  881. Xint yynerrs;            /* number of errors */
  882. X
  883. Xint yyerrflag;            /* error recovery flag */
  884. Xint yychar;            /* current input token number */
  885. X
  886. X
  887. X/*
  888. X** yyparse - return 0 if worked, 1 if syntax error not recovered from
  889. X*/
  890. Xint
  891. Xyyparse()
  892. X{
  893. X    register YYSTYPE *yypvt;    /* top of value stack for $vars */
  894. X    unsigned yymaxdepth = YYMAXDEPTH;
  895. X
  896. X    /*
  897. X    ** Initialize externals - yyparse may be called more than once
  898. X    */
  899. X    yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
  900. X    yys = (int*)malloc(yymaxdepth*sizeof(int));
  901. X    if (!yyv || !yys)
  902. X    {
  903. X        yyerror( "out of memory" );
  904. X        return(1);
  905. X    }
  906. X    yypv = &yyv[-1];
  907. X    yyps = &yys[-1];
  908. X    yystate = 0;
  909. X    yytmp = 0;
  910. X    yynerrs = 0;
  911. X    yyerrflag = 0;
  912. X    yychar = -1;
  913. X
  914. X    goto yystack;
  915. X    {
  916. X        register YYSTYPE *yy_pv;    /* top of value stack */
  917. X        register int *yy_ps;        /* top of state stack */
  918. X        register int yy_state;        /* current state */
  919. X        register int  yy_n;        /* internal state number info */
  920. X
  921. X        /*
  922. X        ** get globals into registers.
  923. X        ** branch to here only if YYBACKUP was called.
  924. X        */
  925. X    yynewstate:
  926. X        yy_pv = yypv;
  927. X        yy_ps = yyps;
  928. X        yy_state = yystate;
  929. X        goto yy_newstate;
  930. X
  931. X        /*
  932. X        ** get globals into registers.
  933. X        ** either we just started, or we just finished a reduction
  934. X        */
  935. X    yystack:
  936. X        yy_pv = yypv;
  937. X        yy_ps = yyps;
  938. X        yy_state = yystate;
  939. X
  940. X        /*
  941. X        ** top of for (;;) loop while no reductions done
  942. X        */
  943. X    yy_stack:
  944. X        /*
  945. X        ** put a state and value onto the stacks
  946. X        */
  947. X#if YYDEBUG
  948. X        /*
  949. X        ** if debugging, look up token value in list of value vs.
  950. X        ** name pairs.  0 and negative (-1) are special values.
  951. X        ** Note: linear search is used since time is not a real
  952. X        ** consideration while debugging.
  953. X        */
  954. X        if ( yydebug )
  955. X        {
  956. X            register int yy_i;
  957. X
  958. X            (void)printf( "State %d, token ", yy_state );
  959. X            if ( yychar == 0 )
  960. X                (void)printf( "end-of-file\n" );
  961. X            else if ( yychar < 0 )
  962. X                (void)printf( "-none-\n" );
  963. X            else
  964. X            {
  965. X                for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  966. X                    yy_i++ )
  967. X                {
  968. X                    if ( yytoks[yy_i].t_val == yychar )
  969. X                        break;
  970. X                }
  971. X                (void)printf( "%s\n", yytoks[yy_i].t_name );
  972. X            }
  973. X        }
  974. X#endif /* YYDEBUG */
  975. X        if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  976. X        {
  977. X            /*
  978. X            ** reallocate and recover.  Note that pointers
  979. X            ** have to be reset, or bad things will happen
  980. X            */
  981. X            int yyps_index = (yy_ps - yys);
  982. X            int yypv_index = (yy_pv - yyv);
  983. X            int yypvt_index = (yypvt - yyv);
  984. X            yymaxdepth += YYMAXDEPTH;
  985. X            yyv = (YYSTYPE*)realloc((char*)yyv,
  986. X                yymaxdepth * sizeof(YYSTYPE));
  987. X            yys = (int*)realloc((char*)yys,
  988. X                yymaxdepth * sizeof(int));
  989. X            if (!yyv || !yys)
  990. X            {
  991. X                yyerror( "yacc stack overflow" );
  992. X                return(1);
  993. X            }
  994. X            yy_ps = yys + yyps_index;
  995. X            yy_pv = yyv + yypv_index;
  996. X            yypvt = yyv + yypvt_index;
  997. X        }
  998. X        *yy_ps = yy_state;
  999. X        *++yy_pv = yyval;
  1000. X
  1001. X        /*
  1002. X        ** we have a new state - find out what to do
  1003. X        */
  1004. X    yy_newstate:
  1005. X        if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  1006. X            goto yydefault;        /* simple state */
  1007. X#if YYDEBUG
  1008. X        /*
  1009. X        ** if debugging, need to mark whether new token grabbed
  1010. X        */
  1011. X        yytmp = yychar < 0;
  1012. X#endif
  1013. X        if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1014. X            yychar = 0;        /* reached EOF */
  1015. X#if YYDEBUG
  1016. X        if ( yydebug && yytmp )
  1017. X        {
  1018. X            register int yy_i;
  1019. X
  1020. X            (void)printf( "Received token " );
  1021. X            if ( yychar == 0 )
  1022. X                (void)printf( "end-of-file\n" );
  1023. X            else if ( yychar < 0 )
  1024. X                (void)printf( "-none-\n" );
  1025. X            else
  1026. X            {
  1027. X                for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1028. X                    yy_i++ )
  1029. X                {
  1030. X                    if ( yytoks[yy_i].t_val == yychar )
  1031. X                        break;
  1032. X                }
  1033. X                (void)printf( "%s\n", yytoks[yy_i].t_name );
  1034. X            }
  1035. X        }
  1036. X#endif /* YYDEBUG */
  1037. X        if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  1038. X            goto yydefault;
  1039. X        if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  1040. X        {
  1041. X            yychar = -1;
  1042. X            yyval = yylval;
  1043. X            yy_state = yy_n;
  1044. X            if ( yyerrflag > 0 )
  1045. X                yyerrflag--;
  1046. X            goto yy_stack;
  1047. X        }
  1048. X
  1049. X    yydefault:
  1050. X        if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  1051. X        {
  1052. X#if YYDEBUG
  1053. X            yytmp = yychar < 0;
  1054. X#endif
  1055. X            if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1056. X                yychar = 0;        /* reached EOF */
  1057. X#if YYDEBUG
  1058. X            if ( yydebug && yytmp )
  1059. X            {
  1060. X                register int yy_i;
  1061. X
  1062. X                (void)printf( "Received token " );
  1063. X                if ( yychar == 0 )
  1064. X                    (void)printf( "end-of-file\n" );
  1065. X                else if ( yychar < 0 )
  1066. X                    (void)printf( "-none-\n" );
  1067. X                else
  1068. X                {
  1069. X                    for ( yy_i = 0;
  1070. X                        yytoks[yy_i].t_val >= 0;
  1071. X                        yy_i++ )
  1072. X                    {
  1073. X                        if ( yytoks[yy_i].t_val
  1074. X                            == yychar )
  1075. X                        {
  1076. X                            break;
  1077. X                        }
  1078. X                    }
  1079. X                    (void)printf( "%s\n", yytoks[yy_i].t_name );
  1080. X                }
  1081. X            }
  1082. X#endif /* YYDEBUG */
  1083. X            /*
  1084. X            ** look through exception table
  1085. X            */
  1086. X            {
  1087. X                register int *yyxi = yyexca;
  1088. X
  1089. X                while ( ( *yyxi != -1 ) ||
  1090. X                    ( yyxi[1] != yy_state ) )
  1091. X                {
  1092. X                    yyxi += 2;
  1093. X                }
  1094. X                while ( ( *(yyxi += 2) >= 0 ) &&
  1095. X                    ( *yyxi != yychar ) )
  1096. X                    ;
  1097. X                if ( ( yy_n = yyxi[1] ) < 0 )
  1098. X                    YYACCEPT;
  1099. X            }
  1100. X        }
  1101. X
  1102. X        /*
  1103. X        ** check for syntax error
  1104. X        */
  1105. X        if ( yy_n == 0 )    /* have an error */
  1106. X        {
  1107. X            /* no worry about speed here! */
  1108. X            switch ( yyerrflag )
  1109. X            {
  1110. X            case 0:        /* new error */
  1111. X                yyerror( "syntax error" );
  1112. X                goto skip_init;
  1113. X            yyerrlab:
  1114. X                /*
  1115. X                ** get globals into registers.
  1116. X                ** we have a user generated syntax type error
  1117. X                */
  1118. X                yy_pv = yypv;
  1119. X                yy_ps = yyps;
  1120. X                yy_state = yystate;
  1121. X                yynerrs++;
  1122. X            skip_init:
  1123. X            case 1:
  1124. X            case 2:        /* incompletely recovered error */
  1125. X                    /* try again... */
  1126. X                yyerrflag = 3;
  1127. X                /*
  1128. X                ** find state where "error" is a legal
  1129. X                ** shift action
  1130. X                */
  1131. X                while ( yy_ps >= yys )
  1132. X                {
  1133. X                    yy_n = yypact[ *yy_ps ] + YYERRCODE;
  1134. X                    if ( yy_n >= 0 && yy_n < YYLAST &&
  1135. X                        yychk[yyact[yy_n]] == YYERRCODE)                    {
  1136. X                        /*
  1137. X                        ** simulate shift of "error"
  1138. X                        */
  1139. X                        yy_state = yyact[ yy_n ];
  1140. X                        goto yy_stack;
  1141. X                    }
  1142. X                    /*
  1143. X                    ** current state has no shift on
  1144. X                    ** "error", pop stack
  1145. X                    */
  1146. X#if YYDEBUG
  1147. X#    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  1148. X                    if ( yydebug )
  1149. X                        (void)printf( _POP_, *yy_ps,
  1150. X                            yy_ps[-1] );
  1151. X#    undef _POP_
  1152. X#endif
  1153. X                    yy_ps--;
  1154. X                    yy_pv--;
  1155. X                }
  1156. X                /*
  1157. X                ** there is no state on stack with "error" as
  1158. X                ** a valid shift.  give up.
  1159. X                */
  1160. X                YYABORT;
  1161. X            case 3:        /* no shift yet; eat a token */
  1162. X#if YYDEBUG
  1163. X                /*
  1164. X                ** if debugging, look up token in list of
  1165. X                ** pairs.  0 and negative shouldn't occur,
  1166. X                ** but since timing doesn't matter when
  1167. X                ** debugging, it doesn't hurt to leave the
  1168. X                ** tests here.
  1169. X                */
  1170. X                if ( yydebug )
  1171. X                {
  1172. X                    register int yy_i;
  1173. X
  1174. X                    (void)printf( "Error recovery discards " );
  1175. X                    if ( yychar == 0 )
  1176. X                        (void)printf( "token end-of-file\n" );
  1177. X                    else if ( yychar < 0 )
  1178. X                        (void)printf( "token -none-\n" );
  1179. X                    else
  1180. X                    {
  1181. X                        for ( yy_i = 0;
  1182. X                            yytoks[yy_i].t_val >= 0;
  1183. X                            yy_i++ )
  1184. X                        {
  1185. X                            if ( yytoks[yy_i].t_val
  1186. X                                == yychar )
  1187. X                            {
  1188. X                                break;
  1189. X                            }
  1190. X                        }
  1191. X                        (void)printf( "token %s\n",
  1192. X                            yytoks[yy_i].t_name );
  1193. X                    }
  1194. X                }
  1195. X#endif /* YYDEBUG */
  1196. X                if ( yychar == 0 )    /* reached EOF. quit */
  1197. X                    YYABORT;
  1198. X                yychar = -1;
  1199. X                goto yy_newstate;
  1200. X            }
  1201. X        }/* end if ( yy_n == 0 ) */
  1202. X        /*
  1203. X        ** reduction by production yy_n
  1204. X        ** put stack tops, etc. so things right after switch
  1205. X        */
  1206. X#if YYDEBUG
  1207. X        /*
  1208. X        ** if debugging, print the string that is the user's
  1209. X        ** specification of the reduction which is just about
  1210. X        ** to be done.
  1211. X        */
  1212. X        if ( yydebug )
  1213. X            (void)printf( "Reduce by (%d) \"%s\"\n",
  1214. X                yy_n, yyreds[ yy_n ] );
  1215. X#endif
  1216. X        yytmp = yy_n;            /* value to switch over */
  1217. X        yypvt = yy_pv;            /* $vars top of value stack */
  1218. X        /*
  1219. X        ** Look in goto table for next state
  1220. X        ** Sorry about using yy_state here as temporary
  1221. X        ** register variable, but why not, if it works...
  1222. X        ** If yyr2[ yy_n ] doesn't have the low order bit
  1223. X        ** set, then there is no action to be done for
  1224. X        ** this reduction.  So, no saving & unsaving of
  1225. X        ** registers done.  The only difference between the
  1226. X        ** code just after the if and the body of the if is
  1227. X        ** the goto yy_stack in the body.  This way the test
  1228. X        ** can be made before the choice of what to do is needed.
  1229. X        */
  1230. X        {
  1231. X            /* length of production doubled with extra bit */
  1232. X            register int yy_len = yyr2[ yy_n ];
  1233. X
  1234. X            if ( !( yy_len & 01 ) )
  1235. X            {
  1236. X                yy_len >>= 1;
  1237. X                yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1238. X                yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1239. X                    *( yy_ps -= yy_len ) + 1;
  1240. X                if ( yy_state >= YYLAST ||
  1241. X                    yychk[ yy_state =
  1242. X                    yyact[ yy_state ] ] != -yy_n )
  1243. X                {
  1244. X                    yy_state = yyact[ yypgo[ yy_n ] ];
  1245. X                }
  1246. X                goto yy_stack;
  1247. X            }
  1248. X            yy_len >>= 1;
  1249. X            yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1250. X            yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1251. X                *( yy_ps -= yy_len ) + 1;
  1252. X            if ( yy_state >= YYLAST ||
  1253. X                yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1254. X            {
  1255. X                yy_state = yyact[ yypgo[ yy_n ] ];
  1256. X            }
  1257. X        }
  1258. X                    /* save until reenter driver code */
  1259. X        yystate = yy_state;
  1260. X        yyps = yy_ps;
  1261. X        yypv = yy_pv;
  1262. X    }
  1263. X    /*
  1264. X    ** code supplied by user is placed in this switch
  1265. X    */
  1266. X    switch( yytmp )
  1267. X    {
  1268. X        
  1269. Xcase 7:
  1270. X# line 194 "lev_comp.y"
  1271. X{
  1272. X              int fout, i;
  1273. X
  1274. X            if (fatal_error > 0) {
  1275. X                fprintf(stderr,
  1276. X                  "%s : %d errors detected. No output created!\n",
  1277. X                    fname, fatal_error);
  1278. X            } else {
  1279. X                char lbuf[20];
  1280. X                Strcpy(lbuf, yypvt[-4].map);
  1281. X                Strcat(lbuf, LEV_EXT);
  1282. X#ifdef MAC_THINKC5
  1283. X                fout = open(lbuf, O_WRONLY|O_CREAT|O_BINARY);
  1284. X#else
  1285. X                fout = open(lbuf, O_WRONLY|O_CREAT|O_BINARY, OMASK);
  1286. X#endif
  1287. X                if (fout < 0) {
  1288. X                    yyerror("Can't open output file!!");
  1289. X                    exit(1);
  1290. X                }
  1291. X                maze.flags = yypvt[-3].i;
  1292. X                memcpy(&(maze.init_lev), &(init_lev),
  1293. X                       sizeof(lev_init));
  1294. X                maze.numpart = npart;
  1295. X                maze.parts = NewTab(mazepart, npart);
  1296. X                for(i=0;i<npart;i++)
  1297. X                    maze.parts[i] = tmppart[i];
  1298. X                write_maze(fout, &maze);
  1299. X                (void) close(fout);
  1300. X                npart = 0;
  1301. X            }
  1302. X          } break;
  1303. Xcase 8:
  1304. X# line 229 "lev_comp.y"
  1305. X{
  1306. X            int fout, i;
  1307. X
  1308. X            if (fatal_error > 0) {
  1309. X                fprintf(stderr,
  1310. X                  "%s : %d errors detected. No output created!\n",
  1311. X                    fname, fatal_error);
  1312. X            } else {
  1313. X                char lbuf[20];
  1314. X                Strcpy(lbuf, yypvt[-6].map);
  1315. X                Strcat(lbuf, LEV_EXT);
  1316. X#ifdef MAC_THINKC5
  1317. X                fout = open(lbuf, O_WRONLY|O_CREAT|O_BINARY);
  1318. X#else
  1319. X                fout = open(lbuf, O_WRONLY|O_CREAT|O_BINARY, OMASK);
  1320. X#endif
  1321. X                if (fout < 0) {
  1322. X                    yyerror("Can't open output file!!");
  1323. X                    exit(1);
  1324. X                }
  1325. X                special_lev.flags = yypvt[-5].i;
  1326. X                memcpy(&(special_lev.init_lev), &(init_lev),
  1327. X                       sizeof(lev_init));
  1328. X                special_lev.nroom = nrooms;
  1329. X                special_lev.rooms = NewTab(room, nrooms);
  1330. X                for(i=0; i<nrooms; i++)
  1331. X                    special_lev.rooms[i] = tmproom[i];
  1332. X                special_lev.ncorr = ncorridor;
  1333. X                special_lev.corrs = NewTab(corridor, ncorridor);
  1334. X                for(i=0; i<ncorridor; i++)
  1335. X                    special_lev.corrs[i] = tmpcor[i];
  1336. X                if (check_subrooms())
  1337. X                    write_lev(fout, &special_lev);
  1338. X                free_rooms(special_lev.rooms,special_lev.nroom);
  1339. X                nrooms = 0;
  1340. X                ncorridor = 0;
  1341. X                (void) close(fout);
  1342. X            }
  1343. X          } break;
  1344. Xcase 9:
  1345. X# line 271 "lev_comp.y"
  1346. X{
  1347. X            if (index(yypvt[-0].map, '.'))
  1348. X                yyerror("Invalid dot ('.') in level name.");
  1349. X            if (strlen(yypvt[-0].map) > 8)
  1350. X                yyerror("Level names limited to 8 characters.");
  1351. X            yyval.map = yypvt[-0].map;
  1352. X            special_lev.nrobjects = 0;
  1353. X            special_lev.nrmonst = 0;
  1354. X          } break;
  1355. Xcase 10:
  1356. X# line 283 "lev_comp.y"
  1357. X{
  1358. X            init_lev.init_present = FALSE;
  1359. X            yyval.i = 0;
  1360. X          } break;
  1361. Xcase 11:
  1362. X# line 288 "lev_comp.y"
  1363. X{
  1364. X            init_lev.init_present = TRUE;
  1365. X            if((init_lev.fg = what_map_char(yypvt[-10].i)) == INVALID_TYPE)
  1366. X                yyerror("Invalid foreground type.");
  1367. X            if((init_lev.bg = what_map_char(yypvt[-8].i)) == INVALID_TYPE)
  1368. X                yyerror("Invalid background type.");
  1369. X            init_lev.smoothed = yypvt[-6].i;
  1370. X            init_lev.joined = yypvt[-4].i;
  1371. X            init_lev.lit = yypvt[-2].i;
  1372. X            init_lev.walled = yypvt[-0].i;
  1373. X            yyval.i = 1;
  1374. X          } break;
  1375. Xcase 14:
  1376. X# line 307 "lev_comp.y"
  1377. X{
  1378. X            yyval.i = 0;
  1379. X          } break;
  1380. Xcase 15:
  1381. X# line 311 "lev_comp.y"
  1382. X{
  1383. X            yyval.i = lev_flags;
  1384. X            lev_flags = 0;    /* clear for next user */
  1385. X          } break;
  1386. Xcase 16:
  1387. X# line 318 "lev_comp.y"
  1388. X{
  1389. X            lev_flags |= yypvt[-2].i;
  1390. X          } break;
  1391. Xcase 17:
  1392. X# line 322 "lev_comp.y"
  1393. X{
  1394. X            lev_flags |= yypvt[-0].i;
  1395. X          } break;
  1396. Xcase 20:
  1397. X# line 332 "lev_comp.y"
  1398. X{
  1399. X            int i, j;
  1400. X
  1401. X            i = strlen(yypvt[-0].map) + 1;
  1402. X            j = tmpmessage[0] ? strlen(tmpmessage) : 0;
  1403. X            if(i+j > 255) {
  1404. X               yyerror("Message string too long (>256 characters)");
  1405. X            } else {
  1406. X                if(j) tmpmessage[j++] = '\n';
  1407. X                strncpy(tmpmessage+j, yypvt[-0].map, i-1);
  1408. X                tmpmessage[j+i-1] = 0;
  1409. X            }
  1410. X          } break;
  1411. Xcase 23:
  1412. X# line 352 "lev_comp.y"
  1413. X{
  1414. X            if(special_lev.nrobjects) {
  1415. X                yyerror("Object registers already initialized!");
  1416. X            } else {
  1417. X                special_lev.nrobjects = n_olist;
  1418. X                special_lev.robjects = (char *) alloc(n_olist);
  1419. X                (void) memcpy((genericptr_t)special_lev.robjects,
  1420. X                      (genericptr_t)olist, n_olist);
  1421. X            }
  1422. X          } break;
  1423. Xcase 24:
  1424. X# line 363 "lev_comp.y"
  1425. X{
  1426. X            if(special_lev.nrmonst) {
  1427. X                yyerror("Monster registers already initialized!");
  1428. X            } else {
  1429. X                special_lev.nrmonst = n_mlist;
  1430. X                special_lev.rmonst = (char *) alloc(n_mlist);
  1431. X                (void) memcpy((genericptr_t)special_lev.rmonst,
  1432. X                      (genericptr_t)mlist, n_mlist);
  1433. X              }
  1434. X          } break;
  1435. END_OF_FILE
  1436. if test 46649 -ne `wc -c <'sys/share/lev_yacc.c1'`; then
  1437.     echo shar: \"'sys/share/lev_yacc.c1'\" unpacked with wrong size!
  1438. fi
  1439. # end of 'sys/share/lev_yacc.c1'
  1440. if test -f 'sys/winnt/Makefile.utl' -a "${1}" != "-c" ; then 
  1441.   echo shar: Renaming existing file \"'sys/winnt/Makefile.utl'\" to \"'sys/winnt/Makefile.utl.orig'\"
  1442.   mv -f 'sys/winnt/Makefile.utl' 'sys/winnt/Makefile.utl.orig'
  1443. fi
  1444. echo shar: Extracting \"'sys/winnt/Makefile.utl'\" \(7833 characters\)
  1445. sed "s/^X//" >'sys/winnt/Makefile.utl' <<'END_OF_FILE'
  1446. X#       SCCS Id: @(#)Makefile.utl               3.1     93/02/21
  1447. X#       Copyright (c) NetHack PC Development Team 1993
  1448. X#
  1449. X#       NT NetHack 3.1 Utilities Makefile 
  1450. X#    for MS NMAKE for Windows NT
  1451. X#  
  1452. X#    NT Version Tested:  October 1992 SDK pre-release
  1453. X#                + December '92 compiler fix
  1454. X#
  1455. X#       For questions read the Install.nt file included with
  1456. X#       the distribution.
  1457. X#
  1458. X#    Michael Allison 
  1459. X#
  1460. X# ---------------------------------------------------------------------
  1461. X#  In addition to your C compiler,
  1462. X#
  1463. X#  if you want to change   you will need a
  1464. X#  files with suffix   workalike for
  1465. X#         .y         yacc
  1466. X#         .l         lex
  1467. X#
  1468. X#  Executables.
  1469. X#
  1470. X# All the compiler and linker executables and flags are defined
  1471. X# by including the following nmake include file.
  1472. X#
  1473. X# Do not delete the following include.
  1474. X#
  1475. X!include <..\sys\winnt\nhincl.mak>
  1476. X#
  1477. X#YACC  = bison -y
  1478. XYACC   = yacc
  1479. XLEX   = flex
  1480. X#LEX   = lex
  1481. X
  1482. X#flex skeleton file (if needed)
  1483. XFLEXSKEL =
  1484. X#FLEXSKEL = -S../sys/winnt/flex.ske
  1485. X
  1486. XYTABC  = ytab.c
  1487. XYTABH  = ytab.h
  1488. XLEXYYC   = lexyy.c
  1489. X
  1490. X#
  1491. X#  Flags.
  1492. X#
  1493. X# Most flags for Windows NT Console I/O are defined in
  1494. X# the nmake include file above.
  1495. X#
  1496. X
  1497. X#
  1498. X#       Directories
  1499. X#
  1500. X
  1501. XINCL    = ..\include
  1502. XDAT     = ..\dat
  1503. XSRC     = ..\src
  1504. XDINCL   = ..\include
  1505. X
  1506. Xdefault: all
  1507. X
  1508. X
  1509. X#############################################################################
  1510. X#
  1511. X# nothing below this line should have to be changed
  1512. X#
  1513. XNTSUB = -DWIN32CON
  1514. X#
  1515. X#  Utility Objects.
  1516. X#
  1517. X
  1518. XMAKESRC     = makedefs.c
  1519. X
  1520. XSPLEVSRC    = lev_yacc.c  lev_lex.c   lev_main.c  panic.c
  1521. X
  1522. XDGNCOMPSRC  = dgn_yacc.c  dgn_lex.c   dgn_main.c
  1523. X
  1524. XMAKEOBJS    = makedefs.o  monst.o        objects.o
  1525. X
  1526. XSPLEVOBJS   = lev_yacc.o  lev_$(LEX).o  lev_main.o  alloc.o     \
  1527. X              monst.o     objects.o     panic.o  \
  1528. X              drawing.o   decl.o
  1529. X
  1530. XDGNCOMPOBJS = dgn_yacc.o  dgn_$(LEX).o  dgn_main.o  alloc.o      \
  1531. X              panic.o
  1532. X
  1533. XRECOVOBJS   =  recover.o
  1534. X
  1535. X#
  1536. X#  Header Objects.
  1537. X#
  1538. X
  1539. XDGN_FILE_H = $(INCL)\align.h    $(INCL)\dgn_file.h
  1540. XDUNGEON_H  = $(INCL)\align.h    $(INCL)\dungeon.h
  1541. XEMIN_H     = $(DUNGEON_H)       $(INCL)\emin.h
  1542. XEPRI_H     = $(DUNGEON_H)       $(INCL)\align.h     $(INCL)\epri.h
  1543. XESHK_H     = $(DUNGEON_H)       $(INCL)\eshk.h
  1544. XMONDATA_H  = $(INCL)\align.h    $(INCL)\mondata.h
  1545. XMONST_H    = $(INCL)\align.h    $(INCL)\monst.h
  1546. XPERMONST_H = $(INCL)\monattk.h  $(INCL)\monflag.h   $(INCL)\align.h   \
  1547. X             $(INCL)\permonst.h
  1548. XRM_H       = $(INCL)\align.h    $(INCL)\rm.h
  1549. XSP_LEV_H   = $(INCL)\align.h    $(INCL)\sp_lev.h
  1550. XVAULT_H    = $(DUNGEON_H)       $(INCL)\vault.h
  1551. XYOUPROP_H  = $(PERMONST_H)      $(MONDATA_H)        $(INCL)\prop.h    \
  1552. X             $(INCL)\pm.h       $(INCL)\youprop.h
  1553. XYOU_H      = $(MONST_H)         $(YOUPROP_H)        $(INCL)\align.h   \
  1554. X             $(INCL)\attrib.h   $(INCL)\you.h
  1555. XDISPLAY_H  = $(MONDATA_H)       $(INCL)\vision.h    $(INCL)\display.h
  1556. XNTCONF_H   = $(INCL)\micro.h    $(INCL)\system.h    $(INCL)\ntconf.h
  1557. XCONFIG_H   = $(GLOBAL_H)        $(INCL)\tradstdc.h  $(INCL)\config.h
  1558. XDECL_H     = $(YOU_H)           $(INCL)\spell.h     $(INCL)\color.h   \
  1559. X             $(INCL)\obj.h      $(INCL)\onames.h    $(INCL)\pm.h      \
  1560. X             $(INCL)\decl.h
  1561. XGLOBAL_H   = $(NTCONF_H)        $(INCL)\coord.h     $(INCL)\global.h
  1562. XHACK_H     = $(CONFIG_H)        $(DUNGEON_H)        $(DECL_H)         \
  1563. X             $(DISPLAY_H)       $(INCL)\monsym.h    $(INCL)\mkroom.h  \
  1564. X             $(INCL)\objclass.h $(INCL)\trap.h      $(INCL)\flag.h    \
  1565. X             $(RM_H)            $(INCL)\vision.h    $(INCL)\wintype.h \
  1566. X             $(INCL)\engrave.h  $(INCL)\rect.h      $(INCL)\extern.h \
  1567. X             $(INCL)\trampoli.h $(INCL)\hack.h
  1568. X
  1569. X
  1570. X
  1571. X#
  1572. X#  Make Rules.
  1573. X#
  1574. X
  1575. X.SUFFIXES:  .exe .o .c .y .l
  1576. X
  1577. X.c.o:
  1578. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $*.c
  1579. X
  1580. X#
  1581. X#  Primary Targets.
  1582. X#
  1583. Xall:   utility.tag
  1584. X
  1585. Xutility.tag: $(INCL)\trap.h    $(INCL)\onames.h        \
  1586. X             $(INCL)\pm.h      $(SRC)\monstr.c   $(SRC)\vis_tab.c  \
  1587. X             lev_comp.exe      dgn_comp.exe    recover.exe
  1588. X    echo utilities made > utility.tag
  1589. X
  1590. Xclean:
  1591. X    if exist *.o del *.o
  1592. X    if exist *.map del *.map
  1593. X
  1594. Xspotless: clean
  1595. X    if exist utility.tag       del utility.tag
  1596. X    if exist makedefs.exe      del makedefs.exe
  1597. X    if exist lev_comp.exe      del lev_comp.exe
  1598. X    if exist dgn_comp.exe      del dgn_comp.exe
  1599. X    if exist recover.exe       del recover.exe
  1600. X    if exist $(INCL)\date.h    del $(INCL)\date.h
  1601. X    if exist $(INCL)\onames.h  del $(INCL)\onames.h
  1602. X    if exist $(INCL)\pm.h      del $(INCL)\pm.h
  1603. X    if exist $(INCL)\vis_tab.h del $(INCL)\vis_tab.h
  1604. X    if exist $(SRC)\monstr.c   del $(SRC)\monstr.c
  1605. X    if exist $(SRC)\vis_tab.c  del $(SRC)\vis_tab.c
  1606. X
  1607. X#
  1608. X#  Secondary Targets.
  1609. X#
  1610. X
  1611. X$(INCL)\onames.h: makedefs.exe
  1612. X    .\makedefs -o
  1613. X
  1614. X$(INCL)\pm.h: makedefs.exe
  1615. X    .\makedefs -p
  1616. X
  1617. X$(SRC)\monstr.c: makedefs.exe
  1618. X    .\makedefs -m
  1619. X
  1620. X$(SRC)\vis_tab.h: makedefs.exe
  1621. X    .\makedefs -z
  1622. X
  1623. X$(SRC)\vis_tab.c: makedefs.exe
  1624. X    .\makedefs -z
  1625. X
  1626. X#
  1627. X#  Makedefs Stuff
  1628. X#
  1629. X
  1630. Xmakedefs.exe:  $(MAKEOBJS)
  1631. X    $(link) $(linkdebug) $(conflags) -out:$*.exe $(MAKEOBJS) $(conlibs)
  1632. X
  1633. Xmakedefs.o:  $(CONFIG_H)        $(PERMONST_H)      $(INCL)\objclass.h \
  1634. X             $(INCL)\monsym.h   $(INCL)\qtext.h
  1635. X
  1636. X#
  1637. X#  Level Compiler Dependencies
  1638. X#
  1639. X
  1640. Xlev_comp.exe:  $(SPLEVOBJS)
  1641. X    @echo $(SPLEVOBJS) > $*.res
  1642. X    $(link) $(linkdebug) $(conflags) -out:$*.exe @$*.res $(conlibs)
  1643. X
  1644. Xlev_yacc.o:  $(HACK_H)   $(SP_LEV_H)    lev_yacc.c
  1645. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $*.c
  1646. X
  1647. Xlev_$(LEX).o:  $(HACK_H)   $(SP_LEV_H)    $(INCL)\lev_comp.h \
  1648. X               lev_lex.c
  1649. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o \
  1650. X               lev_lex.c
  1651. X
  1652. Xlev_main.o:  $(HACK_H)
  1653. X
  1654. X$(INCL)\lev_comp.h: lev_yacc.c
  1655. X
  1656. Xlev_yacc.c:  lev_comp.y
  1657. X    $(YACC) -d lev_comp.y
  1658. X    copy $(YTABC) lev_yacc.c
  1659. X    copy $(YTABH) $(DINCL)\lev_comp.h
  1660. X    del $(YTABC)
  1661. X    del $(YTABH)
  1662. X
  1663. X
  1664. Xlev_lex.c:  lev_comp.l
  1665. X    $(LEX) $(FLEXSKEL) lev_comp.l
  1666. X    copy $(LEXYYC) lev_lex.c
  1667. X    del $(LEXYYC)
  1668. X
  1669. X
  1670. X#
  1671. X#  Dungeon Dependencies
  1672. X#
  1673. X
  1674. Xdgn_comp.exe:  $(DGNCOMPOBJS)
  1675. X    @echo $(DGNCOMPOBJS) > $*.res
  1676. X    $(link) $(linkdebug) $(conflags) -out:$*.exe @$*.res $(conlibs)
  1677. X
  1678. Xdgn_yacc.o:  $(HACK_H)   $(DGN_FILE_H)  dgn_yacc.c
  1679. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $*.c
  1680. X
  1681. Xdgn_$(LEX).o:  $(HACK_H)   $(DGN_FILE_H)  $(INCL)\dgn_comp.h \
  1682. X               dgn_lex.c
  1683. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o \
  1684. X           dgn_lex.c
  1685. X
  1686. Xdgn_main.o:  $(HACK_H)
  1687. X
  1688. X$(INCL)\dgn_comp.h:  dgn_yacc.c
  1689. X
  1690. Xdgn_yacc.c: dgn_comp.y
  1691. X    $(YACC) -d dgn_comp.y
  1692. X    copy $(YTABC) dgn_yacc.c
  1693. X    copy $(YTABH) $(DINCL)\dgn_comp.h
  1694. X    del $(YTABC)
  1695. X    del $(YTABH)
  1696. X
  1697. Xdgn_lex.c:  dgn_comp.l
  1698. X    $(LEX) $(FLEXSKEL)  dgn_comp.l
  1699. X    copy $(LEXYYC) dgn_lex.c
  1700. X    del $(LEXYYC)
  1701. X
  1702. X#
  1703. X#  Recover Utility
  1704. X#
  1705. X
  1706. Xrecover.exe:   $(RECOVOBJS)
  1707. X    $(link) $(linkdebug) $(conflags) -out:$*.exe $(RECOVOBJS) $(conlibs)
  1708. X
  1709. Xrecover.o:   $(CONFIG_H) recover.c
  1710. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $*.c
  1711. X
  1712. X#
  1713. X#  Other Dependencies.
  1714. X#
  1715. X
  1716. Xalloc.o: $(CONFIG_H)     $(SRC)\alloc.c
  1717. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $(SRC)\$*.c
  1718. X
  1719. Xdrawing.o: $(CONFIG_H) $(SRC)\drawing.c
  1720. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $(SRC)\$*.c
  1721. X
  1722. Xdecl.o: $(CONFIG_H) $(SRC)\decl.c
  1723. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $(SRC)\$*.c
  1724. X
  1725. Xmonst.o: $(CONFIG_H)         $(PERMONST_H)      $(ESHK_H)          \
  1726. X         $(EPRI_H)           $(VAULT_H)         $(INCL)\monsym.h   \
  1727. X         $(INCL)\color.h     $(SRC)\monst.c
  1728. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $(SRC)\$*.c
  1729. X
  1730. Xobjects.o: $(CONFIG_H)        $(INCL)\obj.h      $(INCL)\objclass.h \
  1731. X           $(INCL)\prop.h     $(INCL)\color.h    $(SRC)\objects.c
  1732. X    $(cc) $(cflags) $(NTSUB) -I$(INCL)  $(cvars) $(cdebug) -Fo$*.o $(SRC)\$*.c
  1733. X
  1734. Xpanic.o:   $(CONFIG_H)
  1735. END_OF_FILE
  1736. if test 7833 -ne `wc -c <'sys/winnt/Makefile.utl'`; then
  1737.     echo shar: \"'sys/winnt/Makefile.utl'\" unpacked with wrong size!
  1738. fi
  1739. # end of 'sys/winnt/Makefile.utl'
  1740. echo shar: End of archive 20 \(of 31\).
  1741. cp /dev/null ark20isdone
  1742. MISSING=""
  1743. 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 ; do
  1744.     if test ! -f ark${I}isdone ; then
  1745.     MISSING="${MISSING} ${I}"
  1746.     fi
  1747. done
  1748. if test "${MISSING}" = "" ; then
  1749.     echo You have unpacked all 31 archives.
  1750.     echo "Now execute 'patchit.sh'"
  1751.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1752. else
  1753.     echo You still need to unpack the following archives:
  1754.     echo "        " ${MISSING}
  1755. fi
  1756. ##  End of shell archive.
  1757. exit 0
  1758.