www.pudn.com > flex_bingle.rar > Borland-2.4


Received: from 128.140.1.1 by ee.lbl.gov for  (8.6.9/1.43r) 
	id HAA01193; Thu, 29 Sep 1994 07:26:54 -0700 
Received: from larry-le0.cc.emory.edu by 
	emoryu1.cc.emory.edu (5.65/Emory_cc.4.0.1) via SMTP 
	id AA07292 ; Thu, 29 Sep 94 10:26:41 -0400 
From: tkane01@unix.cc.emory.edu (Terrence O Kane) 
Received: by larry.cc.emory.edu (5.0) id AA11757; Thu, 29 Sep 1994 10:26:43 +0500 
Message-Id: <9409291426.AA11757@larry.cc.emory.edu> 
Subject: patches and makefile for Borland C 4.02, flex 2.4.7 
To: vern@ee.lbl.gov 
Date: Thu, 29 Sep 1994 10:26:42 -0400 (EDT) 
X-Mailer: ELM [version 2.4 PL23] 
Mime-Version: 1.0 
Content-Type: text/plain; charset=US-ASCII 
Content-Transfer-Encoding: 7bit 
Content-Length: 9900       
 
Enclosed are unified diffs and a makefile for Borland 4.02 
 
The changes in the enclosed are 1) make the size parameters for memory 
allocation "size_t", 2) change an include file when the lexer is  
compiled within 'extern "C" {...}' in a C++ file, and 3) include pragmas  
in the header suitable for BCC 4.02 to hush on warnings. 
 
The latter is done because of the limit on command line size.  A tradeoff  
exists between putting pragmas in the header, or #defines in the header -  
I put in the pragmas since they're suppoed to be ignored unless  
understood - *and* they're enclosed in BCC specific ifdefs, anyway. 
 
All changes are enclosed in "#ifdef __BORLANDC__". 
 
 
 
 
 
--- misc.c	Tue Jan 04 14:33:10 1994 
+++ ../misc.c	Wed Sep 28 18:44:32 1994 
@@ -55,15 +55,19 @@ 
 	action_index += len; 
 	} 
  
  
 /* allocate_array - allocate memory for an integer array of the given size */ 
  
 void *allocate_array( size, element_size ) 
+#ifndef __BORLANDC__ 
 int size, element_size; 
+#else /* __BORLANDC__ */ 
+size_t size, element_size; 
+#endif /* __BORLANDC__ */ 
 	{ 
 	register void *mem; 
  
 	/* On 16-bit int machines (e.g., 80286) we might be trying to 
 	 * allocate more than a signed int can hold, and that won't 
 	 * work.  Cheap test: 
 	 */ 
@@ -634,15 +638,19 @@ 
 	} 
  
  
 /* reallocate_array - increase the size of a dynamic array */ 
  
 void *reallocate_array( array, size, element_size ) 
 void *array; 
+#ifndef __BORLANDC__ 
 int size, element_size; 
+#else /* __BORLANDC__ */ 
+size_t size, element_size; 
+#endif /* __BORLANDC__ */ 
 	{ 
 	register void *new_array; 
  
 	/* Same worry as in allocate_array(): */ 
 	if ( size * element_size <= 0 ) 
 		flexfatal( 
 			"attempt to increase array size by less than 1 byte" ); 
@@ -739,15 +747,19 @@ 
 	} 
  
  
 /* The following is only needed when building flex's parser using certain 
  * broken versions of bison. 
  */ 
 void *yy_flex_xmalloc( size ) 
+#ifndef __BORLANDC__ 
 int size; 
