1 Received: from 128.140.1.1 by ee.lbl.gov for <vern (a] ee.lbl.gov> (8.6.9/1.43r) 2 id HAA01193; Thu, 29 Sep 1994 07:26:54 -0700 3 Received: from larry-le0.cc.emory.edu by 4 emoryu1.cc.emory.edu (5.65/Emory_cc.4.0.1) via SMTP 5 id AA07292 ; Thu, 29 Sep 94 10:26:41 -0400 6 From: tkane01 (a] unix.cc.emory.edu (Terrence O Kane) 7 Received: by larry.cc.emory.edu (5.0) id AA11757; Thu, 29 Sep 1994 10:26:43 +0500 8 Message-Id: <9409291426.AA11757 (a] larry.cc.emory.edu> 9 Subject: patches and makefile for Borland C 4.02, flex 2.4.7 10 To: vern (a] ee.lbl.gov 11 Date: Thu, 29 Sep 1994 10:26:42 -0400 (EDT) 12 X-Mailer: ELM [version 2.4 PL23] 13 Mime-Version: 1.0 14 Content-Type: text/plain; charset=US-ASCII 15 Content-Transfer-Encoding: 7bit 16 Content-Length: 9900 17 18 Enclosed are unified diffs and a makefile for Borland 4.02 19 20 The changes in the enclosed are 1) make the size parameters for memory 21 allocation "size_t", 2) change an include file when the lexer is 22 compiled within 'extern "C" {...}' in a C++ file, and 3) include pragmas 23 in the header suitable for BCC 4.02 to hush on warnings. 24 25 The latter is done because of the limit on command line size. A tradeoff 26 exists between putting pragmas in the header, or #defines in the header - 27 I put in the pragmas since they're suppoed to be ignored unless 28 understood - *and* they're enclosed in BCC specific ifdefs, anyway. 29 30 All changes are enclosed in "#ifdef __BORLANDC__". 31 32 33 34 35 36 --- misc.c Tue Jan 04 14:33:10 1994 37 +++ ../misc.c Wed Sep 28 18:44:32 1994 38 @@ -55,15 +55,19 @@ 39 action_index += len; 40 } 41 42 43 /* allocate_array - allocate memory for an integer array of the given size */ 44 45 void *allocate_array( size, element_size ) 46 +#ifndef __BORLANDC__ 47 int size, element_size; 48 +#else /* __BORLANDC__ */ 49 +size_t size, element_size; 50 +#endif /* __BORLANDC__ */ 51 { 52 register void *mem; 53 54 /* On 16-bit int machines (e.g., 80286) we might be trying to 55 * allocate more than a signed int can hold, and that won't 56 * work. Cheap test: 57 */ 58 @@ -634,15 +638,19 @@ 59 } 60 61 62 /* reallocate_array - increase the size of a dynamic array */ 63 64 void *reallocate_array( array, size, element_size ) 65 void *array; 66 +#ifndef __BORLANDC__ 67 int size, element_size; 68 +#else /* __BORLANDC__ */ 69 +size_t size, element_size; 70 +#endif /* __BORLANDC__ */ 71 { 72 register void *new_array; 73 74 /* Same worry as in allocate_array(): */ 75 if ( size * element_size <= 0 ) 76 flexfatal( 77 "attempt to increase array size by less than 1 byte" ); 78 @@ -739,15 +747,19 @@ 79 } 80 81 82 /* The following is only needed when building flex's parser using certain 83 * broken versions of bison. 84 */ 85 void *yy_flex_xmalloc( size ) 86 +#ifndef __BORLANDC__ 87 int size; 88 +#else /* __BORLANDC__ */ 89 +size_t size; 90 +#endif /* __BORLANDC__ */ 91 { 92 void *result = flex_alloc( size ); 93 94 if ( ! result ) 95 flexfatal( "memory allocation failed in yy_flex_xmalloc()" ); 96 97 return result; 98 99 100 101 102 103 --- skel.c Wed Aug 03 11:38:32 1994 104 +++ ../skel.c Wed Sep 28 18:50:58 1994 105 @@ -26,15 +26,19 @@ 106 "", 107 "#ifdef __cplusplus", 108 "", 109 "#include <stdlib.h>", 110 "%+", 111 "class istream;", 112 "%*", 113 + "#ifndef __BORLANDC__", 114 "#include <unistd.h>", 115 + "#else /* __BORLANDC__ */", 116 + "#include <io.h>", 117 + "#endif /* __BORLANDC__ */", 118 "", 119 "/* Use prototypes in function declarations. */", 120 "#define YY_USE_PROTOS", 121 "", 122 "/* The \"const\" storage-class-modifier is valid. */", 123 "#define YY_USE_CONST", 124 "", 125 @@ -240,16 +244,21 @@ 126 "static int yy_start_stack_depth = 0;", 127 "static int *yy_start_stack = 0;", 128 "static void yy_push_state YY_PROTO(( int new_state ));", 129 "static void yy_pop_state YY_PROTO(( void ));", 130 "static int yy_top_state YY_PROTO(( void ));", 131 "%*", 132 "", 133 + "#ifndef __BORLANDC__", 134 "static void *yy_flex_alloc YY_PROTO(( unsigned int ));", 135 "static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));", 136 + "#else /* __BORLANDC__ */", 137 + "static void *yy_flex_alloc YY_PROTO(( size_t ));", 138 + "static void *yy_flex_realloc YY_PROTO(( void *, size_t ));", 139 + "#endif /* __BORLANDC__ */", 140 "static void yy_flex_free YY_PROTO(( void * ));", 141 "", 142 "#define yy_new_buffer yy_create_buffer", 143 "", 144 "%% yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here", 145 "", 146 "#ifndef yytext_ptr", 147 148 149 150 151 152 --- initscan.c Wed Aug 03 11:42:46 1994 153 +++ ../initscan.c Wed Sep 28 18:51:34 1994 154 @@ -16,15 +16,19 @@ 155 #endif 156 #endif 157 158 159 #ifdef __cplusplus 160 161 #include <stdlib.h> 162 +#ifndef __BORLANDC__ 163 #include <unistd.h> 164 +#else /* __BORLANDC__ */ 165 +#include <io.h> 166 +#endif /* __BORLANDC__ */ 167 168 /* Use prototypes in function declarations. */ 169 #define YY_USE_PROTOS 170 171 /* The "const" storage-class-modifier is valid. */ 172 #define YY_USE_CONST 173 174 @@ -220,16 +224,21 @@ 175 static int yy_start_stack_ptr = 0; 176 static int yy_start_stack_depth = 0; 177 static int *yy_start_stack = 0; 178 static void yy_push_state YY_PROTO(( int new_state )); 179 static void yy_pop_state YY_PROTO(( void )); 180 static int yy_top_state YY_PROTO(( void )); 181 182 +#ifndef __BORLANDC__ 183 static void *yy_flex_alloc YY_PROTO(( unsigned int )); 184 static void *yy_flex_realloc YY_PROTO(( void *, unsigned int )); 185 +#else /* __BORLANDC__ */ 186 +static void *yy_flex_alloc YY_PROTO(( size_t )); 187 +static void *yy_flex_realloc YY_PROTO(( void *, size_t )); 188 +#endif /* __BORLANDC__ */ 189 static void yy_flex_free YY_PROTO(( void * )); 190 191 #define yy_new_buffer yy_create_buffer 192 193 #define INITIAL 0 194 #define SECT2 1 195 #define SECT2PROLOG 2 196 197 198 199 200 201 --- flexdef.h Tue Jan 04 14:33:14 1994 202 +++ ../flexdef.h Wed Sep 28 18:53:44 1994 203 @@ -27,14 +27,25 @@ 204 */ 205 206 /* @(#) $Header: flexdef.h,v 1.2 94/01/04 14:33:14 vern Exp $ (LBL) */ 207 208 #include <stdio.h> 209 #include <ctype.h> 210 211 +#ifdef __BORLANDC__ 212 +#include <malloc.h> 213 + 214 +#pragma warn -pro 215 +#pragma warn -rch 216 +#pragma warn -use 217 +#pragma warn -aus 218 +#pragma warn -par 219 +#pragma warn -pia 220 + 221 +#endif /* __BORLANDC__ */ 222 #if HAVE_STRING_H 223 #include <string.h> 224 #else 225 #include <strings.h> 226 #endif 227 228 #if __STDC__ 229 @@ -607,19 +618,29 @@ 230 */ 231 232 extern char nmstr[MAXLINE]; 233 extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; 234 extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; 235 extern int num_backing_up, bol_needed; 236 237 +#ifndef __BORLANDC__ 238 void *allocate_array PROTO((int, int)); 239 void *reallocate_array PROTO((void*, int, int)); 240 +#else /* __BORLANDC__ */ 241 +void *allocate_array PROTO((size_t, size_t)); 242 +void *reallocate_array PROTO((void*, size_t, size_t)); 243 +#endif /* __BORLANDC__ */ 244 245 +#ifndef __BORLANDC__ 246 void *flex_alloc PROTO((unsigned int)); 247 void *flex_realloc PROTO((void*, unsigned int)); 248 +#else /* __BORLANDC__ */ 249 +void *flex_alloc PROTO((size_t)); 250 +void *flex_realloc PROTO((void*, size_t)); 251 +#endif /* __BORLANDC__ */ 252 void flex_free PROTO((void*)); 253 254 #define allocate_integer_array(size) \ 255 (int *) allocate_array( size, sizeof( int ) ) 256 257 #define reallocate_integer_array(array,size) \ 258 (int *) reallocate_array( (void *) array, size, sizeof( int ) ) 259 @@ -772,15 +793,19 @@ 260 /* Write out one section of the skeleton file. */ 261 extern void skelout PROTO((void)); 262 263 /* Output a yy_trans_info structure. */ 264 extern void transition_struct_out PROTO((int, int)); 265 266 /* Only needed when using certain broken versions of bison to build parse.c. */ 267 +#ifndef __BORLANDC__ 268 extern void *yy_flex_xmalloc PROTO(( int )); 269 +#else /* __BORLANDC__ */ 270 +extern void *yy_flex_xmalloc PROTO(( size_t )); 271 +#endif /* __BORLANDC__ */ 272 273 /* Set a region of memory to 0. */ 274 extern void zero_out PROTO((char *, int)); 275 276 277 /* from file nfa.c */ 278 279 280 281 282 283 ############################################################################### 284 # Makefile for flex 2.4.7 with Borland C/C++ version 4.02 285 # 286 # This will probably need to be adjusted for your existing lexer/parser 287 # generators. See definitions for FLEX and YACC near the bottom of the 288 # makefile. 289 # 290 # Copy initscan.c to scan.c to make your first executable. After that, 291 # you may choose to try alternate compression options for your everyday 292 # flex executable. 293 # 294 # This will build flex with the large model. Don't use huge, but if you 295 # feel like experimenting with other models, post your success stories to 296 # comp.compilers, OK? 297 # 298 # This makefile does *not* implement the big testing found in "makefile.in". 299 # 300 # I also assume the availability of sed and the gnu file utilities on the 301 # system - they're readily available, so if you don't have them, why not? 302 # <grin> 303 # 304 # The resulting generated lexer (the real goal, right?) will compile 305 # (and run nicely, too) as a .c file, as well as being included such as 306 # extern "C" { #include "lexyyc" } in a .cplusplus file. 307 # 308 ############################################################################### 309 310 DEBUG = 1 311 312 .autodepend 313 314 all: flex.exe 315 316 ############################################################################### 317 # 318 # standard utilitities? ha. 319 # 320 321 CC = bcc 322 CPP = bcc 323 324 ############################################################################### 325 # 326 327 MODEL = l 328 329 !if $(DEBUG) == 1 330 !message Building with debug. 331 debugCompile = -v 332 debugLink = /v 333 !else 334 !message Building without debug. 335 debugCompile = 336 debugLink = 337 !endif 338 339 LOADER = c0$(MODEL).obj 340 LIBS = c$(MODEL).lib 341 LINKFLAGS = $(debugLink) 342 343 DATASEG = -dc -Ff 344 SizeOPT = -Os -G- 345 Defines = -DSHORT_FILE_NAMES=1 -DHAVE_STRING_H=1 346 347 COMMON = -A -c -m$(MODEL) $(SizeOPT) $(DATASEG) $(Defines) $(debugCompile) 348 CFLAGS = -o$@ $(COMMON) 349 CCFLAGS = -o$@ $(COMMON) -Pcc 350 351 ############################################################################### 352 353 .SUFFIXES: .cc 354 355 .cc.obj: 356 $(CPP) $(CCFLAGS) $< 357 358 .c.obj: 359 $(CPP) $(CFLAGS) $< 360 361 ############################################################################### 362 # 363 # source & object files 364 # 365 366 SRC = ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.c \ 367 scan.c sym.c tblcmp.c yylex.c skel.c 368 369 OBJS = $(SRC:.c=.obj) 370 371 objects: $(OBJS) 372 @echo $(OBJS) 373 374 ############################################################################### 375 # 376 # Executable 377 # 378 379 flex.exe: $(OBJS) 380 tlink $(LINKFLAGS) @&&! 381 $(LOADER) $** 382 $&.exe 383 $&.map 384 $(LIBS) 385 ! 386 387 # 388 ############################################################################### 389 # 390 # Lex files 391 # 392 393 FLEX = .\flex 394 FLEX_FLAGS = -ist 395 396 scan.c: scan.l 397 $(FLEX) $(FLEX_FLAGS) scan.l >scan.tmp 398 sed s,\"$(srcdir)/scan.l\",\"scan.l\", <scan.tmp >scan.c 399 @rm scan.tmp 400 401 ############################################################################### 402 # 403 # YACC files 404 # 405 406 YACC = .\bison 407 YFLAGS = -vdyl 408 409 parse.c: parse.y 410 $(YACC) -ydl parse.y 411 @sed "/extern char.*malloc/d" <y_tab.c >parse.c 412 @rm -f y_tab.c 413 @mv y_tab.h parse.h 414 415 # 416 # end Makefile 417 # 418 ############################################################################### 419 420