pcctscfg.h
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:9k
源码类别:

编译器/解释器

开发平台:

Others

  1. #ifndef PCCTS_CONFIG_H
  2. #define PCCTS_CONFIG_H
  3. /*
  4.  * pcctscfg.h (formerly config.h) (for ANTLR, DLG, and SORCERER)
  5.  *
  6.  * This is a simple configuration file that doesn't have config stuff
  7.  * in it, but it's a start.
  8.  *
  9.  * SOFTWARE RIGHTS
  10.  *
  11.  * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
  12.  * Set (PCCTS) -- PCCTS is in the public domain.  An individual or
  13.  * company may do whatever they wish with source code distributed with
  14.  * PCCTS or the code generated by PCCTS, including the incorporation of
  15.  * PCCTS, or its output, into commerical software.
  16.  *
  17.  * We encourage users to develop software with PCCTS.  However, we do ask
  18.  * that credit is given to us for developing PCCTS.  By "credit",
  19.  * we mean that if you incorporate our source code into one of your
  20.  * programs (commercial product, research project, or otherwise) that you
  21.  * acknowledge this fact somewhere in the documentation, research report,
  22.  * etc...  If you like PCCTS and have developed a nice tool with the
  23.  * output, please mention that you developed it using PCCTS.  In
  24.  * addition, we ask that this header remain intact in our source code.
  25.  * As long as these guidelines are kept, we expect to continue enhancing
  26.  * this system and expect to make other tools available as they are
  27.  * completed.
  28.  *
  29.  * Used by PCCTS 1.33 (SORCERER 1.00B11 and up)
  30.  * Terence Parr
  31.  * Parr Research Corporation
  32.  * with Purdue University and AHPCRC, University of Minnesota
  33.  * 1989-1998
  34.  */
  35. /* This file knows about the following ``environments''
  36. UNIX    (default)
  37. DOS     (use #define PC)
  38. MAC     (use #define MPW; has a few things for THINK C, Metrowerks)
  39.     MS/C++  (MR14 Microsoft Visual C++ environment uses symbol _MSC_VER)
  40.  */
  41. /* should test __STDC__ for 1, but some compilers don't set value, just def */
  42. #ifdef __STDC__
  43. #define __USE_PROTOS
  44. #endif
  45. #ifdef __cplusplus
  46. #ifndef __USE_PROTOS
  47. #define __USE_PROTOS
  48. #endif
  49. #endif
  50. #ifdef PCCTS_USE_NAMESPACE_STD
  51. #define PCCTS_STDIO_H     <Cstdio>
  52. #define PCCTS_STDLIB_H    <Cstdlib>
  53. #define PCCTS_STDARG_H    <Cstdarg>
  54. #define PCCTS_SETJMP_H    <Csetjmp>
  55. #define PCCTS_STRING_H    <Cstring>
  56. #define PCCTS_ASSERT_H    <Cassert>
  57. #define PCCTS_ISTREAM_H   <istream>
  58. #define PCCTS_IOSTREAM_H  <iostream>
  59. #define PCCTS_NAMESPACE_STD     namespace std {}; using namespace std;
  60. #else
  61. #define PCCTS_STDIO_H     <stdio.h>
  62. #define PCCTS_STDLIB_H    <stdlib.h>
  63. #define PCCTS_STDARG_H    <stdarg.h>
  64. #define PCCTS_SETJMP_H    <setjmp.h>
  65. #define PCCTS_STRING_H    <string.h>
  66. #define PCCTS_ASSERT_H    <assert.h>
  67. #define PCCTS_ISTREAM_H   <istream.h>
  68. #define PCCTS_IOSTREAM_H  <iostream.h>
  69. #define PCCTS_NAMESPACE_STD
  70. #endif
  71. #include PCCTS_STDLIB_H
  72. /* largest file name size */
  73. #ifdef _MAX_PATH
  74. #define MaxFileName _MAX_PATH /* MR9 RJV: MAX_PATH defined in stdlib.h (MSVC++ 5.0) */
  75. #else
  76. #define MaxFileName 300
  77. #endif
  78. /*
  79. *  Define PC32 if in a 32-bit PC environment (e.g. extended DOS or Win32).
  80. *  The macros tested here are defined by Watcom, Microsoft, Borland,
  81. *  and djgpp, respectively, when they are used as 32-bit compilers.
  82. *  Users of these compilers *must* be sure to define PC in their
  83. *  makefiles for this to work correctly.
  84. */
  85. #ifdef PC
  86. # if (defined(__WATCOM__) || defined(_WIN32) || defined(__WIN32__) || 
  87.    defined(__GNUC__) || defined(__GNUG__))
  88. #     ifndef PC32
  89. #        define PC32
  90. #     endif
  91. #  endif
  92. #endif
  93. /* MR1  10-Apr-97  Default for PC is short file names             */
  94. /* MR1    Default for non-PC is long file names                 */
  95. /* MR1    Can override via command line option LONGFILENAMES           */
  96. #ifndef LONGFILENAMES
  97. #ifndef PC
  98. #define LONGFILENAMES
  99. #endif
  100. #endif
  101. #ifndef LONGFILENAMES
  102. #define ATOKEN_H "AToken.h"
  103. #define ATOKPTR_H "ATokPtr.h"
  104. #define ATOKPTR_C "ATokPtr.cpp"
  105. #define ATOKENBUFFER_H "ATokBuf.h"
  106. #define ATOKENBUFFER_C      "ATokBuf.cpp"
  107. #define ATOKENSTREAM_H "ATokStr.h"
  108. #define APARSER_H "AParser.h"
  109. #define APARSER_C           "AParser.cpp"
  110. #define ASTBASE_H "ASTBase.h"
  111. #define ASTBASE_C           "ASTBase.cpp"
  112. #define PCCTSAST_C          "PCCTSAST.cpp"
  113. #define LIST_C              "List.cpp"
  114. #define DLEXERBASE_H "DLexBase.h"
  115. #define DLEXERBASE_C        "DLexBase.cpp"
  116. #define DLEXER_C            "DLexer.cpp"
  117. #define STREESUPPORT_C "STreeSup.C"
  118. #else
  119. #define ATOKEN_H "AToken.h"
  120. #define ATOKPTR_H "ATokPtr.h"
  121. #define ATOKPTR_C "ATokPtr.cpp"
  122. #define ATOKENBUFFER_H "ATokenBuffer.h"
  123. #define ATOKENBUFFER_C "ATokenBuffer.cpp"
  124. #define ATOKENSTREAM_H "ATokenStream.h"
  125. #define APARSER_H "AParser.h"
  126. #define APARSER_C "AParser.cpp"
  127. #define ASTBASE_H "ASTBase.h"
  128. #define ASTBASE_C     "ASTBase.cpp"
  129. #define PCCTSAST_C "PCCTSAST.cpp"
  130. #define LIST_C "List.cpp"
  131. #define DLEXERBASE_H "DLexerBase.h"
  132. #define DLEXERBASE_C "DLexerBase.cpp"
  133. #define DLEXER_C "DLexer.cpp"
  134. #define STREESUPPORT_C "STreeSupport.cpp"
  135. #endif
  136. /* SORCERER Stuff */
  137. /* MR8 6-Aug-97     Change from ifdef PC to ifndef LONGFILENAMES            */
  138. #ifndef LONGFILENAMES
  139. #define STPARSER_H "STreePar.h"
  140. #define STPARSER_C "STreePar.C"
  141. #else
  142. #define STPARSER_H "STreeParser.h"
  143. #define STPARSER_C "STreeParser.cpp"
  144. #endif
  145. #ifdef MPW
  146. #define CPP_FILE_SUFFIX ".cp"
  147. #define CPP_FILE_SUFFIX_NO_DOT "cp"
  148. #define OBJ_FILE_SUFFIX ".o"
  149. #else
  150. #ifdef PC
  151. #define CPP_FILE_SUFFIX ".cpp"
  152. #define CPP_FILE_SUFFIX_NO_DOT "cpp"
  153. #define OBJ_FILE_SUFFIX ".obj"
  154. #else
  155. #ifdef __VMS
  156. #define CPP_FILE_SUFFIX ".cpp"
  157. #define CPP_FILE_SUFFIX_NO_DOT "cpp"
  158. #define OBJ_FILE_SUFFIX ".obj"
  159. #else
  160. #define CPP_FILE_SUFFIX ".cpp"
  161. #define CPP_FILE_SUFFIX_NO_DOT "cpp"
  162. #define OBJ_FILE_SUFFIX ".o"
  163. #endif
  164. #endif
  165. #endif
  166. /* User may redefine how line information looks */     /* make it #line MR7 */
  167. #define LineInfoFormatStr "#line %d "%s"n"
  168. #ifdef MPW                     /* Macintosh Programmer's Workshop */
  169. #define ErrHdr "File "%s"; Line %d #"
  170. #else
  171. #ifdef _MSC_VER                 /* MR14 Microsoft Visual C++ environment */
  172. #define ErrHdr "%s(%d) :"
  173. #else
  174. #define ErrHdr "%s, line %d:"   /* default */
  175. #endif
  176. #endif
  177. /* must assume old K&R cpp here, can't use #if defined(..)... */
  178. #ifdef MPW
  179. #define TopDirectory ":"
  180. #define DirectorySymbol ":"
  181. #define OutputDirectoryOption "Directory where all output files should go (default=":")"
  182. #else
  183. #ifdef PC
  184. #define TopDirectory "."
  185. #define DirectorySymbol "\"
  186. #define OutputDirectoryOption "Directory where all output files should go (default=".")"
  187. #else
  188. #ifdef __VMS
  189. #define TopDirectory  "[000000]"
  190. #define DirectorySymbol       "]"
  191. #define OutputDirectoryOption "Directory where all output files should go (default="[]")"
  192. #else
  193. #define TopDirectory "."
  194. #define DirectorySymbol "/"
  195. #define OutputDirectoryOption "Directory where all output files should go (default=".")"
  196. #endif
  197. #endif
  198. #endif
  199. #ifdef MPW
  200. /* Make sure we have prototypes for all functions under MPW */
  201. #include PCCTS_STRING_H
  202. #include PCCTS_STDLIB_H
  203. /* MR6 2-Jun-97 Fixes false dependency caused by VC++ #include scanner */
  204. /* MR6    Reported by Brad Schick (schick@interaccess.com) */
  205. #define MPW_CursorCtl_Header <CursorCtl.h>
  206. #include MPW_CursorCtl_Header
  207. #ifdef __cplusplus
  208. extern "C" {
  209. #endif
  210. extern void fsetfileinfo (char *filename, unsigned long newcreator, unsigned long newtype);
  211. #ifdef __cplusplus
  212. }
  213. #endif
  214. /* File creators for various popular development environments */
  215. #define MAC_FILE_CREATOR 'MPS '   /* MPW Text files */
  216. #if 0
  217. #define MAC_FILE_CREATOR 'KAHL'   /* THINK C/Symantec C++ Text files */
  218. #endif
  219. #if 0
  220. #define MAC_FILE_CREATOR 'MMCC'   /* Metrowerks C/C++ Text files */
  221. #endif
  222. #endif
  223. #ifdef MPW
  224. #define DAWDLE SpinCursor(1)
  225. #else
  226. #define DAWDLE
  227. #endif
  228. #ifdef MPW
  229. #define SPECIAL_INITS
  230. #define SPECIAL_FOPEN
  231. #endif
  232. #ifdef MPW
  233. #ifdef __cplusplus
  234. inline
  235. #else
  236. static
  237. #endif
  238. void special_inits()
  239. {
  240.   InitCursorCtl((acurHandle) 0);
  241. }
  242. #endif
  243. #ifdef MPW
  244. #ifdef __cplusplus
  245. inline
  246. #else
  247. static
  248. #endif
  249. void special_fopen_actions(char * /* s */)
  250. {
  251.   fsetfileinfo (s, MAC_FILE_CREATOR, 'TEXT');
  252. }
  253. #endif
  254. /* Define usable bits for set.c stuff */
  255. #define BytesPerWord sizeof(unsigned)
  256. #define WORDSIZE (sizeof(unsigned)*8)
  257. #define LogWordSize     (WORDSIZE==16?4:5)
  258. #ifndef TRUE
  259. #define TRUE 1
  260. #endif
  261. #ifndef FALSE
  262. #define FALSE 0
  263. #endif
  264. #if defined(VAXC) || defined(__VMS)
  265. #include <ssdef.h>
  266. #define PCCTS_EXIT_SUCCESS 1
  267. #define PCCTS_EXIT_FAILURE SS$_ABORT
  268. #define zzDIE return SS$_ABORT;
  269. #define zzDONE return 1;
  270. #else /* !VAXC and !__VMS */
  271. #define PCCTS_EXIT_SUCCESS 0
  272. #define PCCTS_EXIT_FAILURE 1
  273. #define zzDIE return 1;
  274. #define zzDONE return 0;
  275. #endif
  276. #ifdef USER_ZZMODE_STACK
  277. # ifndef ZZSTACK_MAX_MODE
  278. #  define  ZZSTACK_MAX_MODE 32
  279. # endif
  280. # define  ZZMAXSTK (ZZSTACK_MAX_MODE * 2)
  281. #endif
  282. #ifndef DllExportPCCTS
  283. #define DllExportPCCTS
  284. #endif
  285. #endif