+#else /* __BORLANDC__ */ 
+size_t size; 
+#endif /* __BORLANDC__ */ 
 	{ 
 	void *result = flex_alloc( size ); 
  
 	if ( ! result  ) 
 		flexfatal( "memory allocation failed in yy_flex_xmalloc()" ); 
  
 	return result; 
 
 
 
 
 
--- skel.c	Wed Aug 03 11:38:32 1994 
+++ ../skel.c	Wed Sep 28 18:50:58 1994 
@@ -26,15 +26,19 @@ 
   "", 
   "#ifdef __cplusplus", 
   "", 
   "#include ", 
   "%+", 
   "class istream;", 
   "%*", 
+  "#ifndef __BORLANDC__", 
   "#include ", 
+  "#else /* __BORLANDC__ */", 
+  "#include ", 
+  "#endif /* __BORLANDC__ */", 
   "", 
   "/* Use prototypes in function declarations. */", 
   "#define YY_USE_PROTOS", 
   "", 
   "/* The \"const\" storage-class-modifier is valid. */", 
   "#define YY_USE_CONST", 
   "", 
@@ -240,16 +244,21 @@ 
   "static int yy_start_stack_depth = 0;", 
   "static int *yy_start_stack = 0;", 
   "static void yy_push_state YY_PROTO(( int new_state ));", 
   "static void yy_pop_state YY_PROTO(( void ));", 
   "static int yy_top_state YY_PROTO(( void ));", 
   "%*", 
   "", 
+  "#ifndef __BORLANDC__", 
   "static void *yy_flex_alloc YY_PROTO(( unsigned int ));", 
   "static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));", 
+  "#else /* __BORLANDC__ */", 
+  "static void *yy_flex_alloc YY_PROTO(( size_t ));", 
+  "static void *yy_flex_realloc YY_PROTO(( void *, size_t ));", 
+  "#endif /* __BORLANDC__ */", 
   "static void yy_flex_free YY_PROTO(( void * ));", 
   "", 
   "#define yy_new_buffer yy_create_buffer", 
   "", 
   "%% yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here", 
   "", 
   "#ifndef yytext_ptr", 
 
 
 
 
 
--- initscan.c	Wed Aug 03 11:42:46 1994 
+++ ../initscan.c	Wed Sep 28 18:51:34 1994 
@@ -16,15 +16,19 @@ 
 #endif 
 #endif 
  
  
 #ifdef __cplusplus 
  
 #include  
+#ifndef __BORLANDC__ 
 #include  
+#else /* __BORLANDC__ */ 
+#include  
+#endif /* __BORLANDC__ */ 
  
 /* Use prototypes in function declarations. */ 
 #define YY_USE_PROTOS 
  
 /* The "const" storage-class-modifier is valid. */ 
 #define YY_USE_CONST 
  
@@ -220,16 +224,21 @@ 
 static int yy_start_stack_ptr = 0; 
 static int yy_start_stack_depth = 0; 
 static int *yy_start_stack = 0; 
 static void yy_push_state YY_PROTO(( int new_state )); 
 static void yy_pop_state YY_PROTO(( void )); 
 static int yy_top_state YY_PROTO(( void )); 
  
+#ifndef __BORLANDC__ 
 static void *yy_flex_alloc YY_PROTO(( unsigned int )); 
 static void *yy_flex_realloc YY_PROTO(( void *, unsigned int )); 
+#else /* __BORLANDC__ */ 
+static void *yy_flex_alloc YY_PROTO(( size_t )); 
+static void *yy_flex_realloc YY_PROTO(( void *, size_t )); 
+#endif /* __BORLANDC__ */ 
 static void yy_flex_free YY_PROTO(( void * )); 
  
 #define yy_new_buffer yy_create_buffer 
  
 #define INITIAL 0 
 #define SECT2 1 
 #define SECT2PROLOG 2 
 
 
 
 
 
--- flexdef.h	Tue Jan 04 14:33:14 1994 
+++ ../flexdef.h	Wed Sep 28 18:53:44 1994 
@@ -27,14 +27,25 @@ 
  */ 
  
 /* @(#) $Header: flexdef.h,v 1.2 94/01/04 14:33:14 vern Exp $ (LBL) */ 
  
 #include  
 #include  
  
+#ifdef __BORLANDC__ 
+#include  
+ 
+#pragma warn -pro 
+#pragma warn -rch 
+#pragma warn -use 
+#pragma warn -aus 
+#pragma warn -par 
+#pragma warn -pia 
+ 
+#endif /* __BORLANDC__ */ 
 #if HAVE_STRING_H 
 #include  
 #else 
 #include  
 #endif 
  
 #if __STDC__ 
@@ -607,19 +618,29 @@ 
  */ 
  
 extern char nmstr[MAXLINE]; 
 extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs; 
 extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave; 
 extern int num_backing_up, bol_needed; 
  
+#ifndef __BORLANDC__ 
 void *allocate_array PROTO((int, int)); 
 void *reallocate_array PROTO((void*, int, int)); 
+#else /* __BORLANDC__ */ 
+void *allocate_array PROTO((size_t, size_t)); 
+void *reallocate_array PROTO((void*, size_t, size_t)); 
+#endif /* __BORLANDC__ */ 
  
+#ifndef __BORLANDC__ 
 void *flex_alloc PROTO((unsigned int)); 
 void *flex_realloc PROTO((void*, unsigned int)); 
+#else /* __BORLANDC__ */ 
+void *flex_alloc PROTO((size_t)); 
+void *flex_realloc PROTO((void*, size_t)); 
+#endif /* __BORLANDC__ */ 
 void flex_free PROTO((void*)); 
  
 #define allocate_integer_array(size) \ 
 	(int *) allocate_array( size, sizeof( int ) ) 
  
 #define reallocate_integer_array(array,size) \ 
 	(int *) reallocate_array( (void *) array, size, sizeof( int ) ) 
@@ -772,15 +793,19 @@ 
 /* Write out one section of the skeleton file. */ 
 extern void skelout PROTO((void)); 
  
 /* Output a yy_trans_info structure. */ 
 extern void transition_struct_out PROTO((int, int)); 
  
 /* Only needed when using certain broken versions of bison to build parse.c. */ 
+#ifndef __BORLANDC__ 
 extern void *yy_flex_xmalloc PROTO(( int )); 
+#else /* __BORLANDC__ */ 
+extern void *yy_flex_xmalloc PROTO(( size_t )); 
+#endif /* __BORLANDC__ */ 
  
 /* Set a region of memory to 0. */ 
 extern void zero_out PROTO((char *, int)); 
  
  
 /* from file nfa.c */ 
 
 
 
 
 
############################################################################### 
# Makefile for flex 2.4.7 with Borland C/C++ version 4.02 
# 
# This will probably need to be adjusted for your existing lexer/parser 
# generators.  See definitions for FLEX and YACC near the bottom of the 
# makefile. 
# 
# Copy initscan.c to scan.c to make your first executable.  After that, 
# you may choose to try alternate compression options for your everyday 
# flex executable. 
# 
# This will build flex with the large model.  Don't use huge, but if you 
# feel like experimenting with other models, post your success stories to  
# comp.compilers, OK? 
# 
# This makefile does *not* implement the big testing found in "makefile.in". 
# 
# I also assume the availability of sed and the gnu file utilities on the 
# system - they're readily available, so if you don't have them, why not? 
#                                                                  
# 
# The resulting generated lexer (the real goal, right?) will compile 
# (and run nicely, too) as a .c file, as well as being included such as 
# extern "C" { #include "lexyyc" } in a .cplusplus file. 
# 
############################################################################### 
 
DEBUG = 1 
 
.autodepend 
 
all:	flex.exe 
 
############################################################################### 
# 
# standard utilitities? ha. 
# 
 
CC	= bcc 
CPP     = bcc 
 
############################################################################### 
# 
 
MODEL	= l 
 
!if $(DEBUG) == 1 
!message Building with debug. 
debugCompile = -v 
debugLink = /v 
!else 
!message Building without debug. 
debugCompile = 
debugLink = 
!endif 
 
LOADER	= c0$(MODEL).obj 
LIBS	= c$(MODEL).lib 
LINKFLAGS = $(debugLink) 
 
DATASEG	= -dc -Ff 
SizeOPT	= -Os -G- 
Defines = -DSHORT_FILE_NAMES=1 -DHAVE_STRING_H=1 
 
COMMON	= -A -c -m$(MODEL) $(SizeOPT) $(DATASEG) $(Defines) $(debugCompile) 
CFLAGS  = -o$@ $(COMMON) 
CCFLAGS  = -o$@ $(COMMON) -Pcc 
 
############################################################################### 
 
.SUFFIXES:	.cc 
 
.cc.obj: 
	$(CPP) $(CCFLAGS) $< 
 
.c.obj: 
	$(CPP) $(CFLAGS) $< 
 
############################################################################### 
# 
# source & object files 
# 
 
SRC =	ccl.c dfa.c ecs.c gen.c main.c misc.c nfa.c parse.c \ 
	scan.c sym.c tblcmp.c yylex.c skel.c 
 
OBJS = $(SRC:.c=.obj) 
 
objects:	$(OBJS) 
	@echo $(OBJS) 
 
############################################################################### 
# 
# Executable 
# 
 
flex.exe:      $(OBJS) 
	tlink $(LINKFLAGS) @&&! 
$(LOADER) $** 
$&.exe 
$&.map 
$(LIBS) 
! 
 
#  
############################################################################### 
# 
# Lex files 
# 
 
FLEX	= .\flex 
FLEX_FLAGS = -ist 
 
scan.c: scan.l 
	$(FLEX) $(FLEX_FLAGS) scan.l >scan.tmp 
	sed s,\"$(srcdir)/scan.l\",\"scan.l\", scan.c 
	@rm scan.tmp 
 
############################################################################### 
# 
# YACC files 
# 
 
YACC	= .\bison 
YFLAGS  = -vdyl 
 
parse.c: parse.y 
	$(YACC) -ydl parse.y 
	@sed "/extern char.*malloc/d" parse.c 
	@rm -f y_tab.c 
	@mv y_tab.h parse.h 
 
# 
# end Makefile 
# 
###############################################################################