#ifndef PCCTS_CONFIG_H #define PCCTS_CONFIG_H /* * pcctscfg.h (formerly config.h) (for ANTLR, DLG, and SORCERER) * * This is a simple configuration file that doesn't have config stuff * in it, but it's a start. * * SOFTWARE RIGHTS * * We reserve no LEGAL rights to the Purdue Compiler Construction Tool * Set (PCCTS) -- PCCTS is in the public domain. An individual or * company may do whatever they wish with source code distributed with * PCCTS or the code generated by PCCTS, including the incorporation of * PCCTS, or its output, into commerical software. * * We encourage users to develop software with PCCTS. However, we do ask * that credit is given to us for developing PCCTS. By "credit", * we mean that if you incorporate our source code into one of your * programs (commercial product, research project, or otherwise) that you * acknowledge this fact somewhere in the documentation, research report, * etc... If you like PCCTS and have developed a nice tool with the * output, please mention that you developed it using PCCTS. In * addition, we ask that this header remain intact in our source code. * As long as these guidelines are kept, we expect to continue enhancing * this system and expect to make other tools available as they are * completed. * * Used by PCCTS 1.33 (SORCERER 1.00B11 and up) * Terence Parr * Parr Research Corporation * with Purdue University and AHPCRC, University of Minnesota * 1989-2000 */ /* This file knows about the following ``environments'' UNIX (default) DOS (use #define PC) MAC (use #define MPW; has a few things for THINK C, Metrowerks) MS/C++ (MR14 Microsoft Visual C++ environment uses symbol _MSC_VER) */ /* should test __STDC__ for 1, but some compilers don't set value, just def */ #ifndef __USE_PROTOS #ifdef __STDC__ #define __USE_PROTOS #endif #ifdef __cplusplus #define __USE_PROTOS #endif #endif #ifdef PCCTS_USE_NAMESPACE_STD #define PCCTS_NAMESPACE_STD namespace std {}; using namespace std; #else #define PCCTS_NAMESPACE_STD #endif #include "pccts_stdio.h" #include "pccts_stdlib.h" /* largest file name size */ #ifdef _MAX_PATH #define MaxFileName _MAX_PATH /* MR9 RJV: MAX_PATH defined in stdlib.h (MSVC++ 5.0) */ #else #define MaxFileName 300 #endif /* * Define PC32 if in a 32-bit PC environment (e.g. extended DOS or Win32). * The macros tested here are defined by Watcom, Microsoft, Borland, * and djgpp, respectively, when they are used as 32-bit compilers. * Users of these compilers *must* be sure to define PC in their * makefiles for this to work correctly. */ #ifdef PC # if (defined(__WATCOMC__) || defined(_WIN32) || defined(__WIN32__) || \ defined(__GNUC__) || defined(__GNUG__)) # ifndef PC32 # define PC32 # endif # endif #endif /* MR1 10-Apr-97 Default for PC is short file names */ /* MR1 Default for non-PC is long file names */ /* MR1 Can override via command line option LONGFILENAMES */ #ifndef LONGFILENAMES #ifndef PC #define LONGFILENAMES #endif #endif #ifndef LONGFILENAMES #define ATOKEN_H "AToken.h" #define ATOKPTR_H "ATokPtr.h" #define ATOKPTR_IMPL_H "ATokPtrIm.h" #define ATOKENBUFFER_H "ATokBuf.h" #define ATOKENBUFFER_C "ATokBuf.cpp" #define ATOKENSTREAM_H "ATokStr.h" #define APARSER_H "AParser.h" #define APARSER_C "AParser.cpp" #define ASTBASE_H "ASTBase.h" #define ASTBASE_C "ASTBase.cpp" #define PCCTSAST_C "PCCTSAST.cpp" #define LIST_C "List.cpp" #define DLEXERBASE_H "DLexBase.h" #define DLEXERBASE_C "DLexBase.cpp" #define DLEXER_H "DLexer.h" #define STREESUPPORT_C "STreeSup.C" #else #define ATOKEN_H "AToken.h" #define ATOKPTR_H "ATokPtr.h" #define ATOKPTR_IMPL_H "ATokPtrImpl.h" #define ATOKENBUFFER_H "ATokenBuffer.h" #define ATOKENBUFFER_C "ATokenBuffer.cpp" #define ATOKENSTREAM_H "ATokenStream.h" #define APARSER_H "AParser.h" #define APARSER_C "AParser.cpp" #define ASTBASE_H "ASTBase.h" #define ASTBASE_C "ASTBase.cpp" #define PCCTSAST_C "PCCTSAST.cpp" #define LIST_C "List.cpp" #define DLEXERBASE_H "DLexerBase.h" #define DLEXERBASE_C "DLexerBase.cpp" #define DLEXER_H "DLexer.h" #define STREESUPPORT_C "STreeSupport.cpp" #endif /* SORCERER Stuff */ /* MR8 6-Aug-97 Change from ifdef PC to ifndef LONGFILENAMES */ #ifndef LONGFILENAMES #define STPARSER_H "STreePar.h" #define STPARSER_C "STreePar.C" #else #define STPARSER_H "STreeParser.h" #define STPARSER_C "STreeParser.cpp" #endif #ifdef MPW #define CPP_FILE_SUFFIX ".cp" #define CPP_FILE_SUFFIX_NO_DOT "cp" #define OBJ_FILE_SUFFIX ".o" #else #ifdef PC #define CPP_FILE_SUFFIX ".cpp" #define CPP_FILE_SUFFIX_NO_DOT "cpp" #define OBJ_FILE_SUFFIX ".obj" #else #ifdef __VMS #define CPP_FILE_SUFFIX ".cpp" #define CPP_FILE_SUFFIX_NO_DOT "cpp" #define OBJ_FILE_SUFFIX ".obj" #else #define CPP_FILE_SUFFIX ".cpp" #define CPP_FILE_SUFFIX_NO_DOT "cpp" #define OBJ_FILE_SUFFIX ".o" #endif #endif #endif /* User may redefine how line information looks */ /* make it #line MR7 */ /* MR21 Use #ifndef */ #ifndef LineInfoFormatStr #define LineInfoFormatStr "#line %d \"%s\"\n" #endif #ifdef MPW /* Macintosh Programmer's Workshop */ #define ErrHdr "File \"%s\"; Line %d #" #else #ifdef _MSC_VER /* MR14 Microsoft Visual C++ environment */ #define ErrHdr "%s(%d) :" #else #define ErrHdr "%s, line %d:" /* default */ #endif #endif /* must assume old K&R cpp here, can't use #if defined(..)... */ #ifdef MPW #define TopDirectory ":" #define DirectorySymbol ":" #define OutputDirectoryOption "Directory where all output files should go (default=\":\")" #else #ifdef PC #define TopDirectory "." #define DirectorySymbol "\\" #define OutputDirectoryOption "Directory where all output files should go (default=\".\")" #else #ifdef __VMS #define TopDirectory "[000000]" #define DirectorySymbol "]" #define OutputDirectoryOption "Directory where all output files should go (default=\"[]\")" #else #define TopDirectory "." #define DirectorySymbol "/" #define OutputDirectoryOption "Directory where all output files should go (default=\".\")" #endif #endif #endif #ifdef MPW /* Make sure we have prototypes for all functions under MPW */ #include "pccts_string.h" #include "pccts_stdlib.h" /* MR6 2-Jun-97 Fixes false dependency caused by VC++ #include scanner */ /* MR6 Reported by Brad Schick (schick@interaccess.com) */ #define MPW_CursorCtl_Header #include MPW_CursorCtl_Header #ifdef __cplusplus extern "C" { #endif extern void fsetfileinfo (const char *filename, unsigned long newcreator, unsigned long newtype); #ifdef __cplusplus } #endif /* File creators for various popular development environments */ #define MAC_FILE_CREATOR 'MPS ' /* MPW Text files */ #if 0 #define MAC_FILE_CREATOR 'KAHL' /* THINK C/Symantec C++ Text files */ #endif #if 0 #define MAC_FILE_CREATOR 'CWIE' /* Metrowerks C/C++ Text files */ #endif #endif #ifdef MPW #define DAWDLE SpinCursor(1) #else #define DAWDLE #endif #ifdef MPW #define SPECIAL_INITS #define SPECIAL_FOPEN #endif #ifdef MPW #ifdef __cplusplus inline #else static #endif void special_inits() { InitCursorCtl((acurHandle) 0); } #endif #ifdef MPW #ifdef __cplusplus inline #else static #endif void special_fopen_actions(char * s) { fsetfileinfo (s, MAC_FILE_CREATOR, 'TEXT'); } #endif /* Define usable bits for set.c stuff */ #define BytesPerWord sizeof(unsigned) #define WORDSIZE (sizeof(unsigned)*8) #define LogWordSize (WORDSIZE==16?4:5) #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #if defined(VAXC) || defined(__VMS) #include #define PCCTS_EXIT_SUCCESS 1 #define PCCTS_EXIT_FAILURE SS$_ABORT #define zzDIE return SS$_ABORT; #define zzDONE return 1; #else /* !VAXC and !__VMS */ #define PCCTS_EXIT_SUCCESS 0 #define PCCTS_EXIT_FAILURE 1 #define zzDIE return 1; #define zzDONE return 0; #endif #ifdef USER_ZZMODE_STACK # ifndef ZZSTACK_MAX_MODE # define ZZSTACK_MAX_MODE 32 # endif # define ZZMAXSTK (ZZSTACK_MAX_MODE * 2) #endif #ifndef DllExportPCCTS #define DllExportPCCTS #endif #ifdef PC #ifndef PCCTS_CASE_INSENSITIVE_FILE_NAME #define PCCTS_CASE_INSENSITIVE_FILE_NAME #endif #endif #ifdef PC32 #ifndef PCCTS_CASE_INSENSITIVE_FILE_NAME #define PCCTS_CASE_INSENSITIVE_FILE_NAME #endif #endif #ifdef __VMS #ifndef PCCTS_CASE_INSENSITIVE_FILE_NAME #define PCCTS_CASE_INSENSITIVE_FILE_NAME #endif #endif #ifdef __USE_PROTOS #ifndef PCCTS_USE_STDARG #define PCCTS_USE_STDARG #endif #endif #ifdef __STDC__ #ifndef PCCTS_USE_STDARG #define PCCTS_USE_STDARG #endif #endif #ifdef __cplusplus #ifndef PCCTS_USE_STDARG #define PCCTS_USE_STDARG #endif #endif #ifdef _MSC_VER /*Turn off the warnings for: unreferenced inline/local function has been removed */ #pragma warning(disable : 4514) /* function not expanded */ #pragma warning(disable : 4710) #endif #endif