Merge branch 'NetHack-3.6.2'
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.269 $ $NHDT-Date: 1551739190 2019/03/04 22:39:50 $
|
$NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.270 $ $NHDT-Date: 1551920371 2019/03/07 00:59:31 $
|
||||||
|
|
||||||
This fixes36.2 file is here to capture information about updates in the 3.6.x
|
This fixes36.2 file is here to capture information about updates in the 3.6.x
|
||||||
lineage following the release of 3.6.1 in April 2018. Please note, however,
|
lineage following the release of 3.6.1 in April 2018. Please note, however,
|
||||||
@@ -389,6 +389,9 @@ wand or spell of undead turning handled messages and wand-discovery in a
|
|||||||
non-intuitive manner biased toward healers
|
non-intuitive manner biased toward healers
|
||||||
if steed ate a mimic corpse and began masquerading as something, hero could
|
if steed ate a mimic corpse and began masquerading as something, hero could
|
||||||
keep riding it; force dismount
|
keep riding it; force dismount
|
||||||
|
kicking an object stack moves the topmost 1, but range calculation used the
|
||||||
|
weight of the whole stack to decide how far it would move, possibly
|
||||||
|
yielding "thump" result with no movement despite being a light item
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 config1.h $NHDT-Date: 1432512781 2015/05/25 00:13:01 $ $NHDT-Branch: master $:$NHDT-Revision: 1.17 $ */
|
/* NetHack 3.6 config1.h $NHDT-Date: 1552007489 2019/03/08 01:11:29 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.20 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. */
|
/*-Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -146,7 +146,9 @@
|
|||||||
#undef UNIX
|
#undef UNIX
|
||||||
#ifdef __DECC
|
#ifdef __DECC
|
||||||
#ifndef __DECC_VER /* buggy early versions want widened prototypes */
|
#ifndef __DECC_VER /* buggy early versions want widened prototypes */
|
||||||
#define NOTSTDC /* except when typedefs are involved */
|
#define NOTSTDC /* except when typedefs are involved */
|
||||||
|
/* [25 or so years later... That was probably uchar widening to */
|
||||||
|
/* 'unsigned int' rather than anything to do with typedefs. pr] */
|
||||||
#define USE_VARARGS
|
#define USE_VARARGS
|
||||||
#else
|
#else
|
||||||
#define NHSTDC
|
#define NHSTDC
|
||||||
@@ -200,10 +202,10 @@
|
|||||||
/* Because:
|
/* Because:
|
||||||
* #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1
|
* #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1
|
||||||
* #define FOO 1 or on command-line -DFOO
|
* #define FOO 1 or on command-line -DFOO
|
||||||
* => defined(1) => (-1 != - 1 - 1) => 1
|
* => defined(1) => (-1 != - 1 - 1) => 1
|
||||||
* if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1
|
* if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1
|
||||||
* for -DFOO, oh well.
|
* for -DFOO, oh well.
|
||||||
* => defined(0) => (-1 != - 0 - 1) => 0
|
* => defined(0) => (-1 != - 0 - 1) => 0
|
||||||
*
|
*
|
||||||
* But:
|
* But:
|
||||||
* defined("") => (-1 != - "" - 1)
|
* defined("") => (-1 != - "" - 1)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 integer.h $NHDT-Date: 1524689514 2018/04/25 20:51:54 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.0 $ */
|
/* NetHack 3.6 integer.h $NHDT-Date: 1551901047 2019/03/06 19:37:27 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.7 $ */
|
||||||
/* Copyright (c) 2016 by Michael Allison */
|
/* Copyright (c) 2016 by Michael Allison */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -32,21 +32,33 @@
|
|||||||
#ifndef INTEGER_H
|
#ifndef INTEGER_H
|
||||||
#define INTEGER_H
|
#define INTEGER_H
|
||||||
|
|
||||||
#if (defined(__STDC__) && __STDC_VERSION__ >= 199901L)
|
/* DEC C (aka Compaq C for a while, HP C these days) for VMS is
|
||||||
|
classified as a freestanding implementation rather than a hosted one
|
||||||
|
and even though it claims to be C99, it does not provide <stdint.h>. */
|
||||||
|
#if defined(__DECC) && defined(VMS) && !defined(HAS_STDINT_H)
|
||||||
|
#define HAS_INTTYPES_H
|
||||||
|
#else /*!__DECC*/
|
||||||
|
|
||||||
|
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
|
||||||
|
&& !defined(HAS_STDINT_H)
|
||||||
/* The compiler claims to conform to C99. Use stdint.h */
|
/* The compiler claims to conform to C99. Use stdint.h */
|
||||||
#include <stdint.h>
|
#define HAS_STDINT_H
|
||||||
#define SKIP_STDINT_WORKAROUND
|
|
||||||
#else
|
|
||||||
# if defined(HAS_STDINT_H)
|
|
||||||
/* Some compilers have stdint.h but don't conform to all of C99. */
|
|
||||||
#include <stdint.h>
|
|
||||||
#define SKIP_STDINT_WORKAROUND
|
|
||||||
# endif
|
|
||||||
# if defined(__GNUC__) && defined(__INT64_MAX__)
|
|
||||||
# include <stdint.h>
|
|
||||||
# define SKIP_STDINT_WORKAROUND
|
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(__GNUC__) && defined(__INT64_MAX__) && !defined(HAS_STDINT_H)
|
||||||
|
#define HAS_STDINT_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /*?__DECC*/
|
||||||
|
|
||||||
|
#ifdef HAS_STDINT_H
|
||||||
|
#include <stdint.h>
|
||||||
|
#define SKIP_STDINT_WORKAROUND
|
||||||
|
#else /*!stdint*/
|
||||||
|
#ifdef HAS_INTTYPES_H
|
||||||
|
#include <inttypes.h>
|
||||||
|
#define SKIP_STDINT_WORKAROUND
|
||||||
|
#endif
|
||||||
|
#endif /*?stdint*/
|
||||||
|
|
||||||
#ifndef SKIP_STDINT_WORKAROUND /* !C99 */
|
#ifndef SKIP_STDINT_WORKAROUND /* !C99 */
|
||||||
/*
|
/*
|
||||||
@@ -59,8 +71,8 @@ typedef unsigned short uint16_t;
|
|||||||
#if defined(__WATCOMC__) && !defined(__386__)
|
#if defined(__WATCOMC__) && !defined(__386__)
|
||||||
/* Open Watcom providing a 16 bit build for MS-DOS or OS/2 */
|
/* Open Watcom providing a 16 bit build for MS-DOS or OS/2 */
|
||||||
/* int is 16 bits; use long for 32 bits */
|
/* int is 16 bits; use long for 32 bits */
|
||||||
typedef long int32_t;
|
typedef long int int32_t;
|
||||||
typedef unsigned long uint32_t;
|
typedef unsigned long int uint32_t;
|
||||||
#else
|
#else
|
||||||
/* Otherwise, assume either a 32- or 64-bit compiler */
|
/* Otherwise, assume either a 32- or 64-bit compiler */
|
||||||
/* long may be 64 bits; use int for 32 bits */
|
/* long may be 64 bits; use int for 32 bits */
|
||||||
@@ -68,8 +80,13 @@ typedef int int32_t;
|
|||||||
typedef unsigned int uint32_t;
|
typedef unsigned int uint32_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef long long int64_t;
|
/* The only place where nethack cares about 64-bit integers is in the
|
||||||
typedef unsigned long long uint64_t;
|
Isaac64 random number generator. If your environment can't support
|
||||||
|
64-bit integers, you should comment out USE_ISAAC64 in config.h so
|
||||||
|
that the previous RNG gets used instead. Then this file will be
|
||||||
|
inhibited and it won't matter what the int64_t and uint64_t lines are. */
|
||||||
|
typedef long long int int64_t;
|
||||||
|
typedef unsigned long long int uint64_t;
|
||||||
|
|
||||||
#endif /* !C99 */
|
#endif /* !C99 */
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 tradstdc.h $NHDT-Date: 1545270756 2018/12/20 01:52:36 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.34 $ */
|
/* NetHack 3.6 tradstdc.h $NHDT-Date: 1552007504 2019/03/08 01:11:44 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.35 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2006. */
|
/*-Copyright (c) Robert Patrick Rankin, 2006. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -278,12 +278,16 @@ typedef genericptr genericptr_t; /* (void *) or (char *) */
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* According to ANSI, prototypes for old-style declarations must widen the
|
* According to ANSI C, prototypes for old-style function definitions like
|
||||||
* arguments to int. However, the MSDOS compilers accept shorter arguments
|
* int func(arg) short arg; { ... }
|
||||||
* (char, short, etc.) in prototypes and do typechecking with them. Therefore
|
* must specify widened arguments (char and short to int, float to double),
|
||||||
* this mess to allow the better typechecking while also allowing some
|
* int func(int);
|
||||||
* prototypes for the ANSI compilers so people quit trying to fix the
|
* same as how narrow arguments get passed when there is no prototype info.
|
||||||
* prototypes to match the standard and thus lose the typechecking.
|
* However, various compilers accept shorter arguments (char, short, etc.)
|
||||||
|
* in prototypes and do typechecking with them. Therefore this mess to
|
||||||
|
* allow the better typechecking while also allowing some prototypes for
|
||||||
|
* the ANSI compilers so people quit trying to fix the prototypes to match
|
||||||
|
* the standard and thus lose the typechecking.
|
||||||
*/
|
*/
|
||||||
#if defined(MSDOS) && !defined(__GO32__)
|
#if defined(MSDOS) && !defined(__GO32__)
|
||||||
#define UNWIDENED_PROTOTYPES
|
#define UNWIDENED_PROTOTYPES
|
||||||
@@ -332,7 +336,9 @@ typedef genericptr genericptr_t; /* (void *) or (char *) */
|
|||||||
#ifdef WIDENED_PROTOTYPES
|
#ifdef WIDENED_PROTOTYPES
|
||||||
#define CHAR_P int
|
#define CHAR_P int
|
||||||
#define SCHAR_P int
|
#define SCHAR_P int
|
||||||
|
#ifndef UCHAR_P
|
||||||
#define UCHAR_P int
|
#define UCHAR_P int
|
||||||
|
#endif
|
||||||
#define XCHAR_P int
|
#define XCHAR_P int
|
||||||
#define SHORT_P int
|
#define SHORT_P int
|
||||||
#define BOOLEAN_P int
|
#define BOOLEAN_P int
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 unixconf.h $NHDT-Date: 1550532737 2019/02/18 23:32:17 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.39 $ */
|
/* NetHack 3.6 unixconf.h $NHDT-Date: 1552007506 2019/03/08 01:11:46 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.40 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Pasi Kallinen, 2018. */
|
/*-Copyright (c) Pasi Kallinen, 2018. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -271,6 +271,13 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Digital Unix/HP Tru64 -- see vmsconf.h for explanation */
|
||||||
|
#if defined(__DECC) && (!defined(__STDC__) || !__STDC__)
|
||||||
|
#define UCHAR_P unsigned int
|
||||||
|
#else
|
||||||
|
#define UCHAR_P int
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BSD/ULTRIX systems are normally the only ones that can suspend processes.
|
* BSD/ULTRIX systems are normally the only ones that can suspend processes.
|
||||||
* Suspending NetHack processes cleanly should be easy to add to other systems
|
* Suspending NetHack processes cleanly should be easy to add to other systems
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 vmsconf.h $NHDT-Date: 1432512780 2015/05/25 00:13:00 $ $NHDT-Branch: master $:$NHDT-Revision: 1.22 $ */
|
/* NetHack 3.6 vmsconf.h $NHDT-Date: 1552007507 2019/03/08 01:11:47 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.28 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Robert Patrick Rankin, 2011. */
|
/*-Copyright (c) Robert Patrick Rankin, 2011. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -160,6 +160,12 @@ PANICTRACE_GDB=2 #at conclusion of panic, show a call traceback and then
|
|||||||
|
|
||||||
#define RANDOM /* use sys/share/random.c instead of vaxcrtl rand */
|
#define RANDOM /* use sys/share/random.c instead of vaxcrtl rand */
|
||||||
|
|
||||||
|
/* config.h defines USE_ISAAC64; we'll use it on Alpha or IA64 but not VAX;
|
||||||
|
it overrides RANDOM */
|
||||||
|
#if (defined(VAX) || defined(vax) || defined(__vax)) && defined(USE_ISAAC64)
|
||||||
|
#undef ISAAC64
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FCMASK 0660 /* file creation mask */
|
#define FCMASK 0660 /* file creation mask */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -186,6 +192,21 @@ PANICTRACE_GDB=2 #at conclusion of panic, show a call traceback and then
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ANSI C uses "value preserving rules", where 'unsigned char' and
|
||||||
|
'unsigned short' promote to 'int' if signed int is big enough to hold
|
||||||
|
all possible values, rather than traditional "sign preserving rules"
|
||||||
|
where 'unsigned char' and 'unsigned short' promote to 'unsigned int'.
|
||||||
|
However, the ANSI C rules aren't binding on non-ANSI compilers.
|
||||||
|
When DEC C (aka Compaq C, then HP C) is in non-standard 'common' mode
|
||||||
|
it supports prototypes that expect widened types, but it uses the old
|
||||||
|
sign preserving rules for how to widen narrow unsigned types. (In its
|
||||||
|
default 'relaxed' mode, __STDC__ is 1 and uchar widens to 'int'.) */
|
||||||
|
#if defined(__DECC) && (!defined(__STDC__) || !__STDC__)
|
||||||
|
#define UCHAR_P unsigned int
|
||||||
|
#else
|
||||||
|
#define UCHAR_P int
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __DECC
|
#ifdef __DECC
|
||||||
#define STRICT_REF_DEF /* used in lev_main.c */
|
#define STRICT_REF_DEF /* used in lev_main.c */
|
||||||
#endif
|
#endif
|
||||||
@@ -237,6 +258,12 @@ typedef __mode_t mode_t;
|
|||||||
|
|
||||||
#define tgetch vms_getchar
|
#define tgetch vms_getchar
|
||||||
|
|
||||||
|
#if defined(__DECC_VER) && (__DECC_VER >= 50000000)
|
||||||
|
/* for cc/Standard=ANSI89, suppress notification that '$' in identifiers
|
||||||
|
is an extension; sys/vms/*.c needs it regardless of strict ANSI mode */
|
||||||
|
#pragma message disable DOLLARID
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
|
||||||
#define index strchr
|
#define index strchr
|
||||||
@@ -247,8 +274,7 @@ typedef __mode_t mode_t;
|
|||||||
# if defined(RANDOM)
|
# if defined(RANDOM)
|
||||||
# define Rand() random()
|
# define Rand() random()
|
||||||
/* VMS V7 adds these entry points to DECC$SHR; stick with the nethack-supplied
|
/* VMS V7 adds these entry points to DECC$SHR; stick with the nethack-supplied
|
||||||
code to avoid having to deal with version-specific conditionalized builds
|
code to avoid having to deal with version-specific conditionalized builds */
|
||||||
*/
|
|
||||||
# define random nh_random
|
# define random nh_random
|
||||||
# define srandom nh_srandom
|
# define srandom nh_srandom
|
||||||
# define initstate nh_initstate
|
# define initstate nh_initstate
|
||||||
@@ -270,7 +296,7 @@ typedef __mode_t mode_t;
|
|||||||
#define link(f1, f2) vms_link(f1, f2) /* vmsfiles.c */
|
#define link(f1, f2) vms_link(f1, f2) /* vmsfiles.c */
|
||||||
#define open(f, k, m) vms_open(f, k, m) /* vmsfiles.c */
|
#define open(f, k, m) vms_open(f, k, m) /* vmsfiles.c */
|
||||||
#define fopen(f, m) vms_fopen(f, m) /* vmsfiles.c */
|
#define fopen(f, m) vms_fopen(f, m) /* vmsfiles.c */
|
||||||
/* #define unlink(f0) vms_unlink(f0) /* vmsfiles.c */
|
/* #define unlink(f0) vms_unlink(f0) /* vmsfiles.c */
|
||||||
#ifdef VERYOLD_VMS
|
#ifdef VERYOLD_VMS
|
||||||
#define unlink(f0) delete (f0) /* vaxcrtl */
|
#define unlink(f0) delete (f0) /* vaxcrtl */
|
||||||
#else
|
#else
|
||||||
|
|||||||
25
src/dokick.c
25
src/dokick.c
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 dokick.c $NHDT-Date: 1548209738 2019/01/23 02:15:38 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.130 $ */
|
/* NetHack 3.6 dokick.c $NHDT-Date: 1551920353 2019/03/07 00:59:13 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.131 $ */
|
||||||
/* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
|
/* Copyright (c) Izchak Miller, Mike Stephenson, Steve Linhart, 1989. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
@@ -524,9 +524,25 @@ xchar x, y;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* range < 2 means the object will not move. */
|
isgold = (g.kickedobj->oclass == COIN_CLASS);
|
||||||
/* maybe dexterity should also figure here. */
|
{
|
||||||
range = (int) ((ACURRSTR) / 2 - g.kickedobj->owt / 40);
|
int k_owt = (int) g.kickedobj->owt;
|
||||||
|
|
||||||
|
/* for non-gold stack, 1 item will be split off below (unless an
|
||||||
|
early return occurs, so we aren't moving the split to here);
|
||||||
|
calculate the range for that 1 rather than for the whole stack */
|
||||||
|
if (g.kickedobj->quan > 1L && !isgold) {
|
||||||
|
long save_quan = g.kickedobj->quan;
|
||||||
|
|
||||||
|
g.kickedobj->quan = 1L;
|
||||||
|
k_owt = weight(g.kickedobj);
|
||||||
|
g.kickedobj->quan = save_quan;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* range < 2 means the object will not move
|
||||||
|
(maybe dexterity should also figure here) */
|
||||||
|
range = ((int) ACURRSTR) / 2 - k_owt / 40;
|
||||||
|
}
|
||||||
|
|
||||||
if (martial())
|
if (martial())
|
||||||
range += rnd(3);
|
range += rnd(3);
|
||||||
@@ -556,7 +572,6 @@ xchar x, y;
|
|||||||
costly = (!(g.kickedobj->no_charge && !Has_contents(g.kickedobj))
|
costly = (!(g.kickedobj->no_charge && !Has_contents(g.kickedobj))
|
||||||
&& (shkp = shop_keeper(*in_rooms(x, y, SHOPBASE))) != 0
|
&& (shkp = shop_keeper(*in_rooms(x, y, SHOPBASE))) != 0
|
||||||
&& costly_spot(x, y));
|
&& costly_spot(x, y));
|
||||||
isgold = (g.kickedobj->oclass == COIN_CLASS);
|
|
||||||
|
|
||||||
if (IS_ROCK(levl[x][y].typ) || closed_door(x, y)) {
|
if (IS_ROCK(levl[x][y].typ) || closed_door(x, y)) {
|
||||||
if ((!martial() && rn2(20) > ACURR(A_DEX))
|
if ((!martial() && rn2(20) > ACURR(A_DEX))
|
||||||
|
|||||||
@@ -19,16 +19,9 @@
|
|||||||
#define NO_DOWN 275
|
#define NO_DOWN 275
|
||||||
#define PORTAL 276
|
#define PORTAL 276
|
||||||
#define STRING 277
|
#define STRING 277
|
||||||
#ifdef YYSTYPE
|
|
||||||
#undef YYSTYPE_IS_DECLARED
|
|
||||||
#define YYSTYPE_IS_DECLARED 1
|
|
||||||
#endif
|
|
||||||
#ifndef YYSTYPE_IS_DECLARED
|
|
||||||
#define YYSTYPE_IS_DECLARED 1
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char* str;
|
char* str;
|
||||||
} YYSTYPE;
|
} YYSTYPE;
|
||||||
#endif /* !YYSTYPE_IS_DECLARED */
|
|
||||||
extern YYSTYPE yylval;
|
extern YYSTYPE yylval;
|
||||||
|
|||||||
@@ -1,26 +1,17 @@
|
|||||||
/* original parser id follows */
|
#ifndef lint
|
||||||
/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */
|
/* static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; */
|
||||||
/* nhsccsid[] = \"@(#)yaccpar 1.9.0-nh2 (NetHack) 11/22/2018\"; */
|
/* static char nhsccsid[] = "@(#)yaccpar 1.9.0-nh (NetHack) 12/03/2015"; */
|
||||||
/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
|
#endif
|
||||||
|
|
||||||
#define YYBYACC 1
|
#define YYBYACC 1
|
||||||
#define YYMAJOR 1
|
#define YYMAJOR 1
|
||||||
#define YYMINOR 9
|
#define YYMINOR 9
|
||||||
#define YYSUBMINOR "0-nh2"
|
#define YYSUBMINOR "0-nh"
|
||||||
#define YYPATCH 20160324
|
|
||||||
|
|
||||||
#define YYEMPTY (-1)
|
#define yyclearin (yychar=(-1))
|
||||||
#define yyclearin (yychar = YYEMPTY)
|
#define yyerrok (yyerrflag=0)
|
||||||
#define yyerrok (yyerrflag = 0)
|
#define YYRECOVERING (yyerrflag!=0)
|
||||||
#define YYRECOVERING() (yyerrflag != 0)
|
|
||||||
#define YYENOMEM (-2)
|
|
||||||
#define YYEOF 0
|
|
||||||
#define YYPREFIX "yy"
|
#define YYPREFIX "yy"
|
||||||
|
/* NetHack 3.6 dgn_comp.y $NHDT-Date: 1551901399 2019/03/06 19:43:19 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.15 $ */
|
||||||
#define YYPURE 0
|
|
||||||
|
|
||||||
#line 2 "util/dgn_comp.y"
|
|
||||||
/* NetHack 3.6 dgn_comp.y $NHDT-Date: 1432512785 2015/05/25 00:13:05 $ $NHDT-Branch: master $:$NHDT-Revision: 1.8 $ */
|
|
||||||
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
/* Copyright (c) 1989 by Jean-Christophe Collet */
|
||||||
/* Copyright (c) 1990 by M. Stephenson */
|
/* Copyright (c) 1990 by M. Stephenson */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -82,55 +73,11 @@ extern int fatal_error;
|
|||||||
extern const char *fname;
|
extern const char *fname;
|
||||||
extern FILE *yyin, *yyout; /* from dgn_lex.c */
|
extern FILE *yyin, *yyout; /* from dgn_lex.c */
|
||||||
|
|
||||||
#line 66 "util/dgn_comp.y"
|
|
||||||
#ifdef YYSTYPE
|
|
||||||
#undef YYSTYPE_IS_DECLARED
|
|
||||||
#define YYSTYPE_IS_DECLARED 1
|
|
||||||
#endif
|
|
||||||
#ifndef YYSTYPE_IS_DECLARED
|
|
||||||
#define YYSTYPE_IS_DECLARED 1
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char* str;
|
char* str;
|
||||||
} YYSTYPE;
|
} YYSTYPE;
|
||||||
#endif /* !YYSTYPE_IS_DECLARED */
|
|
||||||
#line 99 ""
|
|
||||||
|
|
||||||
/* compatibility with bison */
|
|
||||||
#ifdef YYPARSE_PARAM
|
|
||||||
/* compatibility with FreeBSD */
|
|
||||||
# ifdef YYPARSE_PARAM_TYPE
|
|
||||||
# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
|
|
||||||
# else
|
|
||||||
# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define YYPARSE_DECL() yyparse(void)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Parameters sent to lex. */
|
|
||||||
#ifdef YYLEX_PARAM
|
|
||||||
# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
|
|
||||||
# define YYLEX yylex(YYLEX_PARAM)
|
|
||||||
#else
|
|
||||||
# define YYLEX_DECL() yylex(void)
|
|
||||||
# define YYLEX yylex()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Parameters sent to yyerror. */
|
|
||||||
#ifndef YYERROR_DECL
|
|
||||||
#define YYERROR_DECL() yyerror(const char *s)
|
|
||||||
#endif
|
|
||||||
#ifndef YYERROR_CALL
|
|
||||||
#define YYERROR_CALL(msg) yyerror(msg)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int YYPARSE_DECL();
|
|
||||||
#define YYNHXFLAG 1
|
|
||||||
#define YYSTACKSIZE 500
|
|
||||||
#define YYMAXDEPTH 500
|
|
||||||
|
|
||||||
#define INTEGER 257
|
#define INTEGER 257
|
||||||
#define A_DUNGEON 258
|
#define A_DUNGEON 258
|
||||||
#define BRANCH 259
|
#define BRANCH 259
|
||||||
@@ -153,22 +100,21 @@ extern int YYPARSE_DECL();
|
|||||||
#define PORTAL 276
|
#define PORTAL 276
|
||||||
#define STRING 277
|
#define STRING 277
|
||||||
#define YYERRCODE 256
|
#define YYERRCODE 256
|
||||||
typedef short YYINT;
|
short yylhs[] = { -1,
|
||||||
YYINT yylhs[] = { -1,
|
|
||||||
0, 0, 5, 5, 6, 6, 6, 6, 7, 1,
|
0, 0, 5, 5, 6, 6, 6, 6, 7, 1,
|
||||||
1, 8, 8, 8, 12, 13, 15, 15, 14, 10,
|
1, 8, 8, 8, 12, 13, 15, 15, 14, 10,
|
||||||
10, 10, 10, 10, 16, 16, 17, 17, 18, 18,
|
10, 10, 10, 10, 16, 16, 17, 17, 18, 18,
|
||||||
19, 19, 20, 20, 9, 9, 22, 23, 3, 3,
|
19, 19, 20, 20, 9, 9, 22, 23, 3, 3,
|
||||||
3, 3, 3, 2, 2, 4, 21, 11,
|
3, 3, 3, 2, 2, 4, 21, 11,
|
||||||
};
|
};
|
||||||
YYINT yylen[] = { 2,
|
short yylen[] = { 2,
|
||||||
0, 1, 1, 2, 1, 1, 1, 1, 6, 0,
|
0, 1, 1, 2, 1, 1, 1, 1, 6, 0,
|
||||||
1, 1, 1, 1, 3, 1, 3, 3, 3, 1,
|
1, 1, 1, 1, 3, 1, 3, 3, 3, 1,
|
||||||
1, 1, 1, 1, 6, 7, 7, 8, 3, 3,
|
1, 1, 1, 1, 6, 7, 7, 8, 3, 3,
|
||||||
7, 8, 8, 9, 1, 1, 7, 8, 0, 1,
|
7, 8, 8, 9, 1, 1, 7, 8, 0, 1,
|
||||||
1, 1, 1, 0, 1, 1, 5, 5,
|
1, 1, 1, 0, 1, 1, 5, 5,
|
||||||
};
|
};
|
||||||
YYINT yydefred[] = { 0,
|
short yydefred[] = { 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 3, 5, 6, 7, 8,
|
0, 0, 0, 0, 0, 3, 5, 6, 7, 8,
|
||||||
12, 13, 14, 16, 20, 21, 22, 23, 24, 35,
|
12, 13, 14, 16, 20, 21, 22, 23, 24, 35,
|
||||||
@@ -181,12 +127,12 @@ typedef short YYINT;
|
|||||||
0, 45, 37, 0, 27, 0, 0, 0, 0, 0,
|
0, 45, 37, 0, 27, 0, 0, 0, 0, 0,
|
||||||
38, 28, 33, 0, 48, 47, 34,
|
38, 28, 33, 0, 48, 47, 34,
|
||||||
};
|
};
|
||||||
YYINT yydgoto[] = { 14,
|
short yydgoto[] = { 14,
|
||||||
78, 93, 84, 60, 15, 16, 17, 18, 19, 20,
|
78, 93, 84, 60, 15, 16, 17, 18, 19, 20,
|
||||||
68, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
68, 21, 22, 23, 24, 25, 26, 27, 28, 29,
|
||||||
70, 30, 31,
|
70, 30, 31,
|
||||||
};
|
};
|
||||||
YYINT yysindex[] = { -237,
|
short yysindex[] = { -237,
|
||||||
-46, -45, -44, -39, -38, -30, -22, -21, -20, -19,
|
-46, -45, -44, -39, -38, -30, -22, -21, -20, -19,
|
||||||
-18, -17, -16, 0, -237, 0, 0, 0, 0, 0,
|
-18, -17, -16, 0, -237, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@@ -199,7 +145,7 @@ typedef short YYINT;
|
|||||||
-178, 0, 0, -193, 0, -177, -176, -175, 42, 43,
|
-178, 0, 0, -193, 0, -177, -176, -175, 42, 43,
|
||||||
0, 0, 0, -172, 0, 0, 0,
|
0, 0, 0, -172, 0, 0, 0,
|
||||||
};
|
};
|
||||||
YYINT yyrindex[] = { 86,
|
short yyrindex[] = { 86,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 87, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 87, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
@@ -212,13 +158,13 @@ typedef short YYINT;
|
|||||||
0, 0, 0, 31, 0, 61, 76, 0, 0, 0,
|
0, 0, 0, 31, 0, 61, 76, 0, 0, 0,
|
||||||
0, 0, 0, 91, 0, 0, 0,
|
0, 0, 0, 91, 0, 0, 0,
|
||||||
};
|
};
|
||||||
YYINT yygindex[] = { 0,
|
short yygindex[] = { 0,
|
||||||
0, -6, 4, -43, 0, 75, 0, 0, 0, 0,
|
0, -6, 4, -43, 0, 75, 0, 0, 0, 0,
|
||||||
-71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
-71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-62, 0, 0,
|
-62, 0, 0,
|
||||||
};
|
};
|
||||||
#define YYTABLESIZE 363
|
#define YYTABLESIZE 363
|
||||||
YYINT yytable[] = { 85,
|
short yytable[] = { 85,
|
||||||
39, 80, 81, 82, 83, 63, 64, 65, 66, 86,
|
39, 80, 81, 82, 83, 63, 64, 65, 66, 86,
|
||||||
87, 32, 33, 34, 46, 10, 97, 98, 35, 36,
|
87, 32, 33, 34, 46, 10, 97, 98, 35, 36,
|
||||||
1, 2, 3, 4, 5, 6, 7, 37, 8, 9,
|
1, 2, 3, 4, 5, 6, 7, 37, 8, 9,
|
||||||
@@ -257,7 +203,7 @@ typedef short YYINT;
|
|||||||
32, 32, 32, 32, 32, 0, 32, 32, 0, 32,
|
32, 32, 32, 32, 32, 0, 32, 32, 0, 32,
|
||||||
32, 32, 32,
|
32, 32, 32,
|
||||||
};
|
};
|
||||||
YYINT yycheck[] = { 71,
|
short yycheck[] = { 71,
|
||||||
0, 273, 274, 275, 276, 49, 50, 51, 52, 72,
|
0, 273, 274, 275, 276, 49, 50, 51, 52, 72,
|
||||||
73, 58, 58, 58, 277, 0, 88, 89, 58, 58,
|
73, 58, 58, 58, 277, 0, 88, 89, 58, 58,
|
||||||
258, 259, 260, 261, 262, 263, 264, 58, 266, 267,
|
258, 259, 260, 261, 262, 263, 264, 58, 266, 267,
|
||||||
@@ -301,11 +247,8 @@ typedef short YYINT;
|
|||||||
#define YYDEBUG 0
|
#define YYDEBUG 0
|
||||||
#endif
|
#endif
|
||||||
#define YYMAXTOKEN 277
|
#define YYMAXTOKEN 277
|
||||||
#define YYUNDFTOKEN 303
|
|
||||||
#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
|
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
char * yyname[] = {
|
char *yyname[] = {
|
||||||
|
|
||||||
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
0,0,0,0,0,0,"'('","')'",0,"'+'","','",0,0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,
|
0,0,0,0,0,0,"'('","')'",0,"'+'","','",0,0,0,0,0,0,0,0,0,0,0,0,0,"':'",0,0,0,0,0,
|
||||||
"'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
"'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
@@ -315,10 +258,9 @@ typedef short YYINT;
|
|||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"INTEGER",
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"INTEGER",
|
||||||
"A_DUNGEON","BRANCH","CHBRANCH","LEVEL","RNDLEVEL","CHLEVEL","RNDCHLEVEL",
|
"A_DUNGEON","BRANCH","CHBRANCH","LEVEL","RNDLEVEL","CHLEVEL","RNDCHLEVEL",
|
||||||
"UP_OR_DOWN","PROTOFILE","DESCRIPTION","DESCRIPTOR","LEVELDESC","ALIGNMENT",
|
"UP_OR_DOWN","PROTOFILE","DESCRIPTION","DESCRIPTOR","LEVELDESC","ALIGNMENT",
|
||||||
"LEVALIGN","ENTRY","STAIR","NO_UP","NO_DOWN","PORTAL","STRING",0,0,0,0,0,0,0,0,
|
"LEVALIGN","ENTRY","STAIR","NO_UP","NO_DOWN","PORTAL","STRING",
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol",
|
|
||||||
};
|
};
|
||||||
char * yyrule[] = {
|
char *yyrule[] = {
|
||||||
"$accept : file",
|
"$accept : file",
|
||||||
"file :",
|
"file :",
|
||||||
"file : dungeons",
|
"file : dungeons",
|
||||||
@@ -368,44 +310,30 @@ typedef short YYINT;
|
|||||||
"bones_tag : STRING",
|
"bones_tag : STRING",
|
||||||
"acouple : '(' INTEGER ',' INTEGER ')'",
|
"acouple : '(' INTEGER ',' INTEGER ')'",
|
||||||
"rcouple : '(' INTEGER ',' INTEGER ')'",
|
"rcouple : '(' INTEGER ',' INTEGER ')'",
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int yydebug;
|
|
||||||
int yynerrs;
|
|
||||||
|
|
||||||
int yyerrflag;
|
|
||||||
int yychar;
|
|
||||||
YYSTYPE yyval;
|
|
||||||
YYSTYPE yylval;
|
|
||||||
|
|
||||||
/* define the initial stack-sizes */
|
|
||||||
#ifdef YYSTACKSIZE
|
#ifdef YYSTACKSIZE
|
||||||
#undef YYMAXDEPTH
|
#undef YYMAXDEPTH
|
||||||
#define YYMAXDEPTH YYSTACKSIZE
|
#define YYMAXDEPTH YYSTACKSIZE
|
||||||
#else
|
#else
|
||||||
#ifdef YYMAXDEPTH
|
#ifdef YYMAXDEPTH
|
||||||
#define YYSTACKSIZE YYMAXDEPTH
|
#define YYSTACKSIZE YYMAXDEPTH
|
||||||
#else
|
#else
|
||||||
#define YYSTACKSIZE 10000
|
#define YYSTACKSIZE 500
|
||||||
#define YYMAXDEPTH 10000
|
#define YYMAXDEPTH 500
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
int yydebug;
|
||||||
#define YYINITSTACKSIZE 200
|
int yynerrs;
|
||||||
|
int yyerrflag;
|
||||||
typedef struct {
|
int yychar;
|
||||||
unsigned stacksize;
|
short *yyssp;
|
||||||
YYINT *s_base;
|
YYSTYPE *yyvsp;
|
||||||
YYINT *s_mark;
|
YYSTYPE yyval;
|
||||||
YYINT *s_last;
|
YYSTYPE yylval;
|
||||||
YYSTYPE *l_base;
|
short yyss[YYSTACKSIZE];
|
||||||
YYSTYPE *l_mark;
|
YYSTYPE yyvs[YYSTACKSIZE];
|
||||||
} YYSTACKDATA;
|
#define yystacksize YYSTACKSIZE
|
||||||
/* variables for the parser stack */
|
|
||||||
static YYSTACKDATA yystack;
|
|
||||||
#line 433 "util/dgn_comp.y"
|
|
||||||
|
|
||||||
void
|
void
|
||||||
init_dungeon()
|
init_dungeon()
|
||||||
@@ -652,78 +580,17 @@ output_dgn()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*dgn_comp.y*/
|
/*dgn_comp.y*/
|
||||||
#line 656 ""
|
#define YYABORT goto yyabort
|
||||||
|
|
||||||
#if YYDEBUG
|
|
||||||
#include <stdio.h> /* needed for printf */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYNHXFLAG
|
|
||||||
extern char *getenv();
|
|
||||||
#define CONST
|
|
||||||
#else
|
|
||||||
#include <stdlib.h> /* needed for malloc, etc */
|
|
||||||
#include <string.h> /* needed for memset */
|
|
||||||
#define CONST const
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
|
|
||||||
static int yygrowstack(YYSTACKDATA *data)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
unsigned newsize;
|
|
||||||
YYINT *newss;
|
|
||||||
YYSTYPE *newvs;
|
|
||||||
|
|
||||||
if ((newsize = data->stacksize) == 0)
|
|
||||||
newsize = YYINITSTACKSIZE;
|
|
||||||
else if (newsize >= YYMAXDEPTH)
|
|
||||||
return YYENOMEM;
|
|
||||||
else if ((newsize *= 2) > YYMAXDEPTH)
|
|
||||||
newsize = YYMAXDEPTH;
|
|
||||||
|
|
||||||
i = (int) (data->s_mark - data->s_base);
|
|
||||||
newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
|
|
||||||
if (newss == 0)
|
|
||||||
return YYENOMEM;
|
|
||||||
|
|
||||||
data->s_base = newss;
|
|
||||||
data->s_mark = newss + i;
|
|
||||||
|
|
||||||
newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
|
|
||||||
if (newvs == 0)
|
|
||||||
return YYENOMEM;
|
|
||||||
|
|
||||||
data->l_base = newvs;
|
|
||||||
data->l_mark = newvs + i;
|
|
||||||
|
|
||||||
data->stacksize = newsize;
|
|
||||||
data->s_last = data->s_base + newsize - 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if YYPURE || defined(YY_NO_LEAKS)
|
|
||||||
static void yyfreestack(YYSTACKDATA *data)
|
|
||||||
{
|
|
||||||
free(data->s_base);
|
|
||||||
free(data->l_base);
|
|
||||||
memset(data, 0, sizeof(*data));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#define yyfreestack(data) /* nothing */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define YYABORT goto yyabort
|
|
||||||
#define YYREJECT goto yyabort
|
#define YYREJECT goto yyabort
|
||||||
#define YYACCEPT goto yyaccept
|
#define YYACCEPT goto yyaccept
|
||||||
#define YYERROR goto yyerrlab
|
#define YYERROR goto yyerrlab
|
||||||
|
|
||||||
int
|
int
|
||||||
YYPARSE_DECL()
|
yyparse()
|
||||||
{
|
{
|
||||||
int yym, yyn, yystate;
|
register int yym, yyn, yystate;
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
CONST char *yys;
|
register char *yys;
|
||||||
|
extern char *getenv();
|
||||||
|
|
||||||
if ((yys = getenv("YYDEBUG")) != 0)
|
if ((yys = getenv("YYDEBUG")) != 0)
|
||||||
{
|
{
|
||||||
@@ -735,28 +602,23 @@ YYPARSE_DECL()
|
|||||||
|
|
||||||
yynerrs = 0;
|
yynerrs = 0;
|
||||||
yyerrflag = 0;
|
yyerrflag = 0;
|
||||||
yychar = YYEMPTY;
|
yychar = (-1);
|
||||||
yystate = 0;
|
|
||||||
|
|
||||||
#if YYPURE
|
yyssp = yyss;
|
||||||
memset(&yystack, 0, sizeof(yystack));
|
yyvsp = yyvs;
|
||||||
#endif
|
*yyssp = yystate = 0;
|
||||||
|
|
||||||
if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
|
|
||||||
yystack.s_mark = yystack.s_base;
|
|
||||||
yystack.l_mark = yystack.l_base;
|
|
||||||
yystate = 0;
|
|
||||||
*yystack.s_mark = 0;
|
|
||||||
|
|
||||||
yyloop:
|
yyloop:
|
||||||
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
|
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
|
||||||
if (yychar < 0)
|
if (yychar < 0)
|
||||||
{
|
{
|
||||||
if ((yychar = YYLEX) < 0) yychar = YYEOF;
|
if ((yychar = yylex()) < 0) yychar = 0;
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
{
|
{
|
||||||
yys = yyname[YYTRANSLATE(yychar)];
|
yys = 0;
|
||||||
|
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
|
||||||
|
if (!yys) yys = "illegal-symbol";
|
||||||
printf("%sdebug: state %d, reading %d (%s)\n",
|
printf("%sdebug: state %d, reading %d (%s)\n",
|
||||||
YYPREFIX, yystate, yychar, yys);
|
YYPREFIX, yystate, yychar, yys);
|
||||||
}
|
}
|
||||||
@@ -770,14 +632,13 @@ yyloop:
|
|||||||
printf("%sdebug: state %d, shifting to state %d\n",
|
printf("%sdebug: state %d, shifting to state %d\n",
|
||||||
YYPREFIX, yystate, yytable[yyn]);
|
YYPREFIX, yystate, yytable[yyn]);
|
||||||
#endif
|
#endif
|
||||||
if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
|
if (yyssp >= yyss + yystacksize - 1)
|
||||||
{
|
{
|
||||||
goto yyoverflow;
|
goto yyoverflow;
|
||||||
}
|
}
|
||||||
yystate = yytable[yyn];
|
*++yyssp = yystate = yytable[yyn];
|
||||||
*++yystack.s_mark = yytable[yyn];
|
*++yyvsp = yylval;
|
||||||
*++yystack.l_mark = yylval;
|
yychar = (-1);
|
||||||
yychar = YYEMPTY;
|
|
||||||
if (yyerrflag > 0) --yyerrflag;
|
if (yyerrflag > 0) --yyerrflag;
|
||||||
goto yyloop;
|
goto yyloop;
|
||||||
}
|
}
|
||||||
@@ -788,35 +649,32 @@ yyloop:
|
|||||||
goto yyreduce;
|
goto yyreduce;
|
||||||
}
|
}
|
||||||
if (yyerrflag) goto yyinrecovery;
|
if (yyerrflag) goto yyinrecovery;
|
||||||
|
goto yynewerror;
|
||||||
YYERROR_CALL("syntax error");
|
yynewerror:
|
||||||
|
yyerror("syntax error");
|
||||||
goto yyerrlab;
|
goto yyerrlab;
|
||||||
|
|
||||||
yyerrlab:
|
yyerrlab:
|
||||||
++yynerrs;
|
++yynerrs;
|
||||||
|
|
||||||
yyinrecovery:
|
yyinrecovery:
|
||||||
if (yyerrflag < 3)
|
if (yyerrflag < 3)
|
||||||
{
|
{
|
||||||
yyerrflag = 3;
|
yyerrflag = 3;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if ((yyn = yysindex[*yystack.s_mark]) != 0 && (yyn += YYERRCODE) >= 0 &&
|
if ((yyn = yysindex[*yyssp]) != 0 && (yyn += YYERRCODE) >= 0 &&
|
||||||
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
|
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
|
||||||
{
|
{
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
printf("%sdebug: state %d, error recovery shifting\
|
printf("%sdebug: state %d, error recovery shifting\
|
||||||
to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
|
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
|
||||||
#endif
|
#endif
|
||||||
if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
|
if (yyssp >= yyss + yystacksize - 1)
|
||||||
{
|
{
|
||||||
goto yyoverflow;
|
goto yyoverflow;
|
||||||
}
|
}
|
||||||
yystate = yytable[yyn];
|
*++yyssp = yystate = yytable[yyn];
|
||||||
*++yystack.s_mark = yytable[yyn];
|
*++yyvsp = yylval;
|
||||||
*++yystack.l_mark = yylval;
|
|
||||||
goto yyloop;
|
goto yyloop;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -824,29 +682,30 @@ yyinrecovery:
|
|||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
printf("%sdebug: error recovery discarding state %d\n",
|
printf("%sdebug: error recovery discarding state %d\n",
|
||||||
YYPREFIX, *yystack.s_mark);
|
YYPREFIX, *yyssp);
|
||||||
#endif
|
#endif
|
||||||
if (yystack.s_mark <= yystack.s_base) goto yyabort;
|
if (yyssp <= yyss) goto yyabort;
|
||||||
--yystack.s_mark;
|
--yyssp;
|
||||||
--yystack.l_mark;
|
--yyvsp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (yychar == YYEOF) goto yyabort;
|
if (yychar == 0) goto yyabort;
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
{
|
{
|
||||||
yys = yyname[YYTRANSLATE(yychar)];
|
yys = 0;
|
||||||
|
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
|
||||||
|
if (!yys) yys = "illegal-symbol";
|
||||||
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
|
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
|
||||||
YYPREFIX, yystate, yychar, yys);
|
YYPREFIX, yystate, yychar, yys);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
yychar = YYEMPTY;
|
yychar = (-1);
|
||||||
goto yyloop;
|
goto yyloop;
|
||||||
}
|
}
|
||||||
|
|
||||||
yyreduce:
|
yyreduce:
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
@@ -854,283 +713,252 @@ yyreduce:
|
|||||||
YYPREFIX, yystate, yyn, yyrule[yyn]);
|
YYPREFIX, yystate, yyn, yyrule[yyn]);
|
||||||
#endif
|
#endif
|
||||||
yym = yylen[yyn];
|
yym = yylen[yyn];
|
||||||
if (yym)
|
yyval = yyvsp[1-yym];
|
||||||
yyval = yystack.l_mark[1-yym];
|
|
||||||
else
|
|
||||||
memset(&yyval, 0, sizeof yyval);
|
|
||||||
switch (yyn)
|
switch (yyn)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
#line 83 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
output_dgn();
|
output_dgn();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
#line 99 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_dungeon();
|
init_dungeon();
|
||||||
Strcpy(tmpdungeon[n_dgns].name, yystack.l_mark[-3].str);
|
Strcpy(tmpdungeon[n_dgns].name, yyvsp[-3].str);
|
||||||
tmpdungeon[n_dgns].boneschar = (char)yystack.l_mark[-2].i;
|
tmpdungeon[n_dgns].boneschar = (char)yyvsp[-2].i;
|
||||||
tmpdungeon[n_dgns].lev.base = couple.base;
|
tmpdungeon[n_dgns].lev.base = couple.base;
|
||||||
tmpdungeon[n_dgns].lev.rand = couple.rand;
|
tmpdungeon[n_dgns].lev.rand = couple.rand;
|
||||||
tmpdungeon[n_dgns].chance = yystack.l_mark[0].i;
|
tmpdungeon[n_dgns].chance = yyvsp[0].i;
|
||||||
Free(yystack.l_mark[-3].str);
|
Free(yyvsp[-3].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
#line 111 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = 0;
|
yyval.i = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
#line 115 "util/dgn_comp.y"
|
{
|
||||||
{
|
yyval.i = yyvsp[0].i;
|
||||||
yyval.i = yystack.l_mark[0].i;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
#line 126 "util/dgn_comp.y"
|
{
|
||||||
{
|
tmpdungeon[n_dgns].entry_lev = yyvsp[0].i;
|
||||||
tmpdungeon[n_dgns].entry_lev = yystack.l_mark[0].i;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
#line 135 "util/dgn_comp.y"
|
{
|
||||||
{
|
if(yyvsp[0].i <= TOWN || yyvsp[0].i >= D_ALIGN_CHAOTIC)
|
||||||
if(yystack.l_mark[0].i <= TOWN || yystack.l_mark[0].i >= D_ALIGN_CHAOTIC)
|
|
||||||
yyerror("Illegal description - ignoring!");
|
yyerror("Illegal description - ignoring!");
|
||||||
else
|
else
|
||||||
tmpdungeon[n_dgns].flags |= yystack.l_mark[0].i ;
|
tmpdungeon[n_dgns].flags |= yyvsp[0].i ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 18:
|
case 18:
|
||||||
#line 142 "util/dgn_comp.y"
|
{
|
||||||
{
|
if(yyvsp[0].i && yyvsp[0].i < D_ALIGN_CHAOTIC)
|
||||||
if(yystack.l_mark[0].i && yystack.l_mark[0].i < D_ALIGN_CHAOTIC)
|
|
||||||
yyerror("Illegal alignment - ignoring!");
|
yyerror("Illegal alignment - ignoring!");
|
||||||
else
|
else
|
||||||
tmpdungeon[n_dgns].flags |= yystack.l_mark[0].i ;
|
tmpdungeon[n_dgns].flags |= yyvsp[0].i ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
#line 151 "util/dgn_comp.y"
|
{
|
||||||
{
|
Strcpy(tmpdungeon[n_dgns].protoname, yyvsp[0].str);
|
||||||
Strcpy(tmpdungeon[n_dgns].protoname, yystack.l_mark[0].str);
|
Free(yyvsp[0].str);
|
||||||
Free(yystack.l_mark[0].str);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 25:
|
||||||
#line 165 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-3].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-3].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-2].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-2].i;
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmpdungeon[n_dgns].levels++;
|
tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-3].str);
|
Free(yyvsp[-3].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 26:
|
case 26:
|
||||||
#line 175 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-4].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-4].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-3].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-3].i;
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmplevel[n_levs].rndlevs = yystack.l_mark[0].i;
|
tmplevel[n_levs].rndlevs = yyvsp[0].i;
|
||||||
tmpdungeon[n_dgns].levels++;
|
tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-4].str);
|
Free(yyvsp[-4].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 27:
|
case 27:
|
||||||
#line 188 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-4].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-4].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-3].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-3].i;
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmplevel[n_levs].chance = yystack.l_mark[0].i;
|
tmplevel[n_levs].chance = yyvsp[0].i;
|
||||||
tmpdungeon[n_dgns].levels++;
|
tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-4].str);
|
Free(yyvsp[-4].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 28:
|
case 28:
|
||||||
#line 199 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-5].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-5].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-4].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-4].i;
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmplevel[n_levs].chance = yystack.l_mark[-1].i;
|
tmplevel[n_levs].chance = yyvsp[-1].i;
|
||||||
tmplevel[n_levs].rndlevs = yystack.l_mark[0].i;
|
tmplevel[n_levs].rndlevs = yyvsp[0].i;
|
||||||
tmpdungeon[n_dgns].levels++;
|
tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-5].str);
|
Free(yyvsp[-5].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 29:
|
case 29:
|
||||||
#line 213 "util/dgn_comp.y"
|
{
|
||||||
{
|
if(yyvsp[0].i >= D_ALIGN_CHAOTIC)
|
||||||
if(yystack.l_mark[0].i >= D_ALIGN_CHAOTIC)
|
|
||||||
yyerror("Illegal description - ignoring!");
|
yyerror("Illegal description - ignoring!");
|
||||||
else
|
else
|
||||||
tmplevel[n_levs].flags |= yystack.l_mark[0].i ;
|
tmplevel[n_levs].flags |= yyvsp[0].i ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 30:
|
case 30:
|
||||||
#line 220 "util/dgn_comp.y"
|
{
|
||||||
{
|
if(yyvsp[0].i && yyvsp[0].i < D_ALIGN_CHAOTIC)
|
||||||
if(yystack.l_mark[0].i && yystack.l_mark[0].i < D_ALIGN_CHAOTIC)
|
|
||||||
yyerror("Illegal alignment - ignoring!");
|
yyerror("Illegal alignment - ignoring!");
|
||||||
else
|
else
|
||||||
tmplevel[n_levs].flags |= yystack.l_mark[0].i ;
|
tmplevel[n_levs].flags |= yyvsp[0].i ;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 31:
|
case 31:
|
||||||
#line 229 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-4].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-4].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-3].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-3].i;
|
||||||
tmplevel[n_levs].chain = getchain(yystack.l_mark[-2].str);
|
tmplevel[n_levs].chain = getchain(yyvsp[-2].str);
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
if(!check_level()) n_levs--;
|
if(!check_level()) n_levs--;
|
||||||
else tmpdungeon[n_dgns].levels++;
|
else tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-4].str);
|
Free(yyvsp[-4].str);
|
||||||
Free(yystack.l_mark[-2].str);
|
Free(yyvsp[-2].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
#line 242 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-5].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-5].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-4].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-4].i;
|
||||||
tmplevel[n_levs].chain = getchain(yystack.l_mark[-3].str);
|
tmplevel[n_levs].chain = getchain(yyvsp[-3].str);
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmplevel[n_levs].rndlevs = yystack.l_mark[0].i;
|
tmplevel[n_levs].rndlevs = yyvsp[0].i;
|
||||||
if(!check_level()) n_levs--;
|
if(!check_level()) n_levs--;
|
||||||
else tmpdungeon[n_dgns].levels++;
|
else tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-5].str);
|
Free(yyvsp[-5].str);
|
||||||
Free(yystack.l_mark[-3].str);
|
Free(yyvsp[-3].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 33:
|
||||||
#line 258 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-5].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-5].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-4].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-4].i;
|
||||||
tmplevel[n_levs].chain = getchain(yystack.l_mark[-3].str);
|
tmplevel[n_levs].chain = getchain(yyvsp[-3].str);
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmplevel[n_levs].chance = yystack.l_mark[0].i;
|
tmplevel[n_levs].chance = yyvsp[0].i;
|
||||||
if(!check_level()) n_levs--;
|
if(!check_level()) n_levs--;
|
||||||
else tmpdungeon[n_dgns].levels++;
|
else tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-5].str);
|
Free(yyvsp[-5].str);
|
||||||
Free(yystack.l_mark[-3].str);
|
Free(yyvsp[-3].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 34:
|
case 34:
|
||||||
#line 272 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_level();
|
init_level();
|
||||||
Strcpy(tmplevel[n_levs].name, yystack.l_mark[-6].str);
|
Strcpy(tmplevel[n_levs].name, yyvsp[-6].str);
|
||||||
tmplevel[n_levs].boneschar = (char)yystack.l_mark[-5].i;
|
tmplevel[n_levs].boneschar = (char)yyvsp[-5].i;
|
||||||
tmplevel[n_levs].chain = getchain(yystack.l_mark[-4].str);
|
tmplevel[n_levs].chain = getchain(yyvsp[-4].str);
|
||||||
tmplevel[n_levs].lev.base = couple.base;
|
tmplevel[n_levs].lev.base = couple.base;
|
||||||
tmplevel[n_levs].lev.rand = couple.rand;
|
tmplevel[n_levs].lev.rand = couple.rand;
|
||||||
tmplevel[n_levs].chance = yystack.l_mark[-1].i;
|
tmplevel[n_levs].chance = yyvsp[-1].i;
|
||||||
tmplevel[n_levs].rndlevs = yystack.l_mark[0].i;
|
tmplevel[n_levs].rndlevs = yyvsp[0].i;
|
||||||
if(!check_level()) n_levs--;
|
if(!check_level()) n_levs--;
|
||||||
else tmpdungeon[n_dgns].levels++;
|
else tmpdungeon[n_dgns].levels++;
|
||||||
Free(yystack.l_mark[-6].str);
|
Free(yyvsp[-6].str);
|
||||||
Free(yystack.l_mark[-4].str);
|
Free(yyvsp[-4].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 37:
|
case 37:
|
||||||
#line 293 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_branch();
|
init_branch();
|
||||||
Strcpy(tmpbranch[n_brs].name, yystack.l_mark[-4].str);
|
Strcpy(tmpbranch[n_brs].name, yyvsp[-4].str);
|
||||||
tmpbranch[n_brs].lev.base = couple.base;
|
tmpbranch[n_brs].lev.base = couple.base;
|
||||||
tmpbranch[n_brs].lev.rand = couple.rand;
|
tmpbranch[n_brs].lev.rand = couple.rand;
|
||||||
tmpbranch[n_brs].type = yystack.l_mark[-1].i;
|
tmpbranch[n_brs].type = yyvsp[-1].i;
|
||||||
tmpbranch[n_brs].up = yystack.l_mark[0].i;
|
tmpbranch[n_brs].up = yyvsp[0].i;
|
||||||
if(!check_branch()) n_brs--;
|
if(!check_branch()) n_brs--;
|
||||||
else tmpdungeon[n_dgns].branches++;
|
else tmpdungeon[n_dgns].branches++;
|
||||||
Free(yystack.l_mark[-4].str);
|
Free(yyvsp[-4].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 38:
|
case 38:
|
||||||
#line 307 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
init_branch();
|
init_branch();
|
||||||
Strcpy(tmpbranch[n_brs].name, yystack.l_mark[-5].str);
|
Strcpy(tmpbranch[n_brs].name, yyvsp[-5].str);
|
||||||
tmpbranch[n_brs].chain = getchain(yystack.l_mark[-4].str);
|
tmpbranch[n_brs].chain = getchain(yyvsp[-4].str);
|
||||||
tmpbranch[n_brs].lev.base = couple.base;
|
tmpbranch[n_brs].lev.base = couple.base;
|
||||||
tmpbranch[n_brs].lev.rand = couple.rand;
|
tmpbranch[n_brs].lev.rand = couple.rand;
|
||||||
tmpbranch[n_brs].type = yystack.l_mark[-1].i;
|
tmpbranch[n_brs].type = yyvsp[-1].i;
|
||||||
tmpbranch[n_brs].up = yystack.l_mark[0].i;
|
tmpbranch[n_brs].up = yyvsp[0].i;
|
||||||
if(!check_branch()) n_brs--;
|
if(!check_branch()) n_brs--;
|
||||||
else tmpdungeon[n_dgns].branches++;
|
else tmpdungeon[n_dgns].branches++;
|
||||||
Free(yystack.l_mark[-5].str);
|
Free(yyvsp[-5].str);
|
||||||
Free(yystack.l_mark[-4].str);
|
Free(yyvsp[-4].str);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 39:
|
case 39:
|
||||||
#line 323 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = TBR_STAIR; /* two way stair */
|
yyval.i = TBR_STAIR; /* two way stair */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 40:
|
case 40:
|
||||||
#line 327 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = TBR_STAIR; /* two way stair */
|
yyval.i = TBR_STAIR; /* two way stair */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 41:
|
case 41:
|
||||||
#line 331 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = TBR_NO_UP; /* no up staircase */
|
yyval.i = TBR_NO_UP; /* no up staircase */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 42:
|
case 42:
|
||||||
#line 335 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = TBR_NO_DOWN; /* no down staircase */
|
yyval.i = TBR_NO_DOWN; /* no down staircase */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 43:
|
case 43:
|
||||||
#line 339 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = TBR_PORTAL; /* portal connection */
|
yyval.i = TBR_PORTAL; /* portal connection */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 44:
|
case 44:
|
||||||
#line 345 "util/dgn_comp.y"
|
{
|
||||||
{
|
|
||||||
yyval.i = 0; /* defaults to down */
|
yyval.i = 0; /* defaults to down */
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 45:
|
case 45:
|
||||||
#line 349 "util/dgn_comp.y"
|
{
|
||||||
{
|
yyval.i = yyvsp[0].i;
|
||||||
yyval.i = yystack.l_mark[0].i;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 46:
|
case 46:
|
||||||
#line 355 "util/dgn_comp.y"
|
{
|
||||||
{
|
char *p = yyvsp[0].str;
|
||||||
char *p = yystack.l_mark[0].str;
|
|
||||||
if (strlen(p) != 1) {
|
if (strlen(p) != 1) {
|
||||||
if (strcmp(p, "none") != 0)
|
if (strcmp(p, "none") != 0)
|
||||||
yyerror("Bones marker must be a single char, or \"none\"!");
|
yyerror("Bones marker must be a single char, or \"none\"!");
|
||||||
@@ -1141,39 +969,36 @@ case 46:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 47:
|
case 47:
|
||||||
#line 385 "util/dgn_comp.y"
|
{
|
||||||
{
|
if (yyvsp[-3].i < -MAXLEVEL || yyvsp[-3].i > MAXLEVEL) {
|
||||||
if (yystack.l_mark[-3].i < -MAXLEVEL || yystack.l_mark[-3].i > MAXLEVEL) {
|
|
||||||
yyerror("Abs base out of dlevel range - zeroing!");
|
yyerror("Abs base out of dlevel range - zeroing!");
|
||||||
couple.base = couple.rand = 0;
|
couple.base = couple.rand = 0;
|
||||||
} else if (yystack.l_mark[-1].i < -1 ||
|
} else if (yyvsp[-1].i < -1 ||
|
||||||
((yystack.l_mark[-3].i < 0) ? (MAXLEVEL + yystack.l_mark[-3].i + yystack.l_mark[-1].i + 1) > MAXLEVEL :
|
((yyvsp[-3].i < 0) ? (MAXLEVEL + yyvsp[-3].i + yyvsp[-1].i + 1) > MAXLEVEL :
|
||||||
(yystack.l_mark[-3].i + yystack.l_mark[-1].i) > MAXLEVEL)) {
|
(yyvsp[-3].i + yyvsp[-1].i) > MAXLEVEL)) {
|
||||||
yyerror("Abs range out of dlevel range - zeroing!");
|
yyerror("Abs range out of dlevel range - zeroing!");
|
||||||
couple.base = couple.rand = 0;
|
couple.base = couple.rand = 0;
|
||||||
} else {
|
} else {
|
||||||
couple.base = yystack.l_mark[-3].i;
|
couple.base = yyvsp[-3].i;
|
||||||
couple.rand = yystack.l_mark[-1].i;
|
couple.rand = yyvsp[-1].i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 48:
|
case 48:
|
||||||
#line 422 "util/dgn_comp.y"
|
{
|
||||||
{
|
if (yyvsp[-3].i < -MAXLEVEL || yyvsp[-3].i > MAXLEVEL) {
|
||||||
if (yystack.l_mark[-3].i < -MAXLEVEL || yystack.l_mark[-3].i > MAXLEVEL) {
|
|
||||||
yyerror("Rel base out of dlevel range - zeroing!");
|
yyerror("Rel base out of dlevel range - zeroing!");
|
||||||
couple.base = couple.rand = 0;
|
couple.base = couple.rand = 0;
|
||||||
} else {
|
} else {
|
||||||
couple.base = yystack.l_mark[-3].i;
|
couple.base = yyvsp[-3].i;
|
||||||
couple.rand = yystack.l_mark[-1].i;
|
couple.rand = yyvsp[-1].i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#line 1173 ""
|
|
||||||
}
|
}
|
||||||
yystack.s_mark -= yym;
|
yyssp -= yym;
|
||||||
yystate = *yystack.s_mark;
|
yystate = *yyssp;
|
||||||
yystack.l_mark -= yym;
|
yyvsp -= yym;
|
||||||
yym = yylhs[yyn];
|
yym = yylhs[yyn];
|
||||||
if (yystate == 0 && yym == 0)
|
if (yystate == 0 && yym == 0)
|
||||||
{
|
{
|
||||||
@@ -1183,21 +1008,23 @@ break;
|
|||||||
state %d\n", YYPREFIX, YYFINAL);
|
state %d\n", YYPREFIX, YYFINAL);
|
||||||
#endif
|
#endif
|
||||||
yystate = YYFINAL;
|
yystate = YYFINAL;
|
||||||
*++yystack.s_mark = YYFINAL;
|
*++yyssp = YYFINAL;
|
||||||
*++yystack.l_mark = yyval;
|
*++yyvsp = yyval;
|
||||||
if (yychar < 0)
|
if (yychar < 0)
|
||||||
{
|
{
|
||||||
if ((yychar = YYLEX) < 0) yychar = YYEOF;
|
if ((yychar = yylex()) < 0) yychar = 0;
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
{
|
{
|
||||||
yys = yyname[YYTRANSLATE(yychar)];
|
yys = 0;
|
||||||
|
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
|
||||||
|
if (!yys) yys = "illegal-symbol";
|
||||||
printf("%sdebug: state %d, reading %d (%s)\n",
|
printf("%sdebug: state %d, reading %d (%s)\n",
|
||||||
YYPREFIX, YYFINAL, yychar, yys);
|
YYPREFIX, YYFINAL, yychar, yys);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (yychar == YYEOF) goto yyaccept;
|
if (yychar == 0) goto yyaccept;
|
||||||
goto yyloop;
|
goto yyloop;
|
||||||
}
|
}
|
||||||
if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
|
if ((yyn = yygindex[yym]) != 0 && (yyn += yystate) >= 0 &&
|
||||||
@@ -1208,24 +1035,19 @@ break;
|
|||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
if (yydebug)
|
if (yydebug)
|
||||||
printf("%sdebug: after reduction, shifting from state %d \
|
printf("%sdebug: after reduction, shifting from state %d \
|
||||||
to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
|
to state %d\n", YYPREFIX, *yyssp, yystate);
|
||||||
#endif
|
#endif
|
||||||
if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM)
|
if (yyssp >= yyss + yystacksize - 1)
|
||||||
{
|
{
|
||||||
goto yyoverflow;
|
goto yyoverflow;
|
||||||
}
|
}
|
||||||
*++yystack.s_mark = (YYINT) yystate;
|
*++yyssp = yystate;
|
||||||
*++yystack.l_mark = yyval;
|
*++yyvsp = yyval;
|
||||||
goto yyloop;
|
goto yyloop;
|
||||||
|
|
||||||
yyoverflow:
|
yyoverflow:
|
||||||
YYERROR_CALL("yacc stack overflow");
|
yyerror("yacc stack overflow");
|
||||||
|
|
||||||
yyabort:
|
yyabort:
|
||||||
yyfreestack(&yystack);
|
|
||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
yyaccept:
|
yyaccept:
|
||||||
yyfreestack(&yystack);
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -172,12 +172,6 @@
|
|||||||
#define METHOD_SEL 428
|
#define METHOD_SEL 428
|
||||||
#define METHOD_SEL_ARRAY 429
|
#define METHOD_SEL_ARRAY 429
|
||||||
#define DICE 430
|
#define DICE 430
|
||||||
#ifdef YYSTYPE
|
|
||||||
#undef YYSTYPE_IS_DECLARED
|
|
||||||
#define YYSTYPE_IS_DECLARED 1
|
|
||||||
#endif
|
|
||||||
#ifndef YYSTYPE_IS_DECLARED
|
|
||||||
#define YYSTYPE_IS_DECLARED 1
|
|
||||||
typedef union
|
typedef union
|
||||||
{
|
{
|
||||||
long i;
|
long i;
|
||||||
@@ -215,5 +209,4 @@ typedef union
|
|||||||
char *varstr;
|
char *varstr;
|
||||||
} meth;
|
} meth;
|
||||||
} YYSTYPE;
|
} YYSTYPE;
|
||||||
#endif /* !YYSTYPE_IS_DECLARED */
|
|
||||||
extern YYSTYPE yylval;
|
extern YYSTYPE yylval;
|
||||||
|
|||||||
1984
sys/share/lev_yacc.c
1984
sys/share/lev_yacc.c
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user