diff options
author | Zack Weinberg <zack@wolery.cumb.org> | 2000-03-13 22:01:08 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2000-03-13 22:01:08 +0000 |
commit | 45b966db65e4ab054d31f01f65b7a98023dbcb54 (patch) | |
tree | 665428b0af6694941ce92f0755dc66596d94fa55 /gcc/cppexp.c | |
parent | 46089b8642e5054073af90a85cfdd07f0f09353b (diff) | |
download | gcc-45b966db65e4ab054d31f01f65b7a98023dbcb54.zip gcc-45b966db65e4ab054d31f01f65b7a98023dbcb54.tar.gz gcc-45b966db65e4ab054d31f01f65b7a98023dbcb54.tar.bz2 |
Makefile.in (LIBCPP_OBJS): Add cpplex.o.
* Makefile.in (LIBCPP_OBJS): Add cpplex.o.
(cpplex.o): New target.
* po/POTFILES.in: Add cpplex.c.
* cpplex.c (_cpp_grow_token_buffer, null_cleanup,
cpp_push_buffer, cpp_pop_buffer, cpp_scan_buffer,
cpp_expand_to_buffer, cpp_buf_line_and_col, cpp_file_buffer,
skip_block_comment, skip_line_comment, skip_comment,
copy_comment, _cpp_skip_hspace, _cpp_skip_rest_of_line,
_cpp_parse_name, skip_string, parse_string,
_cpp_parse_assertion, cpp_get_token, cpp_get_non_space_token,
_cpp_get_directive_token, find_position,
_cpp_read_and_prescan, _cpp_init_input_buffer): Move here.
(maybe_macroexpand, _cpp_lex_token): New functions.
* cpplib.c (SKIP_WHITE_SPACE, eval_if_expr, parse_set_mark,
parse_goto_mark): Delete.
(_cpp_handle_eof): New function.
(_cpp_handle_directive): Rename from handle_directive.
(_cpp_output_line_command): Rename from output_line_command.
(do_if, do_elif): Call _cpp_parse_expr directly.
* cppfiles.c (_cpp_read_include_file): Don't call
init_input_buffer here.
* cpphash.c (quote_string): Move here, rename _cpp_quote_string.
* cppexp.c (_cpp_parse_expr): Diddle parsing_if_directive
here; pop the token_buffer and skip the rest of the line here.
* cppinit.c (cpp_start_read): Call _cpp_init_input_buffer
here.
* cpphash.h (CPP_RESERVE, CPP_IS_MACRO_BUFFER, ACTIVE_MARK_P):
Define here.
(CPP_SET_BUF_MARK, CPP_GOTO_BUF_MARK, CPP_SET_MARK,
CPP_GOTO_MARK): New macros.
(_cpp_quote_string, _cpp_parse_name, _cpp_skip_rest_of_line,
_cpp_skip_hspace, _cpp_parse_assertion, _cpp_lex_token,
_cpp_read_and_prescan, _cpp_init_input_buffer,
_cpp_grow_token_buffer, _cpp_get_directive_token,
_cpp_handle_directive, _cpp_handle_eof,
_cpp_output_line_command): Prototype them here.
* cpplib.h (enum cpp_token): Add CPP_MACRO.
(CPP_RESERVE, get_directive_token, cpp_grow_buffer,
quote_string, output_line_command): Remove.
From-SVN: r32513
Diffstat (limited to 'gcc/cppexp.c')
-rw-r--r-- | gcc/cppexp.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/gcc/cppexp.c b/gcc/cppexp.c index bb2ae7a..4d1cf10 100644 --- a/gcc/cppexp.c +++ b/gcc/cppexp.c @@ -352,12 +352,12 @@ parse_defined (pfile) op.op = INT; pfile->no_macro_expand++; - token = get_directive_token (pfile); + token = _cpp_get_directive_token (pfile); if (token == CPP_LPAREN) { paren++; CPP_SET_WRITTEN (pfile, old_written); - token = get_directive_token (pfile); + token = _cpp_get_directive_token (pfile); } if (token != CPP_NAME) @@ -369,7 +369,7 @@ parse_defined (pfile) if (paren) { - if (get_directive_token (pfile) != CPP_RPAREN) + if (_cpp_get_directive_token (pfile) != CPP_RPAREN) goto oops; } CPP_SET_WRITTEN (pfile, old_written); @@ -419,7 +419,7 @@ lex (pfile, skip_evaluation) long old_written; old_written = CPP_WRITTEN (pfile); - token = get_directive_token (pfile); + token = _cpp_get_directive_token (pfile); tok_start = pfile->token_buffer + old_written; tok_end = CPP_PWRITTEN (pfile); @@ -689,7 +689,10 @@ _cpp_parse_expr (pfile) register struct operation *top = stack; unsigned int lprio, rprio = 0; int skip_evaluation = 0; + long old_written = CPP_WRITTEN (pfile); + int result; + pfile->parsing_if_directive++; top->rprio = 0; top->flags = 0; for (;;) @@ -999,9 +1002,8 @@ _cpp_parse_expr (pfile) { if (top != stack) cpp_ice (pfile, "unbalanced stack in #if expression"); - if (stack != init_stack) - free (stack); - return (top->value != 0); + result = (top->value != 0); + goto done; } top++; @@ -1041,7 +1043,12 @@ _cpp_parse_expr (pfile) } } syntax_error: + _cpp_skip_rest_of_line (pfile); + result = 0; + done: + pfile->parsing_if_directive--; + CPP_SET_WRITTEN (pfile, old_written); if (stack != init_stack) free (stack); - return 0; + return result; } |