Home | History | Annotate | Download | only in Borland.old
      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