diff options
30 files changed, 1599 insertions, 2907 deletions
diff --git a/crawl-ref/source/AppHdr.h b/crawl-ref/source/AppHdr.h index ed9fdb19f6..2e5945b742 100644 --- a/crawl-ref/source/AppHdr.h +++ b/crawl-ref/source/AppHdr.h @@ -63,27 +63,17 @@ // ========================================================================= // System Defines // ========================================================================= -// Define plain_term for Unix and dos_term for DOS and EMX. +// Define plain_term for Unix and dos_term for DOS. #if defined(LINUX) #define UNIX #define USE_UNIX_SIGNALS -#elif defined(SOLARIS) - #define UNIX - #define USE_UNIX_SIGNALS -#elif defined(BSD) - #define UNIX #elif defined(OSX) #define UNIX + #define USE_UNIX_SIGNALS // Darkgrey is a particular problem in Terminal.app. #define USE_8_COLOUR_TERM_MAP #define COL_TO_REPLACE_DARKGREY BLUE -#elif defined(HPUX) - #define UNIX - #define USE_UNIX_SIGNALS - // Under HP-UX it's typically easier to use ncurses than try and - // get the colour curses library to work. -- bwr - #define CURSES_INCLUDE_FILE <ncurses.h> #endif #ifdef UNIX @@ -145,16 +135,6 @@ #include "libunix.h" -// To compile with EMX for OS/2 define USE_EMX macro with compiler command line -// (already defined in supplied makefile.emx) -#elif defined(USE_EMX) - #define DOS_TERM - #define EOL "\n" - #define CHARACTER_SET A_ALTCHARSET - - #include <string> - #include "libemx.h" - #elif _MSC_VER >= 1100 #include <string> #include "WinHdr.h" @@ -178,7 +158,7 @@ #define vsnprintf(buf, size, format, args) vsprintf(buf, format, args) #endif -#elif defined(WIN32CONSOLE) && (defined(__IBMCPP__) || defined(__BCPLUSPLUS__) || defined(__MINGW32__)) +#elif defined(WIN32CONSOLE) && (defined(__IBMCPP__) || defined(__MINGW32__)) #include "libw32c.h" #define PLAIN_TERM #define SHORT_FILE_NAMES diff --git a/crawl-ref/source/Crawl.xcodeproj/project.pbxproj b/crawl-ref/source/Crawl.xcodeproj/project.pbxproj index 108213d487..78b435bd28 100644 --- a/crawl-ref/source/Crawl.xcodeproj/project.pbxproj +++ b/crawl-ref/source/Crawl.xcodeproj/project.pbxproj @@ -141,12 +141,28 @@ 7B237EF10A8EC9D000580F30 /* mt19937ar.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B237E6A0A8EC9D000580F30 /* mt19937ar.cc */; }; 7B237EF20A8EC9D000580F30 /* mstuff2.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7B237E6B0A8EC9D000580F30 /* mstuff2.h */; }; 7B237F150A8ECD2E00580F30 /* libncurses.5.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B237F140A8ECD2E00580F30 /* libncurses.5.dylib */; }; + 7B352E9F0B00183400CABB32 /* mapdef.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B352E9D0B00183400CABB32 /* mapdef.cc */; }; + 7B352EA00B00183400CABB32 /* mapdef.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B352E9D0B00183400CABB32 /* mapdef.cc */; }; + 7B352EA10B00183400CABB32 /* mapdef.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7B352E9E0B00183400CABB32 /* mapdef.h */; }; + 7B352ED30B001B9E00CABB32 /* levcomp.lpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B352ED10B001B9E00CABB32 /* levcomp.lpp */; }; + 7B352ED40B001B9E00CABB32 /* levcomp.ypp in Sources */ = {isa = PBXBuildFile; fileRef = 7B352ED20B001B9E00CABB32 /* levcomp.ypp */; }; + 7B352EED0B001F4200CABB32 /* levcomp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7B352EEC0B001F4200CABB32 /* levcomp.cc */; }; 7BC222E70ABBB286003A7D9A /* itemprop.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7BC222E50ABBB286003A7D9A /* itemprop.cc */; }; 7BC222E80ABBB286003A7D9A /* itemprop.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7BC222E60ABBB286003A7D9A /* itemprop.h */; }; 7BD75A350AC214A200B74F6E /* notes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 7BD75A330AC214A200B74F6E /* notes.cc */; }; 7BD75A360AC214A200B74F6E /* notes.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 7BD75A340AC214A200B74F6E /* notes.h */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 7B352F380B0025B600CABB32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7B352E8B0B00172000CABB32 /* levcomp */; + remoteInfo = levcomp; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXCopyFilesBuildPhase section */ 8DD76FAF0486AB0100D96B5E /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; @@ -222,6 +238,7 @@ 7B237EF20A8EC9D000580F30 /* mstuff2.h in CopyFiles */, 7BC222E80ABBB286003A7D9A /* itemprop.h in CopyFiles */, 7BD75A360AC214A200B74F6E /* notes.h in CopyFiles */, + 7B352EA10B00183400CABB32 /* mapdef.h in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 1; }; @@ -362,6 +379,14 @@ 7B237E6A0A8EC9D000580F30 /* mt19937ar.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mt19937ar.cc; sourceTree = "<group>"; }; 7B237E6B0A8EC9D000580F30 /* mstuff2.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mstuff2.h; sourceTree = "<group>"; }; 7B237F140A8ECD2E00580F30 /* libncurses.5.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libncurses.5.dylib; path = /usr/lib/libncurses.5.dylib; sourceTree = "<absolute>"; }; + 7B352E8C0B00172000CABB32 /* levcomp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = levcomp; sourceTree = BUILT_PRODUCTS_DIR; }; + 7B352E9D0B00183400CABB32 /* mapdef.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mapdef.cc; sourceTree = "<group>"; }; + 7B352E9E0B00183400CABB32 /* mapdef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mapdef.h; sourceTree = "<group>"; }; + 7B352ED10B001B9E00CABB32 /* levcomp.lpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.lex; name = levcomp.lpp; path = util/levcomp.lpp; sourceTree = "<group>"; }; + 7B352ED20B001B9E00CABB32 /* levcomp.ypp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.yacc; name = levcomp.ypp; path = util/levcomp.ypp; sourceTree = "<group>"; }; + 7B352EEC0B001F4200CABB32 /* levcomp.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = levcomp.cc; path = util/levcomp.cc; sourceTree = "<group>"; }; + 7B352F1F0B00232500CABB32 /* splev.des */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = splev.des; path = dat/splev.des; sourceTree = "<group>"; }; + 7B352F200B00232500CABB32 /* vaults.des */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = vaults.des; path = dat/vaults.des; sourceTree = "<group>"; }; 7BC222E50ABBB286003A7D9A /* itemprop.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemprop.cc; sourceTree = "<group>"; }; 7BC222E60ABBB286003A7D9A /* itemprop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemprop.h; sourceTree = "<group>"; }; 7BD75A330AC214A200B74F6E /* notes.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = notes.cc; sourceTree = "<group>"; }; @@ -370,6 +395,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 7B352E8A0B00172000CABB32 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8DD76FAD0486AB0100D96B5E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -385,6 +417,7 @@ isa = PBXGroup; children = ( 08FB7795FE84155DC02AAC07 /* Source */, + 7B352F1B0B0022C900CABB32 /* Resources */, 7B237F120A8ECCDE00580F30 /* Libraries */, C6A0FF2B0290797F04C91782 /* Documentation */, 1AB674ADFE9D54B511CA2CBB /* Products */, @@ -395,6 +428,43 @@ 08FB7795FE84155DC02AAC07 /* Source */ = { isa = PBXGroup; children = ( + 7B352EF00B001F5B00CABB32 /* Crawl */, + 7B352E950B0017CF00CABB32 /* Levcomp */, + 7B352EF30B001FA700CABB32 /* Shared */, + ); + name = Source; + sourceTree = "<group>"; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8DD76FB20486AB0100D96B5E /* crawl */, + 7B352E8C0B00172000CABB32 /* levcomp */, + ); + name = Products; + sourceTree = "<group>"; + }; + 7B237F120A8ECCDE00580F30 /* Libraries */ = { + isa = PBXGroup; + children = ( + 7B237F140A8ECD2E00580F30 /* libncurses.5.dylib */, + ); + name = Libraries; + sourceTree = "<group>"; + }; + 7B352E950B0017CF00CABB32 /* Levcomp */ = { + isa = PBXGroup; + children = ( + 7B352EEC0B001F4200CABB32 /* levcomp.cc */, + 7B352ED10B001B9E00CABB32 /* levcomp.lpp */, + 7B352ED20B001B9E00CABB32 /* levcomp.ypp */, + ); + name = Levcomp; + sourceTree = "<group>"; + }; + 7B352EF00B001F5B00CABB32 /* Crawl */ = { + isa = PBXGroup; + children = ( 7B237E0D0A8EC9D000580F30 /* abl-show.cc */, 7B237E290A8EC9D000580F30 /* abl-show.h */, 7B237E280A8EC9D000580F30 /* abyss.cc */, @@ -533,23 +603,33 @@ 7B237E140A8EC9D000580F30 /* view.cc */, 7B237E130A8EC9D000580F30 /* view.h */, ); - name = Source; + name = Crawl; sourceTree = "<group>"; }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { + 7B352EF30B001FA700CABB32 /* Shared */ = { isa = PBXGroup; children = ( - 8DD76FB20486AB0100D96B5E /* crawl */, + 7B352E9D0B00183400CABB32 /* mapdef.cc */, + 7B352E9E0B00183400CABB32 /* mapdef.h */, ); - name = Products; + name = Shared; sourceTree = "<group>"; }; - 7B237F120A8ECCDE00580F30 /* Libraries */ = { + 7B352F1B0B0022C900CABB32 /* Resources */ = { isa = PBXGroup; children = ( - 7B237F140A8ECD2E00580F30 /* libncurses.5.dylib */, + 7B352F1E0B0022E100CABB32 /* Levels */, ); - name = Libraries; + name = Resources; + sourceTree = "<group>"; + }; + 7B352F1E0B0022E100CABB32 /* Levels */ = { + isa = PBXGroup; + children = ( + 7B352F1F0B00232500CABB32 /* splev.des */, + 7B352F200B00232500CABB32 /* vaults.des */, + ); + name = Levels; sourceTree = "<group>"; }; C6A0FF2B0290797F04C91782 /* Documentation */ = { @@ -562,10 +642,27 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 7B352E8B0B00172000CABB32 /* levcomp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7B352E8E0B00177D00CABB32 /* Build configuration list for PBXNativeTarget "levcomp" */; + buildPhases = ( + 7B352E890B00172000CABB32 /* Sources */, + 7B352E8A0B00172000CABB32 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = levcomp; + productName = levcomp; + productReference = 7B352E8C0B00172000CABB32 /* levcomp */; + productType = "com.apple.product-type.tool"; + }; 8DD76FA90486AB0100D96B5E /* Crawl */ = { isa = PBXNativeTarget; buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "Crawl" */; buildPhases = ( + 7B352F3A0B0025C400CABB32 /* Compile Levels */, 8DD76FAB0486AB0100D96B5E /* Sources */, 8DD76FAD0486AB0100D96B5E /* Frameworks */, 8DD76FAF0486AB0100D96B5E /* CopyFiles */, @@ -573,6 +670,7 @@ buildRules = ( ); dependencies = ( + 7B352F390B0025B600CABB32 /* PBXTargetDependency */, ); name = Crawl; productInstallPath = "$(HOME)/bin"; @@ -590,12 +688,41 @@ mainGroup = 08FB7794FE84155DC02AAC07 /* Crawl */; projectDirPath = ""; targets = ( + 7B352E8B0B00172000CABB32 /* levcomp */, 8DD76FA90486AB0100D96B5E /* Crawl */, ); }; /* End PBXProject section */ +/* Begin PBXShellScriptBuildPhase section */ + 7B352F3A0B0025C400CABB32 /* Compile Levels */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Levels"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = "/bin/sh -x"; + shellScript = "echo \"Writing to '$DERIVED_FILES_DIR/mapdefs.ixx'\"\n\nif [ ! -d $DERIVED_FILES_DIR ]; then\n\tmkdir $DERIVED_FILES_DIR\nfi\n\n$BUILT_PRODUCTS_DIR/levcomp $DERIVED_FILES_DIR/mapdefs.ixx < $SRCROOT/dat/vaults.des\n$BUILT_PRODUCTS_DIR/levcomp -a $DERIVED_FILES_DIR/mapdefs.ixx < $SRCROOT/dat/vaults.des\nexit 0\n"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + 7B352E890B00172000CABB32 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B352ED40B001B9E00CABB32 /* levcomp.ypp in Sources */, + 7B352ED30B001B9E00CABB32 /* levcomp.lpp in Sources */, + 7B352E9F0B00183400CABB32 /* mapdef.cc in Sources */, + 7B352EED0B001F4200CABB32 /* levcomp.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8DD76FAB0486AB0100D96B5E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -669,11 +796,20 @@ 7B237EF10A8EC9D000580F30 /* mt19937ar.cc in Sources */, 7BC222E70ABBB286003A7D9A /* itemprop.cc in Sources */, 7BD75A350AC214A200B74F6E /* notes.cc in Sources */, + 7B352EA00B00183400CABB32 /* mapdef.cc in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 7B352F390B0025B600CABB32 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7B352E8B0B00172000CABB32 /* levcomp */; + targetProxy = 7B352F380B0025B600CABB32 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 1DEB928608733DD80010E9CD /* Development */ = { isa = XCBuildConfiguration; @@ -717,6 +853,66 @@ }; name = Development; }; + 7B352E8F0B00177D00CABB32 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_WARN_UNUSED_FUNCTION = NO; + GCC_WARN_UNUSED_LABEL = NO; + INSTALL_PATH = "$(HOME)/bin"; + PRODUCT_NAME = levcomp; + YACC_GENERATED_FILE_STEM = InputFileStem; + ZERO_LINK = YES; + }; + name = Development; + }; + 7B352E900B00177D00CABB32 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_WARN_UNUSED_FUNCTION = NO; + GCC_WARN_UNUSED_LABEL = NO; + INSTALL_PATH = "$(HOME)/bin"; + PREBINDING = NO; + PRODUCT_NAME = levcomp; + YACC_GENERATED_FILE_STEM = InputFileStem; + ZERO_LINK = NO; + }; + name = Release; + }; + 7B352E910B00177D00CABB32 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 1; + GCC_WARN_UNUSED_FUNCTION = NO; + GCC_WARN_UNUSED_LABEL = NO; + INSTALL_PATH = "$(HOME)/bin"; + PREBINDING = NO; + PRODUCT_NAME = levcomp; + YACC_GENERATED_FILE_STEM = InputFileStem; + ZERO_LINK = YES; + }; + name = Debug; + }; + 7B352E920B00177D00CABB32 /* Wizard */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_WARN_UNUSED_FUNCTION = NO; + GCC_WARN_UNUSED_LABEL = NO; + INSTALL_PATH = "$(HOME)/bin"; + PREBINDING = NO; + PRODUCT_NAME = levcomp; + YACC_GENERATED_FILE_STEM = InputFileStem; + ZERO_LINK = YES; + }; + name = Wizard; + }; 7B97C01F0A8ECFD700CE8936 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -898,6 +1094,17 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Development; }; + 7B352E8E0B00177D00CABB32 /* Build configuration list for PBXNativeTarget "levcomp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7B352E8F0B00177D00CABB32 /* Development */, + 7B352E900B00177D00CABB32 /* Release */, + 7B352E910B00177D00CABB32 /* Debug */, + 7B352E920B00177D00CABB32 /* Wizard */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Development; + }; /* End XCConfigurationList section */ }; rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; diff --git a/crawl-ref/source/acr.cc b/crawl-ref/source/acr.cc index 8a4606264d..0fd8e5c572 100644 --- a/crawl-ref/source/acr.cc +++ b/crawl-ref/source/acr.cc @@ -66,16 +66,6 @@ #include <signal.h> #endif -#ifdef USE_EMX -#include <sys/types.h> -#endif - -#ifdef OS9 -#include <stat.h> -#else -#include <sys/stat.h> -#endif - #include "externs.h" #include "abl-show.h" @@ -331,10 +321,6 @@ int main( int argc, char *argv[] ) unixcurses_shutdown(); #endif -#ifdef USE_EMX - deinit_emx(); -#endif - return 0; } // end main() @@ -2729,10 +2715,6 @@ static bool initialise(void) directvideo = 1; #endif -#ifdef USE_EMX - init_emx(); -#endif - seed_rng(); init_overmap(); // in overmap.cc (duh?) clear_ids(); // in itemname.cc diff --git a/crawl-ref/source/chardump.cc b/crawl-ref/source/chardump.cc index a2871f2c25..fa3c04aea2 100644 --- a/crawl-ref/source/chardump.cc +++ b/crawl-ref/source/chardump.cc @@ -24,21 +24,11 @@ #include <string.h> #include <fcntl.h> #include <stdlib.h> -#if !(defined(__IBMCPP__) || defined(__BCPLUSPLUS__)) +#if !defined(__IBMCPP__) #include <unistd.h> #endif #include <ctype.h> -#ifdef USE_EMX -#include <sys/types.h> -#endif - -#ifdef OS9 -#include <stat.h> -#else -#include <sys/stat.h> -#endif - #ifdef DOS #include <conio.h> #endif diff --git a/crawl-ref/source/files.cc b/crawl-ref/source/files.cc index da1435504e..4c15250213 100644 --- a/crawl-ref/source/files.cc +++ b/crawl-ref/source/files.cc @@ -46,18 +46,6 @@ #include <unistd.h> #endif -#ifdef USE_EMX -#include <sys/types.h> -#include <fcntl.h> -#include <unistd.h> -#endif - -#ifdef OS9 -#include <stat.h> -#else -#include <sys/stat.h> -#endif - #ifdef __MINGW32__ #include <io.h> #include <sys/types.h> diff --git a/crawl-ref/source/libemx.cc b/crawl-ref/source/libemx.cc deleted file mode 100644 index d8958bbe18..0000000000 --- a/crawl-ref/source/libemx.cc +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Modified for Crawl Reference by $Author$ on $Date$ - */ - -#include <stdio.h> -#include <stdarg.h> -#include <emx/syscalls.h> -#include <sys/video.h> - -#include "libemx.h" - - -static int cursor_start = 0, cursor_end = 0; -static int gx = 0, gy = 0, gxx = 79, gyy = 24; -static char buf[4096]; - - - - -void init_emx() -{ - v_init(); - v_getctype(&cursor_start, &cursor_end); -} - - - - -void deinit_emx() -{ - // nothing to do -} - - - - -void _setcursortype(int curstype) -{ - if ( curstype == _NOCURSOR ) - v_hidecursor(); - else - v_ctype(cursor_start, cursor_end); -} - - - - -void clrscr() -{ - if ( (gx == 0) && (gy == 0) && (gxx == 79) && (gyy == 24) ) - { - v_clear(); - v_gotoxy(0, 0); - } - else - { - for (int i = gy; i <= gyy; ++i) - { - v_gotoxy(gx, i); - v_putn(' ', gxx - gx + 1); - } - v_gotoxy(gx, gy); - } -} - - - - -void gotoxy(int x, int y) -{ - v_gotoxy(x - 1 + gx, y - 1 + gy); -} - - - - -void textcolor(int c) -{ - v_attrib(c); -} - - -void textattr(int c) -{ - textcolor(c); -} - - -static void cprintf_aux(const char *s) -{ - char *ptr = buf; - - while (*s) - { - if ( *s == '\n' ) - { - *ptr = 0; - v_puts(buf); - int x, y; - - v_getxy(&x, &y); - if ( y != 24 ) - v_gotoxy(gx, y + 1); - else - v_putc('\n'); - - ptr = buf; - } - else if ( *s != '\r' ) - *ptr++ = *s; - - ++s; - } - - *ptr = 0; - v_puts(buf); - -} - -void cprintf(const char *format, ...) -{ - va_list argp; - char buffer[4096]; // one could hope it's enough - - va_start( argp, format ); - - vsprintf(buffer, format, argp); - cprintf_aux(buffer); - - va_end(argp); -} - -void puttext(int x, int y, int lx, int ly, unsigned const char *buf) -{ - puttext(x, y, lx, ly, (const char *) buf); -} - - - - -void puttext(int x, int y, int lx, int ly, const char *buf) -{ - int count = (lx - x + 1); - - for (int i = y - 1; i < ly; ++i) - { - v_putline(buf + 2 * count * i, x - 1, i, count); - } -} - - - - -void gettext(int x, int y, int lx, int ly, unsigned char *buf) -{ - gettext(x, y, lx, ly, (char *) buf); -} - - - - -void gettext(int x, int y, int lx, int ly, char *buf) -{ - int count = (lx - x + 1); - - for (int i = y - 1; i < ly; ++i) - { - v_getline(buf + 2 * count * i, x - 1, i, count); - } -} - - - - -void window(int x, int y, int lx, int ly) -{ - gx = x - 1; - gy = y - 1; - gxx = lx - 1; - gyy = ly - 1; -} - - - - -int wherex() -{ - int x, y; - - v_getxy(&x, &y); - - return x + 1 - gx; -} - - - - -int wherey() -{ - int x, y; - - v_getxy(&x, &y); - - return y + 1 - gy; -} - - - - -void putch(char c) -{ - v_putc(c); -} - - - - -int kbhit() -{ - return 0; -} - - - - -void delay(int ms) -{ - __sleep2(ms); -} - - - - -void textbackground(int c) -{ - if ( c != 0 ) - { - fprintf(stderr, "bad background=%d", c); - exit(1); - } -} diff --git a/crawl-ref/source/libemx.h b/crawl-ref/source/libemx.h deleted file mode 100644 index 550e5d2230..0000000000 --- a/crawl-ref/source/libemx.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef LIBEMX_H -#define LIBEMX_H -#ifndef __LIBEMX_C__ - - -#include <stdlib.h> -#include <conio.h> - -#define itoa _itoa - - -#define _NORMALCURSOR 1 -#define _NOCURSOR 0 - - -void init_emx(); -void deinit_emx(); -void _setcursortype(int curstype); -void clrscr(); -void gotoxy(int x, int y); -void textcolor(int c); -void textattr(int c); -void cprintf (const char *format, ...); - -void puttext(int x, int y, int lx, int ly, const char *buf); -void puttext(int x, int y, int lx, int ly, unsigned const char *buf); -void gettext(int x, int y, int lx, int ly, char *buf); -void gettext(int x, int y, int lx, int ly, unsigned char *buf); -void window(int x, int y, int lx, int ly); -int wherex(); -int wherey(); -void putch(char c); -int kbhit(); -void delay(int ms); -void textbackground(int c); - - -#endif // __LIBEMX_C__ -#endif diff --git a/crawl-ref/source/libunix.cc b/crawl-ref/source/libunix.cc index 0a9d556b6b..2e5483075c 100644 --- a/crawl-ref/source/libunix.cc +++ b/crawl-ref/source/libunix.cc @@ -247,10 +247,7 @@ void unixcurses_startup( void ) start_color(); setup_colour_pairs(); -#ifndef SOLARIS - // These can cause some display problems under Solaris scrollok(stdscr, TRUE); -#endif } diff --git a/crawl-ref/source/makefile b/crawl-ref/source/makefile index f61f141f1b..a887eec812 100644 --- a/crawl-ref/source/makefile +++ b/crawl-ref/source/makefile @@ -5,10 +5,7 @@ #Makefile chooser. Choose one: MAKEFILE = makefile.lnx -#MAKEFILE = makefile.sgi #MAKEFILE = makefile.dos -#MAKEFILE = makefile.emx -#MAKEFILE = makefile.sol #MAKEFILE = makefile.osx #MAKEFILE = makefile.mgw diff --git a/crawl-ref/source/makefile.bor b/crawl-ref/source/makefile.bor deleted file mode 100644 index 97707c4434..0000000000 --- a/crawl-ref/source/makefile.bor +++ /dev/null @@ -1,54 +0,0 @@ -# -# Makefile for Borland C++ 5.5 free commandline tools -# -# Modified for Crawl Reference by $Author$ on $Date$ - -!include makefile.obj - -GAME = ..\crawl.exe - -all : $(GAME) - -.PHONY : clean -.PHONY : debug -.PHONY : noopt -.PHONY : install -.PHONY : wizard - -clean : - $(DEL) *.o - -debug : - -noopt : - -install : - -wizard : - -# -# Borland C++ tools -# -CC = bcc32 -LINK = ilink32 -DEL = del - -# -# windows defines, including windows version to make sure code runs on -# all windows systems -# -WIN32DEFINES = WIN32CONSOLE;NEED_SPRINTF;WINVER=0x0400;_WIN32_WINNT=0x0400;__BCPLUSPLUS__ - -# -# Options -# -LINKOPTS = -Tpe -ap -c -x /V4.0 -CFLAGS = -I. -D$(WIN32DEFINES) -4 -a -k- -Oc -OS -Oi -Ov -H- -P -c -NICEFLAGS = -w-8004 -DEBUGFLAGS = -v -y - -$(GAME) : $(OBJECTS) libw32c.o - $(LINK) $(LINKOPTS) c0x32.obj $?, $(GAME),, import32.lib cw32.lib - -.cc.o: - $(CC) $(CFLAGS) $(NICEFLAGS) -o$*.o $< diff --git a/crawl-ref/source/makefile.bsd b/crawl-ref/source/makefile.bsd deleted file mode 100644 index 9e10d1ebf8..0000000000 --- a/crawl-ref/source/makefile.bsd +++ /dev/null @@ -1,64 +0,0 @@ -# -*- Makefile -*- for Dungeon Crawl (BSD) - -# -# Modified for Crawl Reference by $Author$ on $Date$ -# - -GAME = crawl - -# this file contains a list of the libraries. -# it will make a variable called OBJECTS that contains all the libraries -include makefile.obj - -OBJECTS += libunix.o - -CXX = g++ -DELETE = rm -f -COPY = cp -OS_TYPE = BSD -CFLAGS = -Wall -D$(OS_TYPE) $(EXTRA_FLAGS) -LDFLAGS = -static -L/usr/lib -MCHMOD = 711 -# INSTALLDIR = /usr/games -INSTALLDIR = /tmp/CRAWLTEST/testdev -LIB = -lncurses - -INCLUDES = -I/usr/include/ncurses - -all: $(GAME) - -install: $(GAME) - $(COPY) $(GAME) ${INSTALLDIR} - chmod ${MCHMOD} ${INSTALLDIR}/$(GAME) - -clean: - $(DELETE) *.o - -distclean: - $(DELETE) *.o - $(DELETE) bones.* - $(DELETE) morgue.txt - $(DELETE) scores - $(DELETE) $(GAME) - $(DELETE) *.sav - $(DELETE) core - $(DELETE) *.0* - $(DELETE) *.lab - - -$(GAME): $(OBJECTS) - ${CXX} ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(GAME) $(LIB) - strip $(GAME) - chmod ${MCHMOD} $(GAME) - -debug: $(OBJECTS) - ${CXX} ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(GAME) $(LIB) - -profile: $(OBJECTS) - ${CXX} -g -p ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(GAME) $(LIB) - -.cc.o: - ${CXX} ${CFLAGS} -c $< ${INCLUDE} - -.h.cc: - touch $@ diff --git a/crawl-ref/source/makefile.emx b/crawl-ref/source/makefile.emx deleted file mode 100644 index 13e99e47fe..0000000000 --- a/crawl-ref/source/makefile.emx +++ /dev/null @@ -1,53 +0,0 @@ -# Makefile for Dungeon Crawl (OS/2 EMX port) -# 1998 (C) Alexey Guzeev, aga@russia.crosswinds.net -# EMX is covered by GNU GPL -# Dungeon Crawl is covered by Crawl GPL -# OS/2 is a trademark of IBM Corp. -# IBM is a trademark of IBM Corp. -# :) - -# 1. make some directory, like \crawl -# 2. make subdirectory for sources, \crawl\src -# 3. put crawl sources in \crawl\src directory -# 4. make directory \crawl\src current -# 5. execute command 'dmake -B -r -f makefile.emx install' -# 6. remove \crawl\src subdirectory with all contents -# 7. delete \crawl\scoretable.exe - I don't know what it does :) -# 8. run \crawl\crawl.exe & enjoy! - - -CC = gcc -CFLAGS = -Wall -O3 -MMD -Zmt -DUSE_EMX -LIBS = -lvideo -lbsd -AR = ar - -include makefile.obj - -OBJ = $(OBJECTS) - - -all: crawl.exe scoretable.exe - -install: ..\crawl.exe ..\scoretable.exe - -crawl.a: $(OBJS) - $(AR) r crawl.a $(OBJS) - -..\crawl.exe: crawl.exe - +copy crawl.exe .. - emxbind -s ..\crawl.exe - -..\scoretable.exe: scoretable.exe - +copy scoretable.exe .. - emxbind -s ..\scoretable.exe -clean: - +del *.o - -crawl.exe: crawl.a libemx.o - $(CC) -o crawl.exe crawl.a libemx.o $(LIBS) - -scoretable.exe: scoretab.o libemx.o - $(CC) -o scoretable.exe scoretab.o libemx.o $(LIBS) - -.cc.o: - $(CC) $(CFLAGS) -c $*.cc diff --git a/crawl-ref/source/makefile.lnx b/crawl-ref/source/makefile.lnx index 0ad19bb49b..df2cba085f 100644 --- a/crawl-ref/source/makefile.lnx +++ b/crawl-ref/source/makefile.lnx @@ -39,9 +39,8 @@ UTIL = util/ LEX := lex YACC := bison -y -YTABC := y.tab.c -YTABH := y.tab.h -LEXYYC := lex.yy.c +YTABC := levcomp.tab.c +YTABH := levcomp.tab.h ifeq ($(LEX),) DOYACC := @@ -77,34 +76,31 @@ mapdefs.ixx: dat/vaults.des dat/splev.des $(LEVCOMP) $(LEVCOMP) $@ < dat/vaults.des $(LEVCOMP) -a $@ < dat/splev.des -$(LEVCOMP): $(UTIL)levcomp_yacc.o $(UTIL)levcomp_lex.o mapdef.o +$(LEVCOMP): $(UTIL)levcomp.tab.o $(UTIL)levcomp.lex.o mapdef.o $(UTIL)levcomp.o $(CXX) -o $@ $^ ifeq ($(DOYACC),y) -prebuildyacc: mapdefs.ixx $(UTIL)levcomp_yacc.cc $(UTIL)levcomp_lex.cc \ - $(UTIL)levcomp.h +prebuildyacc: mapdefs.ixx $(UTIL)levcomp.tab.cc $(UTIL)levcomp.tab.h $(UTIL)levcomp.lex.cc cp $^ prebuilt/ -$(UTIL)levcomp_yacc.cc: $(UTIL)levcomp.y - cd $(UTIL) && $(YACC) -d levcomp.y \ - && mv $(YTABH) levcomp.h \ - && mv $(YTABC) levcomp_yacc.cc +$(UTIL)levcomp.tab.cc: $(UTIL)levcomp.ypp + cd $(UTIL) && $(YACC) -d -b levcomp levcomp.ypp \ + && mv $(YTABC) levcomp.tab.cc -$(UTIL)levcomp_lex.cc: $(UTIL)levcomp.l - cd $(UTIL) && $(LEX) levcomp.l \ - && mv $(LEXYYC) levcomp_lex.cc +$(UTIL)levcomp.lex.cc: $(UTIL)levcomp.lpp + cd $(UTIL) && $(LEX) -olevcomp.lex.cc levcomp.lpp else # Pull the level-compiler stuff up from prebuilt/ -$(UTIL)levcomp_yacc.cc: prebuilt/levcomp_yacc.cc - cp prebuilt/*.h . +$(UTIL)levcomp.tab.cc: prebuilt/levcomp.tab.cc + cp prebuilt/*.h $(UTIL) cp $< $@ -$(UTIL)levcomp_lex.cc: prebuilt/levcomp_lex.cc +$(UTIL)levcomp.lex.cc: prebuilt/levcomp.lex.cc cp $< $@ endif @@ -124,7 +120,7 @@ clean: $(DELETE) *.o $(DELETE) $(UTIL)*.o $(DELETE) $(LEVCOMP) - $(DELETE) $(UTIL)*.cc $(UTIL)*.c $(UTIL)*.h + $(DELETE) $(UTIL)*.tab.cc $(UTIL)*.tab.c $(UTIL)*.tab.h $(UTIL)*.lex.cc $(DELETE) *.ixx distclean: diff --git a/crawl-ref/source/makefile.mgw b/crawl-ref/source/makefile.mgw index f85ade2814..b4da9d91c9 100644 --- a/crawl-ref/source/makefile.mgw +++ b/crawl-ref/source/makefile.mgw @@ -41,9 +41,8 @@ DOYACC := n LEX := flex YACC := bison -y -YTABC := y.tab.c -YTABH := y.tab.h -LEXYYC := lex.yy.c +YTABC := levcomp.tab.c +YTABH := levcomp.tab.h ifeq ($(LEX),) @@ -72,32 +71,29 @@ mapdefs.ixx: dat/vaults.des dat/splev.des $(UTIL)levcomp.exe $(subst /,\, $(UTIL)levcomp.exe $@ < dat/vaults.des) $(subst /,\, $(UTIL)levcomp.exe -a $@ < dat/splev.des) -$(UTIL)levcomp.exe: $(UTIL)levcomp_yacc.o $(UTIL)levcomp_lex.o $(OPATH)/mapdef.o +$(UTIL)levcomp.exe: $(UTIL)levcomp.tab.o $(UTIL)levcomp.lex.o $(OPATH)/mapdef.o $(UTIL)levcomp.o $(CXX) -o $@ $^ ifeq ($(DOYACC),y) # [ds] A plague on the broken copy command on Windoze. -prebuildyacc: mapdefs.ixx $(UTIL)levcomp_lex.cc $(UTIL)levcomp_yacc.cc \ - $(UTIL)levcomp.h +prebuildyacc: mapdefs.ixx $(UTIL)levcomp.lex.cc $(UTIL)levcomp.tab.cc $(UTIL)levcomp.tab.h $(subst /,\,for %%f in ($^) do $(COPY) %%f prebuilt) -$(UTIL)levcomp_yacc.cc: $(UTIL)levcomp.y - $(subst /,\, cd $(UTIL)) && $(YACC) -d levcomp.y - $(subst /,\, cd $(UTIL)) && move $(YTABH) levcomp.h - $(subst /,\, cd $(UTIL)) && move $(YTABC) levcomp_yacc.cc +$(UTIL)levcomp.tab.cc: $(UTIL)levcomp.ypp + $(subst /,\, cd $(UTIL)) && $(YACC) -d -b levcomp levcomp.ypp + $(subst /,\, cd $(UTIL)) && move $(YTABC) levcomp.tab.cc -$(UTIL)levcomp_lex.cc: $(UTIL)levcomp.l - $(subst /,\, cd $(UTIL) && $(LEX) levcomp.l) - $(subst /,\, cd $(UTIL) && move $(LEXYYC) levcomp_lex.cc) +$(UTIL)levcomp_lex.cc: $(UTIL)levcomp.lpp + $(subst /,\, cd $(UTIL) && $(LEX) -olevcomp.lex.cc levcomp.lpp) else -$(UTIL)levcomp_yacc.cc: prebuilt/levcomp_yacc.cc - $(subst /,\,$(COPY) prebuilt/*.h .) +$(UTIL)levcomp.tab.cc: prebuilt/levcomp.tab.cc + $(subst /,\,$(COPY) prebuilt/*.h $(UTIL)) $(subst /,\,$(COPY) $< $@) -$(UTIL)levcomp_lex.cc: prebuilt/levcomp_lex.cc +$(UTIL)levcomp.lex.cc: prebuilt/levcomp.lex.cc $(subst /,\,$(COPY) $< $@) endif @@ -111,9 +107,10 @@ clean: $(DELETE) $(OPATH)\*.o $(subst /,\,$(DELETE) $(UTIL)*.o) $(subst /,\,$(DELETE) $(UTIL)*.exe) - $(subst /,\,$(DELETE) $(UTIL)*.cc) - $(subst /,\,$(DELETE) $(UTIL)*.h) - $(subst /,\,$(DELETE) $(UTIL)*.c) + $(subst /,\,$(DELETE) $(UTIL)*.lex.cc) + $(subst /,\,$(DELETE) $(UTIL)*.tab.cc) + $(subst /,\,$(DELETE) $(UTIL)*.tab.h) + $(subst /,\,$(DELETE) $(UTIL)*.tab.c) $(subst /,\,$(DELETE) *.ixx) distclean: diff --git a/crawl-ref/source/makefile.sgi b/crawl-ref/source/makefile.sgi deleted file mode 100644 index 67815feaae..0000000000 --- a/crawl-ref/source/makefile.sgi +++ /dev/null @@ -1,54 +0,0 @@ -# Make file for Dungeon Crawl (irix) - -APPNAME = crawl - -# this file contains a list of the libraries. -# it will make a variable called OBJECTS that contains all the libraries -include makefile.obj - -CXX = CC -DELETE = rm -f -COPY = cp -OS_TYPE = LINUX -CFLAGS = -Wall -D$(OS_TYPE) $(EXTRA_FLAGS) -LDFLAGS = -L/usr/lib -MCHMOD = 711 -INSTALLDIR = /usr/games -LIB = -lncurses - -# Include for Linux -INCLUDES = -I/usr/include/ncurses - -all: $(APPNAME) - -%.o: %.cc - @echo hello - @${CXX} ${CFLAGS} -c $< ${INCLUDE} - -install: $(APPNAME) - $(COPY) $(APPNAME) ${INSTALLDIR} - chmod ${MCHMOD} ${INSTALLDIR}/$(APPNAME) - -clean: - $(DELETE) *.o - -distclean: - $(DELETE) *.o - $(DELETE) bones.* - $(DELETE) morgue.txt - $(DELETE) scores - $(DELETE) $(APPNAME) - -$(APPNAME): $(OBJECTS) - ${CXX} ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB) - strip $(APPNAME) - chmod ${MCHMOD} $(APPNAME) - -debug: $(OBJECTS) - ${CXX} ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB) - -profile: $(OBJECTS) - ${CXX} -g -p ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB) - -.h.cc: - touch $@ diff --git a/crawl-ref/source/makefile.sol b/crawl-ref/source/makefile.sol deleted file mode 100644 index e79d7e3a53..0000000000 --- a/crawl-ref/source/makefile.sol +++ /dev/null @@ -1,68 +0,0 @@ -# Make file for Dungeon Crawl (solaris) - -# -# Modified for Crawl Reference by $Author$ on $Date$ -# - -APPNAME = crawl - -# this file contains a list of the libraries. -# it will make a variable called OBJECTS that contains all the libraries -include makefile.obj - -OBJECTS += libunix.o - -CXX = g++ -DELETE = rm -f -COPY = cp -GROUP = games -MOVE = mv -OS_TYPE = SOLARIS - -CFLAGS = -Wall -Wwrite-strings -Wstrict-prototypes \ - -Wmissing-prototypes -Wmissing-declarations \ - -g -D$(OS_TYPE) $(EXTRA_FLAGS) - -LDFLAGS = -static -MCHMOD = 2755 -INSTALLDIR = /opt/local/newcrawl/bin -LIB = -lcurses - -all: $(APPNAME) - -install: $(APPNAME) - #strip $(APPNAME) - $(MOVE) ${INSTALLDIR}/${APPNAME} ${INSTALLDIR}/${APPNAME}.old - $(COPY) $(APPNAME) ${INSTALLDIR} - chgrp ${GROUP} ${INSTALLDIR}/${APPNAME} - chmod ${MCHMOD} ${INSTALLDIR}/$(APPNAME) - -clean: - $(DELETE) *.o - -distclean: - $(DELETE) *.o - $(DELETE) bones.* - $(DELETE) morgue.txt - $(DELETE) scores - $(DELETE) $(APPNAME) - $(DELETE) *.sav - $(DELETE) core - $(DELETE) *.0* - $(DELETE) *.lab - - -$(APPNAME): $(OBJECTS) - ${CXX} ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB) - -debug: $(OBJECTS) - ${CXX} ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB) - -profile: $(OBJECTS) - ${CXX} -g -p ${LDFLAGS} $(INCLUDES) $(CFLAGS) $(OBJECTS) -o $(APPNAME) $(LIB) - -.cc.o: - ${CXX} ${CFLAGS} -c $< ${INCLUDE} - -.h.cc: - touch $@ diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index d903cfae71..14ee373ddb 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -18,7 +18,7 @@ #include "notes.h" #include <string.h> -#if !(defined(__IBMCPP__) || defined(__BCPLUSPLUS__)) +#if !defined(__IBMCPP__) #include <unistd.h> #endif diff --git a/crawl-ref/source/newgame.cc b/crawl-ref/source/newgame.cc index 97718a3691..c986474d27 100644 --- a/crawl-ref/source/newgame.cc +++ b/crawl-ref/source/newgame.cc @@ -67,18 +67,6 @@ #include <unistd.h> #endif -#ifdef USE_EMX -#include <sys/types.h> -#include <fcntl.h> -#include <unistd.h> -#endif - -#ifdef OS9 -#include <stat.h> -#else -#include <sys/stat.h> -#endif - #include "externs.h" #include "abl-show.h" diff --git a/crawl-ref/source/ouch.cc b/crawl-ref/source/ouch.cc index 47864f127a..4cc78e65d8 100644 --- a/crawl-ref/source/ouch.cc +++ b/crawl-ref/source/ouch.cc @@ -44,18 +44,6 @@ #include <unistd.h> #endif -#ifdef USE_EMX -#include <sys/types.h> -#include <fcntl.h> -#include <unistd.h> -#endif - -#ifdef OS9 -#include <stat.h> -#else -#include <sys/stat.h> -#endif - #include "ouch.h" #ifdef __MINGW32__ diff --git a/crawl-ref/source/prebuilt/levcomp.h b/crawl-ref/source/prebuilt/levcomp.h deleted file mode 100644 index ae44292ce6..0000000000 --- a/crawl-ref/source/prebuilt/levcomp.h +++ /dev/null @@ -1,125 +0,0 @@ -/* A Bison parser, made by GNU Bison 2.3. */ - -/* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - DEFAULT_DEPTH = 258, - SYMBOL = 259, - TAGS = 260, - NAME = 261, - DEPTH = 262, - ORIENT = 263, - PLACE = 264, - CHANCE = 265, - FLAGS = 266, - MONS = 267, - ENCOMPASS = 268, - NORTH = 269, - EAST = 270, - SOUTH = 271, - WEST = 272, - NORTH_DIS = 273, - NORTHEAST = 274, - SOUTHEAST = 275, - SOUTHWEST = 276, - NORTHWEST = 277, - BAD_CHARACTER = 278, - NO_HMIRROR = 279, - NO_VMIRROR = 280, - PANDEMONIC = 281, - DASH = 282, - COMMA = 283, - INTEGER = 284, - STRING = 285, - MAP_LINE = 286, - MONSTER_NAME = 287 - }; -#endif -/* Tokens. */ -#define DEFAULT_DEPTH 258 -#define SYMBOL 259 -#define TAGS 260 -#define NAME 261 -#define DEPTH 262 -#define ORIENT 263 -#define PLACE 264 -#define CHANCE 265 -#define FLAGS 266 -#define MONS 267 -#define ENCOMPASS 268 -#define NORTH 269 -#define EAST 270 -#define SOUTH 271 -#define WEST 272 -#define NORTH_DIS 273 -#define NORTHEAST 274 -#define SOUTHEAST 275 -#define SOUTHWEST 276 -#define NORTHWEST 277 -#define BAD_CHARACTER 278 -#define NO_HMIRROR 279 -#define NO_VMIRROR 280 -#define PANDEMONIC 281 -#define DASH 282 -#define COMMA 283 -#define INTEGER 284 -#define STRING 285 -#define MAP_LINE 286 -#define MONSTER_NAME 287 - - - - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 54 "levcomp.y" -{ - int i; - const char *text; -} -/* Line 1529 of yacc.c. */ -#line 118 "y.tab.h" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - -extern YYSTYPE yylval; - diff --git a/crawl-ref/source/prebuilt/levcomp_lex.cc b/crawl-ref/source/prebuilt/levcomp.lex.cc index 61c26aef8c..8002c491bf 100644 --- a/crawl-ref/source/prebuilt/levcomp_lex.cc +++ b/crawl-ref/source/prebuilt/levcomp.lex.cc @@ -1,7 +1,8 @@ +#line 2 "levcomp.lex.cc" /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ + * $Header: /cvs/root/flex/flex/skel.c,v 1.2 2004/05/07 00:28:17 jkh Exp $ */ #define FLEX_SCANNER @@ -9,7 +10,7 @@ #define YY_FLEX_MINOR_VERSION 5 #include <stdio.h> -#include <errno.h> + /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ #ifdef c_plusplus @@ -22,9 +23,7 @@ #ifdef __cplusplus #include <stdlib.h> -#ifndef _WIN32 #include <unistd.h> -#endif /* Use prototypes in function declarations. */ #define YY_USE_PROTOS @@ -64,7 +63,6 @@ #define YY_PROTO(proto) () #endif - /* Returned upon end-of-file. */ #define YY_NULL 0 @@ -1079,16 +1077,16 @@ goto find_rule; \ #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; -#line 1 "levcomp.l" +#line 1 "levcomp.lpp" #define INITIAL 0 -#line 2 "levcomp.l" +#line 2 "levcomp.lpp" // levcomp.l: // Level compiler lexer for Dungeon Crawl Stone Soup. // // Based loosely on NetHack's lev_comp.l -#include "levcomp.h" +#include "levcomp.tab.h" #include <cstring> static bool alloced = false; @@ -1116,7 +1114,7 @@ static void settext() #define KEYWORDS 4 #define YY_NEVER_INTERACTIVE 1 -#line 1120 "lex.yy.c" +#line 1118 "levcomp.lex.cc" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1216,20 +1214,9 @@ YY_MALLOC_DECL YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - } + else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ + && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - @@ -1281,10 +1268,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 39 "levcomp.l" +#line 39 "levcomp.lpp" -#line 1288 "lex.yy.c" +#line 1275 "levcomp.lex.cc" if ( yy_init ) { @@ -1378,17 +1365,17 @@ do_action: /* This label is used only to access EOF actions. */ { /* beginning of action switch */ case 1: YY_RULE_SETUP -#line 41 "levcomp.l" +#line 41 "levcomp.lpp" { BEGIN(INITIAL); } YY_BREAK case 2: YY_RULE_SETUP -#line 43 "levcomp.l" +#line 43 "levcomp.lpp" ; YY_BREAK case 3: YY_RULE_SETUP -#line 45 "levcomp.l" +#line 45 "levcomp.lpp" { settext(); return MAP_LINE; @@ -1396,67 +1383,67 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 50 "levcomp.l" +#line 50 "levcomp.lpp" { BEGIN(MAPDEF); } YY_BREAK case 5: YY_RULE_SETUP -#line 52 "levcomp.l" +#line 52 "levcomp.lpp" ; YY_BREAK case 6: YY_RULE_SETUP -#line 54 "levcomp.l" +#line 54 "levcomp.lpp" { BEGIN(ARGUMENT); return NAME; } YY_BREAK case 7: YY_RULE_SETUP -#line 55 "levcomp.l" +#line 55 "levcomp.lpp" return DEFAULT_DEPTH; YY_BREAK case 8: YY_RULE_SETUP -#line 56 "levcomp.l" +#line 56 "levcomp.lpp" return DEPTH; YY_BREAK case 9: YY_RULE_SETUP -#line 57 "levcomp.l" +#line 57 "levcomp.lpp" return ORIENT; YY_BREAK case 10: YY_RULE_SETUP -#line 58 "levcomp.l" +#line 58 "levcomp.lpp" { BEGIN(ARGUMENT); return PLACE; } YY_BREAK case 11: YY_RULE_SETUP -#line 59 "levcomp.l" +#line 59 "levcomp.lpp" return CHANCE; YY_BREAK case 12: YY_RULE_SETUP -#line 60 "levcomp.l" +#line 60 "levcomp.lpp" return FLAGS; YY_BREAK case 13: YY_RULE_SETUP -#line 61 "levcomp.l" +#line 61 "levcomp.lpp" { BEGIN(KEYWORDS); return TAGS; } YY_BREAK case 14: YY_RULE_SETUP -#line 62 "levcomp.l" +#line 62 "levcomp.lpp" { BEGIN(ARGUMENT); return SYMBOL; } YY_BREAK case 15: YY_RULE_SETUP -#line 63 "levcomp.l" +#line 63 "levcomp.lpp" { BEGIN(MNAME); return MONS; } YY_BREAK case 16: YY_RULE_SETUP -#line 65 "levcomp.l" +#line 65 "levcomp.lpp" { settext(); return STRING; @@ -1464,17 +1451,17 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 70 "levcomp.l" +#line 70 "levcomp.lpp" ; YY_BREAK case 18: YY_RULE_SETUP -#line 71 "levcomp.l" +#line 71 "levcomp.lpp" { BEGIN(INITIAL); } YY_BREAK case 19: YY_RULE_SETUP -#line 73 "levcomp.l" +#line 73 "levcomp.lpp" { settext(); return MONSTER_NAME; @@ -1482,97 +1469,97 @@ YY_RULE_SETUP YY_BREAK case 20: YY_RULE_SETUP -#line 78 "levcomp.l" +#line 78 "levcomp.lpp" return COMMA; YY_BREAK case 21: YY_RULE_SETUP -#line 79 "levcomp.l" +#line 79 "levcomp.lpp" { BEGIN(INITIAL); } YY_BREAK case 22: YY_RULE_SETUP -#line 80 "levcomp.l" +#line 80 "levcomp.lpp" ; YY_BREAK case 23: YY_RULE_SETUP -#line 82 "levcomp.l" +#line 82 "levcomp.lpp" return PANDEMONIC; YY_BREAK case 24: YY_RULE_SETUP -#line 83 "levcomp.l" +#line 83 "levcomp.lpp" return NO_HMIRROR; YY_BREAK case 25: YY_RULE_SETUP -#line 84 "levcomp.l" +#line 84 "levcomp.lpp" return NO_VMIRROR; YY_BREAK case 26: YY_RULE_SETUP -#line 86 "levcomp.l" +#line 86 "levcomp.lpp" return ENCOMPASS; YY_BREAK case 27: YY_RULE_SETUP -#line 87 "levcomp.l" +#line 87 "levcomp.lpp" return NORTH; YY_BREAK case 28: YY_RULE_SETUP -#line 88 "levcomp.l" +#line 88 "levcomp.lpp" return SOUTH; YY_BREAK case 29: YY_RULE_SETUP -#line 89 "levcomp.l" +#line 89 "levcomp.lpp" return EAST; YY_BREAK case 30: YY_RULE_SETUP -#line 90 "levcomp.l" +#line 90 "levcomp.lpp" return WEST; YY_BREAK case 31: YY_RULE_SETUP -#line 91 "levcomp.l" +#line 91 "levcomp.lpp" return NORTHEAST; YY_BREAK case 32: YY_RULE_SETUP -#line 92 "levcomp.l" +#line 92 "levcomp.lpp" return NORTHWEST; YY_BREAK case 33: YY_RULE_SETUP -#line 93 "levcomp.l" +#line 93 "levcomp.lpp" return SOUTHEAST; YY_BREAK case 34: YY_RULE_SETUP -#line 94 "levcomp.l" +#line 94 "levcomp.lpp" return SOUTHWEST; YY_BREAK case 35: YY_RULE_SETUP -#line 95 "levcomp.l" +#line 95 "levcomp.lpp" return NORTH_DIS; YY_BREAK case 36: YY_RULE_SETUP -#line 97 "levcomp.l" +#line 97 "levcomp.lpp" return DASH; YY_BREAK case 37: YY_RULE_SETUP -#line 98 "levcomp.l" +#line 98 "levcomp.lpp" return COMMA; YY_BREAK case 38: YY_RULE_SETUP -#line 100 "levcomp.l" +#line 100 "levcomp.lpp" { yylval.i = atoi(yytext); return INTEGER; @@ -1580,7 +1567,7 @@ YY_RULE_SETUP YY_BREAK case 39: YY_RULE_SETUP -#line 105 "levcomp.l" +#line 105 "levcomp.lpp" { BEGIN(INITIAL); settext(); @@ -1589,25 +1576,25 @@ YY_RULE_SETUP YY_BREAK case 40: YY_RULE_SETUP -#line 111 "levcomp.l" +#line 111 "levcomp.lpp" { BEGIN(INITIAL); } YY_BREAK case 41: YY_RULE_SETUP -#line 113 "levcomp.l" +#line 113 "levcomp.lpp" ; YY_BREAK case 42: YY_RULE_SETUP -#line 115 "levcomp.l" +#line 115 "levcomp.lpp" return BAD_CHARACTER; YY_BREAK case 43: YY_RULE_SETUP -#line 117 "levcomp.l" +#line 117 "levcomp.lpp" ECHO; YY_BREAK -#line 1611 "lex.yy.c" +#line 1598 "levcomp.lex.cc" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(MAPDEF): case YY_STATE_EOF(ARGUMENT): @@ -2175,15 +2162,11 @@ YY_BUFFER_STATE b; } -#ifndef _WIN32 -#include <unistd.h> -#else #ifndef YY_ALWAYS_INTERACTIVE #ifndef YY_NEVER_INTERACTIVE extern int isatty YY_PROTO(( int )); #endif #endif -#endif #ifdef YY_USE_PROTOS void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) @@ -2501,7 +2484,7 @@ int main() return 0; } #endif -#line 117 "levcomp.l" +#line 117 "levcomp.lpp" int yywrap() diff --git a/crawl-ref/source/prebuilt/levcomp.tab.cc b/crawl-ref/source/prebuilt/levcomp.tab.cc new file mode 100644 index 0000000000..98a54f9f49 --- /dev/null +++ b/crawl-ref/source/prebuilt/levcomp.tab.cc @@ -0,0 +1,1201 @@ + +/* A Bison parser, made from levcomp.ypp + by GNU Bison version 1.28 */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define DEFAULT_DEPTH 257 +#define SYMBOL 258 +#define TAGS 259 +#define NAME 260 +#define DEPTH 261 +#define ORIENT 262 +#define PLACE 263 +#define CHANCE 264 +#define FLAGS 265 +#define MONS 266 +#define ENCOMPASS 267 +#define NORTH 268 +#define EAST 269 +#define SOUTH 270 +#define WEST 271 +#define NORTH_DIS 272 +#define NORTHEAST 273 +#define SOUTHEAST 274 +#define SOUTHWEST 275 +#define NORTHWEST 276 +#define BAD_CHARACTER 277 +#define NO_HMIRROR 278 +#define NO_VMIRROR 279 +#define PANDEMONIC 280 +#define DASH 281 +#define COMMA 282 +#define INTEGER 283 +#define STRING 284 +#define MAP_LINE 285 +#define MONSTER_NAME 286 + +#line 1 "levcomp.ypp" + + +#include "levcomp.h" + +int yylex(); + +extern int yylineno; + +void yyerror(const char *e) +{ + fprintf(stderr, "Error on line %d: %s\n", yylineno, e); + + // If an error occurs, delete the file we're supposed to be writing to + // so that life is easier for makefile writers. + if (outhandle && outfilename) { + fclose(outhandle); + outhandle = NULL; + } + + if (outfilename) { + unlink(outfilename); + outfilename = NULL; + } +} + + +#line 28 "levcomp.ypp" +typedef union +{ + int i; + const char *text; +} YYSTYPE; +#include <stdio.h> + +#ifndef __cplusplus +#ifndef __STDC__ +#define const +#endif +#endif + + + +#define YYFINAL 70 +#define YYFLAG -32768 +#define YYNTBASE 33 + +#define YYTRANSLATE(x) ((unsigned)(x) <= 286 ? yytranslate[x] : 60) + +static const char yytranslate[] = { 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32 +}; + +#if YYDEBUG != 0 +static const short yyprhs[] = { 0, + 0, 3, 4, 7, 9, 12, 13, 16, 21, 24, + 25, 28, 30, 32, 34, 36, 38, 40, 42, 44, + 47, 48, 51, 53, 56, 58, 61, 65, 67, 69, + 72, 74, 77, 81, 83, 86, 88, 91, 93, 95, + 97, 99, 101, 103, 105, 107, 109, 111, 114, 115, + 118, 120, 122, 124, 126, 129 +}; + +static const short yyrhs[] = { 34, + 37, 0, 0, 34, 35, 0, 36, 0, 3, 50, + 0, 0, 38, 37, 0, 39, 40, 57, 40, 0, + 6, 30, 0, 0, 41, 40, 0, 48, 0, 49, + 0, 51, 0, 52, 0, 54, 0, 45, 0, 44, + 0, 42, 0, 5, 43, 0, 0, 30, 43, 0, + 4, 0, 4, 30, 0, 12, 0, 12, 46, 0, + 47, 28, 46, 0, 47, 0, 32, 0, 9, 30, + 0, 7, 0, 7, 50, 0, 29, 27, 29, 0, + 29, 0, 10, 29, 0, 8, 0, 8, 53, 0, + 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, + 19, 0, 20, 0, 21, 0, 22, 0, 18, 0, + 11, 55, 0, 0, 56, 55, 0, 24, 0, 25, + 0, 58, 0, 59, 0, 59, 58, 0, 31, 0 +}; + +#endif + +#if YYDEBUG != 0 +static const short yyrline[] = { 0, + 54, 63, 64, 67, 70, 76, 77, 80, 100, 108, + 109, 112, 113, 114, 115, 116, 117, 118, 119, 122, + 125, 126, 134, 135, 141, 142, 145, 146, 149, 155, + 161, 162, 168, 173, 179, 185, 186, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 204, 207, 208, + 221, 222, 225, 228, 229, 232 +}; +#endif + + +#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) + +static const char * const yytname[] = { "$","error","$undefined.","DEFAULT_DEPTH", +"SYMBOL","TAGS","NAME","DEPTH","ORIENT","PLACE","CHANCE","FLAGS","MONS","ENCOMPASS", +"NORTH","EAST","SOUTH","WEST","NORTH_DIS","NORTHEAST","SOUTHEAST","SOUTHWEST", +"NORTHWEST","BAD_CHARACTER","NO_HMIRROR","NO_VMIRROR","PANDEMONIC","DASH","COMMA", +"INTEGER","STRING","MAP_LINE","MONSTER_NAME","file","defs","def","defdepth", +"levels","level","name","metalines","metaline","tags","tagstrings","symbol", +"mons","mnames","mname","place","depth","depth_range","chance","orientation", +"orient_name","flags","flagnames","flagname","map_def","map_lines","map_line", NULL +}; +#endif + +static const short yyr1[] = { 0, + 33, 34, 34, 35, 36, 37, 37, 38, 39, 40, + 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, + 43, 43, 44, 44, 45, 45, 46, 46, 47, 48, + 49, 49, 50, 50, 51, 52, 52, 53, 53, 53, + 53, 53, 53, 53, 53, 53, 53, 54, 55, 55, + 56, 56, 57, 58, 58, 59 +}; + +static const short yyr2[] = { 0, + 2, 0, 2, 1, 2, 0, 2, 4, 2, 0, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 2, 1, 2, 1, 2, 3, 1, 1, 2, + 1, 2, 3, 1, 2, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 2, + 1, 1, 1, 1, 2, 1 +}; + +static const short yydefact[] = { 2, + 6, 0, 0, 3, 4, 1, 6, 10, 34, 5, + 9, 7, 23, 21, 31, 36, 0, 0, 49, 25, + 0, 10, 19, 18, 17, 12, 13, 14, 15, 16, + 0, 24, 21, 20, 32, 38, 39, 40, 41, 42, + 47, 43, 44, 45, 46, 37, 30, 35, 51, 52, + 48, 49, 29, 26, 28, 56, 10, 53, 54, 11, + 33, 22, 50, 0, 8, 55, 27, 0, 0, 0 +}; + +static const short yydefgoto[] = { 68, + 1, 4, 5, 6, 7, 8, 21, 22, 23, 34, + 24, 25, 54, 55, 26, 27, 10, 28, 29, 46, + 30, 51, 52, 57, 58, 59 +}; + +static const short yypact[] = {-32768, + 17, -16, -6,-32768,-32768,-32768, 19, 7, -1,-32768, +-32768,-32768, -2, 0, -16, -12, 1, 3, -3, -5, + 2, 7,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 5,-32768, 0,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, -3,-32768,-32768, 8,-32768, 7,-32768, 2,-32768, +-32768,-32768,-32768, -5,-32768,-32768,-32768, 29, 37,-32768 +}; + +static const short yypgoto[] = {-32768, +-32768,-32768,-32768, 31,-32768,-32768, -22,-32768,-32768, 6, +-32768,-32768, -24,-32768,-32768,-32768, 26,-32768,-32768,-32768, +-32768, -10,-32768,-32768, -15,-32768 +}; + + +#define YYLAST 44 + + +static const short yytable[] = { 60, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 13, 14, 9, 15, 16, 17, 18, 19, 20, 2, + 49, 50, 3, 11, 3, 31, 53, 32, 69, 33, + 47, 48, 56, 61, 65, 64, 70, 12, 62, 67, + 35, 63, 0, 66 +}; + +static const short yycheck[] = { 22, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 4, 5, 29, 7, 8, 9, 10, 11, 12, 3, + 24, 25, 6, 30, 6, 27, 32, 30, 0, 30, + 30, 29, 31, 29, 57, 28, 0, 7, 33, 64, + 15, 52, -1, 59 +}; +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "/usr/share/bison.simple" +/* This file comes from bison-1.28. */ + +/* Skeleton output parser for bison, + Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +#ifndef YYSTACK_USE_ALLOCA +#ifdef alloca +#define YYSTACK_USE_ALLOCA +#else /* alloca not defined */ +#ifdef __GNUC__ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#else /* not GNU C. */ +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) +#define YYSTACK_USE_ALLOCA +#include <alloca.h> +#else /* not sparc */ +/* We think this test detects Watcom and Microsoft C. */ +/* This used to test MSDOS, but that is a bad idea + since that symbol is in the user namespace. */ +#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) +#if 0 /* No need for malloc.h, which pollutes the namespace; + instead, just don't use alloca. */ +#include <malloc.h> +#endif +#else /* not MSDOS, or __TURBOC__ */ +#if defined(_AIX) +/* I don't know what this was needed for, but it pollutes the namespace. + So I turned it off. rms, 2 May 1997. */ +/* #include <malloc.h> */ + #pragma alloca +#define YYSTACK_USE_ALLOCA +#else /* not MSDOS, or __TURBOC__, or _AIX */ +#if 0 +#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, + and on HPUX 10. Eventually we can turn this on. */ +#define YYSTACK_USE_ALLOCA +#define alloca __builtin_alloca +#endif /* __hpux */ +#endif +#endif /* not _AIX */ +#endif /* not MSDOS, or __TURBOC__ */ +#endif /* not sparc */ +#endif /* not GNU C */ +#endif /* alloca not defined */ +#endif /* YYSTACK_USE_ALLOCA not defined */ + +#ifdef YYSTACK_USE_ALLOCA +#define YYSTACK_ALLOC alloca +#else +#define YYSTACK_ALLOC malloc +#endif + +/* Note: there must be only one dollar sign in this file. + It is replaced by the list of actions, each action + as one case of the switch. */ + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. + This remains here temporarily to ease the + transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(token, value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { yychar = (token), yylval = (value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { yyerror ("syntax error: cannot back up"); YYERROR; } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + +#ifndef YYPURE +#define YYLEX yylex() +#endif + +#ifdef YYPURE +#ifdef YYLSP_NEEDED +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval, &yylloc) +#endif +#else /* not YYLSP_NEEDED */ +#ifdef YYLEX_PARAM +#define YYLEX yylex(&yylval, YYLEX_PARAM) +#else +#define YYLEX yylex(&yylval) +#endif +#endif /* not YYLSP_NEEDED */ +#endif + +/* If nonreentrant, generate the variables here */ + +#ifndef YYPURE + +int yychar; /* the lookahead symbol */ +YYSTYPE yylval; /* the semantic value of the */ + /* lookahead symbol */ + +#ifdef YYLSP_NEEDED +YYLTYPE yylloc; /* location data for the lookahead */ + /* symbol */ +#endif + +int yynerrs; /* number of parse errors so far */ +#endif /* not YYPURE */ + +#if YYDEBUG != 0 +int yydebug; /* nonzero means print parse trace */ +/* Since this is uninitialized, it does not stop multiple parsers + from coexisting. */ +#endif + +/* YYINITDEPTH indicates the initial size of the parser's stacks */ + +#ifndef YYINITDEPTH +#define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH is the maximum size the stacks can grow to + (effective only if the built-in stack extension method is used). */ + +#if YYMAXDEPTH == 0 +#undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +#define YYMAXDEPTH 10000 +#endif + +/* Define __yy_memcpy. Note that the size argument + should be passed with type unsigned int, because that is what the non-GCC + definitions require. With GCC, __builtin_memcpy takes an arg + of type size_t, but it can handle unsigned int. */ + +#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) +#else /* not GNU C or C++ */ +#ifndef __cplusplus + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (to, from, count) + char *to; + char *from; + unsigned int count; +{ + register char *f = from; + register char *t = to; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#else /* __cplusplus */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +__yy_memcpy (char *to, char *from, unsigned int count) +{ + register char *t = to; + register char *f = from; + register int i = count; + + while (i-- > 0) + *t++ = *f++; +} + +#endif +#endif + +#line 217 "/usr/share/bison.simple" + +/* The user can define YYPARSE_PARAM as the name of an argument to be passed + into yyparse. The argument should have type void *. + It should actually point to an object. + Grammar actions can access the variable by casting it + to the proper pointer type. */ + +#ifdef YYPARSE_PARAM +#ifdef __cplusplus +#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +#define YYPARSE_PARAM_DECL +#else /* not __cplusplus */ +#define YYPARSE_PARAM_ARG YYPARSE_PARAM +#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +#endif /* not __cplusplus */ +#else /* not YYPARSE_PARAM */ +#define YYPARSE_PARAM_ARG +#define YYPARSE_PARAM_DECL +#endif /* not YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +#ifdef YYPARSE_PARAM +int yyparse (void *); +#else +int yyparse (void); +#endif +#endif + +int +yyparse(YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + register int yystate; + register int yyn; + register short *yyssp; + register YYSTYPE *yyvsp; + int yyerrstatus; /* number of tokens to shift before error messages enabled */ + int yychar1 = 0; /* lookahead token as an internal (translated) token number */ + + short yyssa[YYINITDEPTH]; /* the state stack */ + YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ + + short *yyss = yyssa; /* refer to the stacks thru separate pointers */ + YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ + +#ifdef YYLSP_NEEDED + YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +#define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + int yystacksize = YYINITDEPTH; + int yyfree_stacks = 0; + +#ifdef YYPURE + int yychar; + YYSTYPE yylval; + int yynerrs; +#ifdef YYLSP_NEEDED + YYLTYPE yylloc; +#endif +#endif + + YYSTYPE yyval; /* the variable used to return */ + /* semantic values from the action */ + /* routines */ + + int yylen; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Starting parse\n"); +#endif + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss - 1; + yyvsp = yyvs; +#ifdef YYLSP_NEEDED + yylsp = yyls; +#endif + +/* Push a new state, which is found in yystate . */ +/* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. */ +yynewstate: + + *++yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Give user a chance to reallocate the stack */ + /* Use copies of these so that the &'s don't force the real ones into memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; +#ifdef YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; +#endif + + /* Get the current used size of the three stacks, in elements. */ + int size = yyssp - yyss + 1; + +#ifdef yyoverflow + /* Each stack pointer address is followed by the size of + the data in use in that stack, in bytes. */ +#ifdef YYLSP_NEEDED + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yyls1, size * sizeof (*yylsp), + &yystacksize); +#else + yyoverflow("parser stack overflow", + &yyss1, size * sizeof (*yyssp), + &yyvs1, size * sizeof (*yyvsp), + &yystacksize); +#endif + + yyss = yyss1; yyvs = yyvs1; +#ifdef YYLSP_NEEDED + yyls = yyls1; +#endif +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + { + yyerror("parser stack overflow"); + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 2; + } + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; +#ifndef YYSTACK_USE_ALLOCA + yyfree_stacks = 1; +#endif + yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, + size * (unsigned int) sizeof (*yyssp)); + yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, + size * (unsigned int) sizeof (*yyvsp)); +#ifdef YYLSP_NEEDED + yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, + size * (unsigned int) sizeof (*yylsp)); +#endif +#endif /* no yyoverflow */ + + yyssp = yyss + size - 1; + yyvsp = yyvs + size - 1; +#ifdef YYLSP_NEEDED + yylsp = yyls + size - 1; +#endif + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Stack size increased to %d\n", yystacksize); +#endif + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Entering state %d\n", yystate); +#endif + + goto yybackup; + yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Reading a token: "); +#endif + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Now at end of input.\n"); +#endif + } + else + { + yychar1 = YYTRANSLATE(yychar); + +#if YYDEBUG != 0 + if (yydebug) + { + fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise meaning + of a token, for further debugging info. */ +#ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +#endif + fprintf (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); +#endif + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* count tokens shifted since error; after three, turn off error status. */ + if (yyerrstatus) yyerrstatus--; + + yystate = yyn; + goto yynewstate; + +/* Do the default action for the current state. */ +yydefault: + + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + +/* Do a reduction. yyn is the number of a rule to reduce with. */ +yyreduce: + yylen = yyr2[yyn]; + if (yylen > 0) + yyval = yyvsp[1-yylen]; /* implement default value of the action */ + +#if YYDEBUG != 0 + if (yydebug) + { + int i; + + fprintf (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) + fprintf (stderr, "%s ", yytname[yyrhs[i]]); + fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + + switch (yyn) { + +case 1: +#line 55 "levcomp.ypp" +{ + if (outhandle && outfilename) { + fclose(outhandle); + outhandle = NULL; + } + ; + break;} +case 5: +#line 71 "levcomp.ypp" +{ + default_depth = range; + ; + break;} +case 8: +#line 81 "levcomp.ypp" +{ + if (!outhandle) { + if (outfilename) { + if (!(outhandle = + fopen(outfilename, + write_append? "a" :"w"))) + outfilename = NULL; + } + if (!outhandle) + outhandle = stdout; + } + if (!autowarned) { + fprintf(outhandle, "%s", autogenheader); + autowarned = true; + } + fprintf(outhandle, "%s", map.get_initialiser().c_str()); + ; + break;} +case 9: +#line 101 "levcomp.ypp" +{ + map.init(); + map.depth = default_depth; + map.name = yyvsp[0].text; + ; + break;} +case 20: +#line 122 "levcomp.ypp" +{; + break;} +case 22: +#line 127 "levcomp.ypp" +{ + map.tags += " "; + map.tags += yyvsp[-1].text; + map.tags += " "; + ; + break;} +case 23: +#line 134 "levcomp.ypp" +{; + break;} +case 24: +#line 136 "levcomp.ypp" +{ + map.random_symbols = yyvsp[0].text; + ; + break;} +case 25: +#line 141 "levcomp.ypp" +{; + break;} +case 26: +#line 142 "levcomp.ypp" +{; + break;} +case 29: +#line 150 "levcomp.ypp" +{ + map.mons.add_mons(yyvsp[0].text); + ; + break;} +case 30: +#line 156 "levcomp.ypp" +{ + map.place = yyvsp[0].text; + ; + break;} +case 31: +#line 161 "levcomp.ypp" +{; + break;} +case 32: +#line 163 "levcomp.ypp" +{ + map.depth = range; + ; + break;} +case 33: +#line 169 "levcomp.ypp" +{ + range.set(yyvsp[-2].i, yyvsp[0].i); + ; + break;} +case 34: +#line 174 "levcomp.ypp" +{ + range.set(yyvsp[0].i); + ; + break;} +case 35: +#line 180 "levcomp.ypp" +{ + map.chance = yyvsp[0].i; + ; + break;} +case 36: +#line 185 "levcomp.ypp" +{; + break;} +case 37: +#line 187 "levcomp.ypp" +{ + map.orient = (map_section_type) yyvsp[0].i; + ; + break;} +case 38: +#line 192 "levcomp.ypp" +{ yyval.i = MAP_ENCOMPASS; ; + break;} +case 39: +#line 193 "levcomp.ypp" +{ yyval.i = MAP_NORTH; ; + break;} +case 40: +#line 194 "levcomp.ypp" +{ yyval.i = MAP_EAST; ; + break;} +case 41: +#line 195 "levcomp.ypp" +{ yyval.i = MAP_SOUTH; ; + break;} +case 42: +#line 196 "levcomp.ypp" +{ yyval.i = MAP_WEST; ; + break;} +case 43: +#line 197 "levcomp.ypp" +{ yyval.i = MAP_NORTHEAST; ; + break;} +case 44: +#line 198 "levcomp.ypp" +{ yyval.i = MAP_SOUTHEAST; ; + break;} +case 45: +#line 199 "levcomp.ypp" +{ yyval.i = MAP_SOUTHWEST; ; + break;} +case 46: +#line 200 "levcomp.ypp" +{ yyval.i = MAP_NORTHWEST; ; + break;} +case 47: +#line 201 "levcomp.ypp" +{ yyval.i = MAP_NORTH_DIS; ; + break;} +case 48: +#line 204 "levcomp.ypp" +{; + break;} +case 50: +#line 209 "levcomp.ypp" +{ + switch (yyvsp[-1].i) { + case NO_HMIRROR: + map.flags &= ~MAPF_MIRROR_HORIZONTAL; + break; + case NO_VMIRROR: + map.flags &= ~MAPF_MIRROR_VERTICAL; + break; + } + ; + break;} +case 51: +#line 221 "levcomp.ypp" +{ yyval.i = NO_HMIRROR; ; + break;} +case 52: +#line 222 "levcomp.ypp" +{ yyval.i = NO_VMIRROR; ; + break;} +case 56: +#line 233 "levcomp.ypp" +{ + map.map.add_line(yyvsp[0].text); + ; + break;} +} + /* the action file gets copied in in place of this dollarsign */ +#line 543 "/usr/share/bison.simple" + + yyvsp -= yylen; + yyssp -= yylen; +#ifdef YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; + +#ifdef YYLSP_NEEDED + yylsp++; + if (yylen == 0) + { + yylsp->first_line = yylloc.first_line; + yylsp->first_column = yylloc.first_column; + yylsp->last_line = (yylsp-1)->last_line; + yylsp->last_column = (yylsp-1)->last_column; + yylsp->text = 0; + } + else + { + yylsp->last_line = (yylsp+yylen-1)->last_line; + yylsp->last_column = (yylsp+yylen-1)->last_column; + } +#endif + + /* Now "shift" the result of the reduction. + Determine what state that goes to, + based on the state we popped back to + and the rule number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + +yyerrlab: /* here on detecting error */ + + if (! yyerrstatus) + /* If not already recovering from an error, report this error. */ + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + int size = 0; + char *msg; + int x, count; + + count = 0; + /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + size += strlen(yytname[x]) + 15, count++; + msg = (char *) malloc(size + 15); + if (msg != 0) + { + strcpy(msg, "parse error"); + + if (count < 5) + { + count = 0; + for (x = (yyn < 0 ? -yyn : 0); + x < (sizeof(yytname) / sizeof(char *)); x++) + if (yycheck[x + yyn] == x) + { + strcat(msg, count == 0 ? ", expecting `" : " or `"); + strcat(msg, yytname[x]); + strcat(msg, "'"); + count++; + } + } + yyerror(msg); + free(msg); + } + else + yyerror ("parse error; also virtual memory exceeded"); + } + else +#endif /* YYERROR_VERBOSE */ + yyerror("parse error"); + } + + goto yyerrlab1; +yyerrlab1: /* here on error raised explicitly by an action */ + + if (yyerrstatus == 3) + { + /* if just tried and failed to reuse lookahead token after an error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); +#endif + + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token + after shifting the error token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + +yyerrdefault: /* current state does not do anything special for the error token. */ + +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ + if (yyn) goto yydefault; +#endif + +yyerrpop: /* pop the current state because it cannot handle the error token */ + + if (yyssp == yyss) YYABORT; + yyvsp--; + yystate = *--yyssp; +#ifdef YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG != 0 + if (yydebug) + { + short *ssp1 = yyss - 1; + fprintf (stderr, "Error: state stack now"); + while (ssp1 != yyssp) + fprintf (stderr, " %d", *++ssp1); + fprintf (stderr, "\n"); + } +#endif + +yyerrhandle: + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + +#if YYDEBUG != 0 + if (yydebug) + fprintf(stderr, "Shifting error token, "); +#endif + + *++yyvsp = yylval; +#ifdef YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + yyacceptlab: + /* YYACCEPT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 0; + + yyabortlab: + /* YYABORT comes here. */ + if (yyfree_stacks) + { + free (yyss); + free (yyvs); +#ifdef YYLSP_NEEDED + free (yyls); +#endif + } + return 1; +} +#line 238 "levcomp.ypp" + diff --git a/crawl-ref/source/prebuilt/levcomp.tab.h b/crawl-ref/source/prebuilt/levcomp.tab.h new file mode 100644 index 0000000000..f8c309fa75 --- /dev/null +++ b/crawl-ref/source/prebuilt/levcomp.tab.h @@ -0,0 +1,38 @@ +typedef union +{ + int i; + const char *text; +} YYSTYPE; +#define DEFAULT_DEPTH 257 +#define SYMBOL 258 +#define TAGS 259 +#define NAME 260 +#define DEPTH 261 +#define ORIENT 262 +#define PLACE 263 +#define CHANCE 264 +#define FLAGS 265 +#define MONS 266 +#define ENCOMPASS 267 +#define NORTH 268 +#define EAST 269 +#define SOUTH 270 +#define WEST 271 +#define NORTH_DIS 272 +#define NORTHEAST 273 +#define SOUTHEAST 274 +#define SOUTHWEST 275 +#define NORTHWEST 276 +#define BAD_CHARACTER 277 +#define NO_HMIRROR 278 +#define NO_VMIRROR 279 +#define PANDEMONIC 280 +#define DASH 281 +#define COMMA 282 +#define INTEGER 283 +#define STRING 284 +#define MAP_LINE 285 +#define MONSTER_NAME 286 + + +extern YYSTYPE yylval; diff --git a/crawl-ref/source/prebuilt/levcomp_yacc.cc b/crawl-ref/source/prebuilt/levcomp_yacc.cc deleted file mode 100644 index 1ec6b01be2..0000000000 --- a/crawl-ref/source/prebuilt/levcomp_yacc.cc +++ /dev/null @@ -1,1943 +0,0 @@ -/* A Bison parser, made by GNU Bison 2.3. */ - -/* Skeleton implementation for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "2.3" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Using locations. */ -#define YYLSP_NEEDED 0 - - - -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - DEFAULT_DEPTH = 258, - SYMBOL = 259, - TAGS = 260, - NAME = 261, - DEPTH = 262, - ORIENT = 263, - PLACE = 264, - CHANCE = 265, - FLAGS = 266, - MONS = 267, - ENCOMPASS = 268, - NORTH = 269, - EAST = 270, - SOUTH = 271, - WEST = 272, - NORTH_DIS = 273, - NORTHEAST = 274, - SOUTHEAST = 275, - SOUTHWEST = 276, - NORTHWEST = 277, - BAD_CHARACTER = 278, - NO_HMIRROR = 279, - NO_VMIRROR = 280, - PANDEMONIC = 281, - DASH = 282, - COMMA = 283, - INTEGER = 284, - STRING = 285, - MAP_LINE = 286, - MONSTER_NAME = 287 - }; -#endif -/* Tokens. */ -#define DEFAULT_DEPTH 258 -#define SYMBOL 259 -#define TAGS 260 -#define NAME 261 -#define DEPTH 262 -#define ORIENT 263 -#define PLACE 264 -#define CHANCE 265 -#define FLAGS 266 -#define MONS 267 -#define ENCOMPASS 268 -#define NORTH 269 -#define EAST 270 -#define SOUTH 271 -#define WEST 272 -#define NORTH_DIS 273 -#define NORTHEAST 274 -#define SOUTHEAST 275 -#define SOUTHWEST 276 -#define NORTHWEST 277 -#define BAD_CHARACTER 278 -#define NO_HMIRROR 279 -#define NO_VMIRROR 280 -#define PANDEMONIC 281 -#define DASH 282 -#define COMMA 283 -#define INTEGER 284 -#define STRING 285 -#define MAP_LINE 286 -#define MONSTER_NAME 287 - - - - -/* Copy the first part of user declarations. */ -#line 1 "levcomp.y" - - -#include <cstdio> -#include <string> -#include <vector> -#include "mapdef.h" - -// [dshaligram] It may be better to build the web of conditional #ifdefs to -// figure out which header this is in by platform... -extern "C" { - extern int unlink(const char *); -} - -int yylex(); - -extern int yylineno; - -static map_def map; -static level_range range; -static level_range default_depth; - -static const char *autogenheader = - "/*************************************************************\n" - " * WARNING: This file is automatically generated! Do not edit.\n" - " *************************************************************/\n"; - -static const char *outfilename = NULL; -static FILE *outhandle = NULL; -static bool autowarned = false; - -static bool write_append = false; - - -void yyerror(const char *e) -{ - fprintf(stderr, "Error on line %d: %s\n", yylineno, e); - - // If an error occurs, delete the file we're supposed to be writing to - // so that life is easier for makefile writers. - if (outhandle && outfilename) { - fclose(outhandle); - outhandle = NULL; - } - - if (outfilename) { - unlink(outfilename); - outfilename = NULL; - } -} - - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 54 "levcomp.y" -{ - int i; - const char *text; -} -/* Line 193 of yacc.c. */ -#line 217 "y.tab.c" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 -#endif - - - -/* Copy the second part of user declarations. */ - - -/* Line 216 of yacc.c. */ -#line 230 "y.tab.c" - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; -#else -typedef short int yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if YYENABLE_NLS -# if ENABLE_NLS -# include <libintl.h> /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) -#else -# define YYUSE(e) /* empty */ -#endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) -#else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; -#endif -{ - return i; -} -#endif - -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include <alloca.h> /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include <malloc.h> /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined _STDLIB_H \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss; - YYSTYPE yyvs; - }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 3 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 42 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 33 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 28 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 57 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 70 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 287 - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32 -}; - -#if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint8 yyprhs[] = -{ - 0, 0, 3, 6, 7, 10, 12, 15, 16, 19, - 24, 27, 28, 31, 33, 35, 37, 39, 41, 43, - 45, 47, 50, 51, 54, 56, 59, 61, 64, 68, - 70, 72, 75, 77, 80, 84, 86, 89, 91, 94, - 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, - 117, 118, 121, 123, 125, 127, 129, 132 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = -{ - 34, 0, -1, 35, 38, -1, -1, 35, 36, -1, - 37, -1, 3, 51, -1, -1, 39, 38, -1, 40, - 41, 58, 41, -1, 6, 30, -1, -1, 42, 41, - -1, 49, -1, 50, -1, 52, -1, 53, -1, 55, - -1, 46, -1, 45, -1, 43, -1, 5, 44, -1, - -1, 30, 44, -1, 4, -1, 4, 30, -1, 12, - -1, 12, 47, -1, 48, 28, 47, -1, 48, -1, - 32, -1, 9, 30, -1, 7, -1, 7, 51, -1, - 29, 27, 29, -1, 29, -1, 10, 29, -1, 8, - -1, 8, 54, -1, 13, -1, 14, -1, 15, -1, - 16, -1, 17, -1, 19, -1, 20, -1, 21, -1, - 22, -1, 18, -1, 11, 56, -1, -1, 57, 56, - -1, 24, -1, 25, -1, 59, -1, 60, -1, 60, - 59, -1, 31, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 79, 79, 88, 89, 92, 95, 101, 102, 105, - 125, 133, 134, 137, 138, 139, 140, 141, 142, 143, - 144, 147, 150, 151, 159, 160, 166, 167, 170, 171, - 174, 180, 186, 187, 193, 198, 204, 210, 211, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 229, - 232, 233, 246, 247, 250, 253, 254, 257 -}; -#endif - -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "DEFAULT_DEPTH", "SYMBOL", "TAGS", - "NAME", "DEPTH", "ORIENT", "PLACE", "CHANCE", "FLAGS", "MONS", - "ENCOMPASS", "NORTH", "EAST", "SOUTH", "WEST", "NORTH_DIS", "NORTHEAST", - "SOUTHEAST", "SOUTHWEST", "NORTHWEST", "BAD_CHARACTER", "NO_HMIRROR", - "NO_VMIRROR", "PANDEMONIC", "DASH", "COMMA", "INTEGER", "STRING", - "MAP_LINE", "MONSTER_NAME", "$accept", "file", "defs", "def", "defdepth", - "levels", "level", "name", "metalines", "metaline", "tags", "tagstrings", - "symbol", "mons", "mnames", "mname", "place", "depth", "depth_range", - "chance", "orientation", "orient_name", "flags", "flagnames", "flagname", - "map_def", "map_lines", "map_line", 0 -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287 -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = -{ - 0, 33, 34, 35, 35, 36, 37, 38, 38, 39, - 40, 41, 41, 42, 42, 42, 42, 42, 42, 42, - 42, 43, 44, 44, 45, 45, 46, 46, 47, 47, - 48, 49, 50, 50, 51, 51, 52, 53, 53, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, - 56, 56, 57, 57, 58, 59, 59, 60 -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 2, 0, 2, 1, 2, 0, 2, 4, - 2, 0, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 2, 1, 2, 1, 2, 3, 1, - 1, 2, 1, 2, 3, 1, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 0, 2, 1, 1, 1, 1, 2, 1 -}; - -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const yytype_uint8 yydefact[] = -{ - 3, 0, 7, 1, 0, 0, 4, 5, 2, 7, - 11, 35, 6, 10, 8, 24, 22, 32, 37, 0, - 0, 50, 26, 0, 11, 20, 19, 18, 13, 14, - 15, 16, 17, 0, 25, 22, 21, 33, 39, 40, - 41, 42, 43, 48, 44, 45, 46, 47, 38, 31, - 36, 52, 53, 49, 50, 30, 27, 29, 57, 11, - 54, 55, 12, 34, 23, 51, 0, 9, 56, 28 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - -1, 1, 2, 6, 7, 8, 9, 10, 23, 24, - 25, 36, 26, 27, 56, 57, 28, 29, 12, 30, - 31, 48, 32, 53, 54, 59, 60, 61 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -29 -static const yytype_int8 yypact[] = -{ - -29, 13, 17, -29, -5, -4, -29, -29, -29, 19, - 7, 0, -29, -29, -29, -2, -1, -5, -12, 1, - 3, -3, 2, 5, 7, -29, -29, -29, -29, -29, - -29, -29, -29, 4, -29, -1, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -3, -29, -29, 9, -29, 7, - -29, 5, -29, -29, -29, -29, 2, -29, -29, -29 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = -{ - -29, -29, -29, -29, -29, 21, -29, -29, -24, -29, - -29, 6, -29, -29, -28, -29, -29, -29, 22, -29, - -29, -29, -29, -14, -29, -29, -19, -29 -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 -static const yytype_uint8 yytable[] = -{ - 62, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 15, 16, 3, 17, 18, 19, 20, 21, 22, - 4, 51, 52, 5, 11, 5, 13, 33, 34, 35, - 14, 49, 50, 63, 55, 67, 58, 66, 69, 37, - 65, 64, 68 -}; - -static const yytype_uint8 yycheck[] = -{ - 24, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 4, 5, 0, 7, 8, 9, 10, 11, 12, - 3, 24, 25, 6, 29, 6, 30, 27, 30, 30, - 9, 30, 29, 29, 32, 59, 31, 28, 66, 17, - 54, 35, 61 -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = -{ - 0, 34, 35, 0, 3, 6, 36, 37, 38, 39, - 40, 29, 51, 30, 38, 4, 5, 7, 8, 9, - 10, 11, 12, 41, 42, 43, 45, 46, 49, 50, - 52, 53, 55, 27, 30, 30, 44, 51, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 54, 30, - 29, 24, 25, 56, 57, 32, 47, 48, 31, 58, - 59, 60, 41, 29, 44, 56, 28, 41, 59, 47 -}; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ - -#define YYFAIL goto yyerrlab - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - - -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif - - -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef YY_LOCATION_PRINT -# if YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif -{ - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); -# endif - switch (yytype) - { - default: - break; - } -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif -{ - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) -#else -static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; -#endif -{ - YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif -{ - int yynrhs = yyr2[yyrule]; - int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - fprintf (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - fprintf (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static YYSIZE_T -yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static char * -yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; - - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else - { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } - - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - - if (yysize_overflow) - return YYSIZE_MAXIMUM; - - if (yyresult) - { - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - char *yyp = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; - } -} -#endif /* YYERROR_VERBOSE */ - - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif -{ - YYUSE (yyvaluep); - - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { - - default: - break; - } -} - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The look-ahead symbol. */ -int yychar; - -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; - - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void) -#else -int -yyparse () - -#endif -#endif -{ - - int yystate; - int yyn; - int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; - - - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss; - yyvsp = yyvs; - - goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to look-ahead token. */ - yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) - goto yydefault; - - /* Not known => get a look-ahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - if (yyn == YYFINAL) - YYACCEPT; - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - yystate = yyn; - *++yyvsp = yylval; - - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 2: -#line 80 "levcomp.y" - { - if (outhandle && outfilename) { - fclose(outhandle); - outhandle = NULL; - } - } - break; - - case 6: -#line 96 "levcomp.y" - { - default_depth = range; - } - break; - - case 9: -#line 106 "levcomp.y" - { - if (!outhandle) { - if (outfilename) { - if (!(outhandle = - fopen(outfilename, - write_append? "a" :"w"))) - outfilename = NULL; - } - if (!outhandle) - outhandle = stdout; - } - if (!autowarned) { - fprintf(outhandle, "%s", autogenheader); - autowarned = true; - } - fprintf(outhandle, "%s", map.get_initialiser().c_str()); - } - break; - - case 10: -#line 126 "levcomp.y" - { - map.init(); - map.depth = default_depth; - map.name = (yyvsp[(2) - (2)].text); - } - break; - - case 21: -#line 147 "levcomp.y" - {} - break; - - case 23: -#line 152 "levcomp.y" - { - map.tags += " "; - map.tags += (yyvsp[(1) - (2)].text); - map.tags += " "; - } - break; - - case 24: -#line 159 "levcomp.y" - {} - break; - - case 25: -#line 161 "levcomp.y" - { - map.random_symbols = (yyvsp[(2) - (2)].text); - } - break; - - case 26: -#line 166 "levcomp.y" - {} - break; - - case 27: -#line 167 "levcomp.y" - {} - break; - - case 30: -#line 175 "levcomp.y" - { - map.mons.add_mons((yyvsp[(1) - (1)].text)); - } - break; - - case 31: -#line 181 "levcomp.y" - { - map.place = (yyvsp[(2) - (2)].text); - } - break; - - case 32: -#line 186 "levcomp.y" - {} - break; - - case 33: -#line 188 "levcomp.y" - { - map.depth = range; - } - break; - - case 34: -#line 194 "levcomp.y" - { - range.set((yyvsp[(1) - (3)].i), (yyvsp[(3) - (3)].i)); - } - break; - - case 35: -#line 199 "levcomp.y" - { - range.set((yyvsp[(1) - (1)].i)); - } - break; - - case 36: -#line 205 "levcomp.y" - { - map.chance = (yyvsp[(2) - (2)].i); - } - break; - - case 37: -#line 210 "levcomp.y" - {} - break; - - case 38: -#line 212 "levcomp.y" - { - map.orient = (map_section_type) (yyvsp[(2) - (2)].i); - } - break; - - case 39: -#line 217 "levcomp.y" - { (yyval.i) = MAP_ENCOMPASS; } - break; - - case 40: -#line 218 "levcomp.y" - { (yyval.i) = MAP_NORTH; } - break; - - case 41: -#line 219 "levcomp.y" - { (yyval.i) = MAP_EAST; } - break; - - case 42: -#line 220 "levcomp.y" - { (yyval.i) = MAP_SOUTH; } - break; - - case 43: -#line 221 "levcomp.y" - { (yyval.i) = MAP_WEST; } - break; - - case 44: -#line 222 "levcomp.y" - { (yyval.i) = MAP_NORTHEAST; } - break; - - case 45: -#line 223 "levcomp.y" - { (yyval.i) = MAP_SOUTHEAST; } - break; - - case 46: -#line 224 "levcomp.y" - { (yyval.i) = MAP_SOUTHWEST; } - break; - - case 47: -#line 225 "levcomp.y" - { (yyval.i) = MAP_NORTHWEST; } - break; - - case 48: -#line 226 "levcomp.y" - { (yyval.i) = MAP_NORTH_DIS; } - break; - - case 49: -#line 229 "levcomp.y" - {} - break; - - case 51: -#line 234 "levcomp.y" - { - switch ((yyvsp[(1) - (2)].i)) { - case NO_HMIRROR: - map.flags &= ~MAPF_MIRROR_HORIZONTAL; - break; - case NO_VMIRROR: - map.flags &= ~MAPF_MIRROR_VERTICAL; - break; - } - } - break; - - case 52: -#line 246 "levcomp.y" - { (yyval.i) = NO_HMIRROR; } - break; - - case 53: -#line 247 "levcomp.y" - { (yyval.i) = NO_VMIRROR; } - break; - - case 57: -#line 258 "levcomp.y" - { - map.map.add_line((yyvsp[(1) - (1)].text)); - } - break; - - -/* Line 1267 of yacc.c. */ -#line 1714 "y.tab.c" - default: break; - } - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); -#else - { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } - } -#endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse look-ahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - if (yyn == YYFINAL) - YYACCEPT; - - *++yyvsp = yylval; - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#ifndef yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); -} - - -#line 263 "levcomp.y" - - -int main(int argc, char **argv) { - for (int i = 1; i < argc; ++i) { - if (argv[i][0] == '-') { - if (argv[i][1] == 'a') - { - write_append = true; - } - } - else - outfilename = argv[i]; - } - return yyparse(); -} - diff --git a/crawl-ref/source/randart.cc b/crawl-ref/source/randart.cc index 0f09f8ec39..2aa804e957 100644 --- a/crawl-ref/source/randart.cc +++ b/crawl-ref/source/randart.cc @@ -610,7 +610,7 @@ const char *rand_armour_names[] = { not randart.h because they're only used in this code module. */ -#if defined(__IBMCPP__) || defined(__BCPLUSPLUS__) +#if defined(__IBMCPP__) #define PACKED #else #ifndef PACKED diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc index 789451f3a2..f671197067 100644 --- a/crawl-ref/source/tags.cc +++ b/crawl-ref/source/tags.cc @@ -65,18 +65,6 @@ #include <unistd.h> #endif -#ifdef USE_EMX -#include <sys/types.h> -#include <fcntl.h> -#include <unistd.h> -#endif - -#ifdef OS9 -#include <stat.h> -#else -#include <sys/stat.h> -#endif - #include "AppHdr.h" #include "abl-show.h" diff --git a/crawl-ref/source/util/levcomp.cc b/crawl-ref/source/util/levcomp.cc new file mode 100644 index 0000000000..6550f8b503 --- /dev/null +++ b/crawl-ref/source/util/levcomp.cc @@ -0,0 +1,33 @@ +#include <cstdio> +#include <string> +#include "levcomp.h" + +map_def map; +level_range range; +level_range default_depth; + +const char *autogenheader = + "/*************************************************************\n" + " * WARNING: This file is automatically generated! Do not edit.\n" + " *************************************************************/\n"; + +const char *outfilename = NULL; +FILE *outhandle = NULL; +bool autowarned = false; +bool write_append = false; + +extern int yyparse(); + +int main(int argc, char **argv) { + for (int i = 1; i < argc; ++i) { + if (argv[i][0] == '-') { + if (argv[i][1] == 'a') + { + write_append = true; + } + } + else + outfilename = argv[i]; + } + return yyparse(); +} diff --git a/crawl-ref/source/util/levcomp.h b/crawl-ref/source/util/levcomp.h new file mode 100644 index 0000000000..e7d1a46f52 --- /dev/null +++ b/crawl-ref/source/util/levcomp.h @@ -0,0 +1,19 @@ +#include <cstdio> +#include <string> +#include <vector> +#include "mapdef.h" + +// [dshaligram] It may be better to build the web of conditional #ifdefs to +// figure out which header this is in by platform... +extern "C" { + extern int unlink(const char *); +} + +extern map_def map; +extern level_range range; +extern level_range default_depth; +extern const char *autogenheader; +extern const char *outfilename; +extern FILE *outhandle; +extern bool autowarned; +extern bool write_append; diff --git a/crawl-ref/source/util/levcomp.l b/crawl-ref/source/util/levcomp.lpp index a59fa7026c..e50372fd36 100644 --- a/crawl-ref/source/util/levcomp.l +++ b/crawl-ref/source/util/levcomp.lpp @@ -5,7 +5,7 @@ // // Based loosely on NetHack's lev_comp.l -#include "levcomp.h" +#include "levcomp.tab.h" #include <cstring> static bool alloced = false; diff --git a/crawl-ref/source/util/levcomp.y b/crawl-ref/source/util/levcomp.ypp index 78a3ff1509..94bc916f38 100644 --- a/crawl-ref/source/util/levcomp.y +++ b/crawl-ref/source/util/levcomp.ypp @@ -1,36 +1,11 @@ %{ -#include <cstdio> -#include <string> -#include <vector> -#include "mapdef.h" - -// [dshaligram] It may be better to build the web of conditional #ifdefs to -// figure out which header this is in by platform... -extern "C" { - extern int unlink(const char *); -} +#include "levcomp.h" int yylex(); extern int yylineno; -static map_def map; -static level_range range; -static level_range default_depth; - -static const char *autogenheader = - "/*************************************************************\n" - " * WARNING: This file is automatically generated! Do not edit.\n" - " *************************************************************/\n"; - -static const char *outfilename = NULL; -static FILE *outhandle = NULL; -static bool autowarned = false; - -static bool write_append = false; - - void yyerror(const char *e) { fprintf(stderr, "Error on line %d: %s\n", yylineno, e); @@ -261,17 +236,3 @@ map_line : MAP_LINE ; %% - -int main(int argc, char **argv) { - for (int i = 1; i < argc; ++i) { - if (argv[i][0] == '-') { - if (argv[i][1] == 'a') - { - write_append = true; - } - } - else - outfilename = argv[i]; - } - return yyparse(); -} |