• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-2000
34  */
35 
36 /* This file knows about the following ``environments''
37 	UNIX    (default)
38 	DOS     (use #define PC)
39 	MAC     (use #define MPW; has a few things for THINK C, Metrowerks)
40     MS/C++  (MR14 Microsoft Visual C++ environment uses symbol _MSC_VER)
41 
42  */
43 
44 /* should test __STDC__ for 1, but some compilers don't set value, just def */
45 
46 #ifndef __USE_PROTOS
47 #ifdef __STDC__
48 #define __USE_PROTOS
49 #endif
50 #ifdef __cplusplus
51 #define __USE_PROTOS
52 #endif
53 #endif
54 
55 #ifdef PCCTS_USE_NAMESPACE_STD
56 #define PCCTS_NAMESPACE_STD     namespace std {}; using namespace std;
57 #else
58 #define PCCTS_NAMESPACE_STD
59 #endif
60 
61 #include "pccts_stdio.h"
62 #include "pccts_stdlib.h"
63 
64 /* largest file name size */
65 
66 #ifdef _MAX_PATH
67 #define MaxFileName		_MAX_PATH /* MR9 RJV: MAX_PATH defined in stdlib.h (MSVC++ 5.0) */
68 #else
69 #define MaxFileName		300
70 #endif
71 
72 /*
73 *  Define PC32 if in a 32-bit PC environment (e.g. extended DOS or Win32).
74 *  The macros tested here are defined by Watcom, Microsoft, Borland,
75 *  and djgpp, respectively, when they are used as 32-bit compilers.
76 *  Users of these compilers *must* be sure to define PC in their
77 *  makefiles for this to work correctly.
78 */
79 #ifdef PC
80 # if (defined(__WATCOMC__) || defined(_WIN32) || defined(__WIN32__) || \
81    defined(__GNUC__) || defined(__GNUG__))
82 #     ifndef PC32
83 #        define PC32
84 #     endif
85 #  endif
86 #endif
87 
88 /* MR1  10-Apr-97  Default for PC is short file names			            */
89 /* MR1		   Default for non-PC is long file names                		*/
90 /* MR1		   Can override via command line option LONGFILENAMES           */
91 
92 #ifndef LONGFILENAMES
93 #ifndef PC
94 #define LONGFILENAMES
95 #endif
96 #endif
97 
98 #ifndef LONGFILENAMES
99 #define ATOKEN_H			"AToken.h"
100 #define ATOKPTR_H			"ATokPtr.h"
101 #define ATOKPTR_IMPL_H		"ATokPtrIm.h"
102 #define ATOKENBUFFER_H		"ATokBuf.h"
103 #define ATOKENBUFFER_C      "ATokBuf.cpp"
104 #define ATOKENSTREAM_H		"ATokStr.h"
105 #define APARSER_H			"AParser.h"
106 #define APARSER_C           "AParser.cpp"
107 #define ASTBASE_H			"ASTBase.h"
108 #define ASTBASE_C           "ASTBase.cpp"
109 #define PCCTSAST_C          "PCCTSAST.cpp"
110 #define LIST_C              "List.cpp"
111 #define DLEXERBASE_H		"DLexBase.h"
112 #define DLEXERBASE_C        "DLexBase.cpp"
113 #define DLEXER_H            "DLexer.h"
114 #define STREESUPPORT_C		"STreeSup.C"
115 #else
116 #define ATOKEN_H			"AToken.h"
117 #define ATOKPTR_H			"ATokPtr.h"
118 #define ATOKPTR_IMPL_H		"ATokPtrImpl.h"
119 #define ATOKENBUFFER_H		"ATokenBuffer.h"
120 #define ATOKENBUFFER_C		"ATokenBuffer.cpp"
121 #define ATOKENSTREAM_H		"ATokenStream.h"
122 #define APARSER_H			"AParser.h"
123 #define APARSER_C			"AParser.cpp"
124 #define ASTBASE_H			"ASTBase.h"
125 #define ASTBASE_C		    "ASTBase.cpp"
126 #define PCCTSAST_C			"PCCTSAST.cpp"
127 #define LIST_C				"List.cpp"
128 #define DLEXERBASE_H		"DLexerBase.h"
129 #define DLEXERBASE_C		"DLexerBase.cpp"
130 #define DLEXER_H			"DLexer.h"
131 #define STREESUPPORT_C		"STreeSupport.cpp"
132 #endif
133 
134 /* SORCERER Stuff */
135 
136 /* MR8 6-Aug-97     Change from ifdef PC to ifndef LONGFILENAMES            */
137 
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 
146 #ifdef MPW
147 #define CPP_FILE_SUFFIX		".cp"
148 #define CPP_FILE_SUFFIX_NO_DOT	"cp"
149 #define OBJ_FILE_SUFFIX		".o"
150 #else
151 #ifdef PC
152 #define CPP_FILE_SUFFIX		".cpp"
153 #define CPP_FILE_SUFFIX_NO_DOT	"cpp"
154 #define OBJ_FILE_SUFFIX		".obj"
155 #else
156 #ifdef __VMS
157 #define CPP_FILE_SUFFIX		".cpp"
158 #define CPP_FILE_SUFFIX_NO_DOT	"cpp"
159 #define OBJ_FILE_SUFFIX		".obj"
160 #else
161 #define CPP_FILE_SUFFIX		".cpp"
162 #define CPP_FILE_SUFFIX_NO_DOT	"cpp"
163 #define OBJ_FILE_SUFFIX		".o"
164 #endif
165 #endif
166 #endif
167 
168 /* User may redefine how line information looks */     /* make it #line MR7 */
169 /* MR21 Use #ifndef */
170 
171 #ifndef LineInfoFormatStr
172 #define LineInfoFormatStr "#line %d \"%s\"\n"
173 #endif
174 
175 #ifdef MPW	                    /* Macintosh Programmer's Workshop */
176 #define ErrHdr "File \"%s\"; Line %d #"
177 #else
178 #ifdef _MSC_VER                 /* MR14 Microsoft Visual C++ environment */
179 #define ErrHdr "%s(%d) :"
180 #else
181 #define ErrHdr "%s, line %d:"   /* default */
182 #endif
183 #endif
184 
185 /* must assume old K&R cpp here, can't use #if defined(..)... */
186 
187 #ifdef MPW
188 #define TopDirectory	":"
189 #define DirectorySymbol	":"
190 #define OutputDirectoryOption "Directory where all output files should go (default=\":\")"
191 #else
192 #ifdef PC
193 #define TopDirectory	"."
194 #define DirectorySymbol	"\\"
195 #define OutputDirectoryOption "Directory where all output files should go (default=\".\")"
196 #else
197 #ifdef __VMS
198 #define TopDirectory  "[000000]"
199 #define DirectorySymbol       "]"
200 #define OutputDirectoryOption "Directory where all output files should go (default=\"[]\")"
201 #else
202 #define TopDirectory	"."
203 #define DirectorySymbol	"/"
204 #define OutputDirectoryOption "Directory where all output files should go (default=\".\")"
205 #endif
206 #endif
207 #endif
208 
209 #ifdef MPW
210 
211 /* Make sure we have prototypes for all functions under MPW */
212 
213 #include "pccts_string.h"
214 #include "pccts_stdlib.h"
215 
216 /* MR6 2-Jun-97	Fixes false dependency caused by VC++ #include scanner	*/
217 /* MR6		   Reported by Brad Schick (schick@interaccess.com)	*/
218 #define	MPW_CursorCtl_Header <CursorCtl.h>
219 #include MPW_CursorCtl_Header
220 #ifdef __cplusplus
221 extern "C" {
222 #endif
223 extern void fsetfileinfo (const char *filename, unsigned long newcreator, unsigned long newtype);
224 #ifdef __cplusplus
225 }
226 #endif
227 
228 /* File creators for various popular development environments */
229 
230 #define MAC_FILE_CREATOR 'MPS '   /* MPW Text files */
231 #if 0
232 #define MAC_FILE_CREATOR 'KAHL'   /* THINK C/Symantec C++ Text files */
233 #endif
234 #if 0
235 #define MAC_FILE_CREATOR 'CWIE'   /* Metrowerks C/C++ Text files */
236 #endif
237 
238 #endif
239 
240 #ifdef MPW
241 #define DAWDLE	SpinCursor(1)
242 #else
243 #define DAWDLE
244 #endif
245 
246 #ifdef MPW
247 #define SPECIAL_INITS
248 #define SPECIAL_FOPEN
249 #endif
250 
251 #ifdef MPW
252 #ifdef __cplusplus
253 inline
254 #else
255 static
256 #endif
special_inits()257 void special_inits()
258 {
259   InitCursorCtl((acurHandle) 0);
260 }
261 #endif
262 
263 #ifdef MPW
264 #ifdef __cplusplus
265 inline
266 #else
267 static
268 #endif
special_fopen_actions(char * s)269 void special_fopen_actions(char * s)
270 {
271   fsetfileinfo (s, MAC_FILE_CREATOR, 'TEXT');
272 }
273 #endif
274 
275 /* Define usable bits for set.c stuff */
276 #define BytesPerWord	sizeof(unsigned)
277 #define	WORDSIZE		(sizeof(unsigned)*8)
278 #define LogWordSize     (WORDSIZE==16?4:5)
279 
280 #ifndef TRUE
281 #define TRUE 1
282 #endif
283 #ifndef FALSE
284 #define FALSE 0
285 #endif
286 
287 #if defined(VAXC) || defined(__VMS)
288 #include <ssdef.h>
289 #define PCCTS_EXIT_SUCCESS 1
290 #define PCCTS_EXIT_FAILURE SS$_ABORT
291 #define zzDIE		return SS$_ABORT;
292 #define zzDONE	return 1;
293 
294 #else /* !VAXC and !__VMS */
295 
296 #define PCCTS_EXIT_SUCCESS 0
297 #define PCCTS_EXIT_FAILURE 1
298 #define zzDIE		return 1;
299 #define zzDONE	return 0;
300 
301 #endif
302 
303 #ifdef USER_ZZMODE_STACK
304 # ifndef ZZSTACK_MAX_MODE
305 #  define  ZZSTACK_MAX_MODE 32
306 # endif
307 # define  ZZMAXSTK (ZZSTACK_MAX_MODE * 2)
308 #endif
309 
310 #ifndef DllExportPCCTS
311 #define DllExportPCCTS
312 #endif
313 
314 #ifdef PC
315 #ifndef PCCTS_CASE_INSENSITIVE_FILE_NAME
316 #define PCCTS_CASE_INSENSITIVE_FILE_NAME
317 #endif
318 #endif
319 
320 #ifdef PC32
321 #ifndef PCCTS_CASE_INSENSITIVE_FILE_NAME
322 #define PCCTS_CASE_INSENSITIVE_FILE_NAME
323 #endif
324 #endif
325 
326 #ifdef __VMS
327 #ifndef PCCTS_CASE_INSENSITIVE_FILE_NAME
328 #define PCCTS_CASE_INSENSITIVE_FILE_NAME
329 #endif
330 #endif
331 
332 #ifdef __USE_PROTOS
333 #ifndef PCCTS_USE_STDARG
334 #define PCCTS_USE_STDARG
335 #endif
336 #endif
337 
338 #ifdef __STDC__
339 #ifndef PCCTS_USE_STDARG
340 #define PCCTS_USE_STDARG
341 #endif
342 #endif
343 
344 #ifdef __cplusplus
345 #ifndef PCCTS_USE_STDARG
346 #define PCCTS_USE_STDARG
347 #endif
348 #endif
349 
350 #ifdef _MSC_VER
351 /*Turn off the warnings for:
352   unreferenced inline/local function has been removed
353 */
354 #pragma warning(disable : 4514)
355 /* function not expanded */
356 #pragma warning(disable : 4710)
357 #endif
358 
359 #endif
360