diff options
author | brolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-05-21 08:54:04 +0000 |
---|---|---|
committer | brolley <brolley@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-05-21 08:54:04 +0000 |
commit | a654e028c0847b75bf58ff0bd0798f6a5551bb2e (patch) | |
tree | 90fed89e61e9fd2bf61cf04959aef270cf529fdb /gcc/c-lex.c | |
parent | 2960b9507d93a62a4617b080eb91adfadd5386d9 (diff) | |
download | gcc-a654e028c0847b75bf58ff0bd0798f6a5551bb2e.tar.gz |
Thu May 21 11:51:15 1998 Dave Brolley <brolley@cygnus.com>
* configure.in (extra_c_objs): add prefix.o.
(extra_cxx_objs): extra objects for C++ with cpplib.
* configure: Regenerate.
* c-tree.h: (get_directive_line): Different prototype for cpplib.
(GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
* c-lex.h: (get_directive_line): Not needed here for cpplib.
* c-lex.c: (yy_cur,yy_lim,yy_get_token): Move to c-common.c.
(GET_DIRECTIVE_LINE): Move to c-common.c and rename to get_directive_line.
* c-common.c (parse_in,parse_options,cpp_token): Declare for cpplib.
(yy_cur,yy_lim,yy_get_token,get_directive,line): Moved here from c-lex.c
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19926 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-lex.c')
-rw-r--r-- | gcc/c-lex.c | 109 |
1 files changed, 6 insertions, 103 deletions
diff --git a/gcc/c-lex.c b/gcc/c-lex.c index a180711e813..7612352fe02 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -46,9 +46,8 @@ Boston, MA 02111-1307, USA. */ #if USE_CPPLIB #include "cpplib.h" -cpp_reader parse_in; -cpp_options parse_options; -static enum cpp_token cpp_token; +extern cpp_reader parse_in; +extern cpp_options parse_options; #else /* Stream for reading from the input file. */ FILE *finput; @@ -63,24 +62,10 @@ tree ridpointers[(int) RID_MAX]; #define YYDEBUG 1 #if USE_CPPLIB -static unsigned char *yy_cur, *yy_lim; - -int -yy_get_token () -{ - for (;;) - { - parse_in.limit = parse_in.token_buffer; - cpp_token = cpp_get_token (&parse_in); - if (cpp_token == CPP_EOF) - return -1; - yy_lim = CPP_PWRITTEN (&parse_in); - yy_cur = parse_in.token_buffer; - if (yy_cur < yy_lim) - return *yy_cur++; - } -} - +extern unsigned char *yy_cur, *yy_lim; + +extern int yy_get_token (); + #define GETC() (yy_cur < yy_lim ? *yy_cur++ : yy_get_token ()) #define UNGETC(c) ((c), yy_cur--) #else @@ -498,88 +483,6 @@ extend_token_buffer (p) return token_buffer + offset; } -#if !USE_CPPLIB -#define GET_DIRECTIVE_LINE() get_directive_line (finput) -#else /* USE_CPPLIB */ -/* Read the rest of a #-directive from input stream FINPUT. - In normal use, the directive name and the white space after it - have already been read, so they won't be included in the result. - We allow for the fact that the directive line may contain - a newline embedded within a character or string literal which forms - a part of the directive. - - The value is a string in a reusable buffer. It remains valid - only until the next time this function is called. */ - -static char * -GET_DIRECTIVE_LINE () -{ - static char *directive_buffer = NULL; - static unsigned buffer_length = 0; - register char *p; - register char *buffer_limit; - register int looking_for = 0; - register int char_escaped = 0; - - if (buffer_length == 0) - { - directive_buffer = (char *)xmalloc (128); - buffer_length = 128; - } - - buffer_limit = &directive_buffer[buffer_length]; - - for (p = directive_buffer; ; ) - { - int c; - - /* Make buffer bigger if it is full. */ - if (p >= buffer_limit) - { - register unsigned bytes_used = (p - directive_buffer); - - buffer_length *= 2; - directive_buffer - = (char *)xrealloc (directive_buffer, buffer_length); - p = &directive_buffer[bytes_used]; - buffer_limit = &directive_buffer[buffer_length]; - } - - c = GETC (); - - /* Discard initial whitespace. */ - if ((c == ' ' || c == '\t') && p == directive_buffer) - continue; - - /* Detect the end of the directive. */ - if (c == '\n' && looking_for == 0) - { - UNGETC (c); - c = '\0'; - } - - *p++ = c; - - if (c == 0) - return directive_buffer; - - /* Handle string and character constant syntax. */ - if (looking_for) - { - if (looking_for == c && !char_escaped) - looking_for = 0; /* Found terminator... stop looking. */ - } - else - if (c == '\'' || c == '"') - looking_for = c; /* Don't stop buffering until we see another - one of these (or an EOF). */ - - /* Handle backslash. */ - char_escaped = (c == '\\' && ! char_escaped); - } -} -#endif /* USE_CPPLIB */ - /* At the beginning of a line, increment the line number and process any #-directive on this line. If the line is a #-directive, read the entire line and return a newline. |