diff options
author | Zack Weinberg <zack@wolery.cumb.org> | 2000-05-18 15:55:46 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2000-05-18 15:55:46 +0000 |
commit | 15dad1d9085624c3bce83e0fa0d9b2764f65bccb (patch) | |
tree | eae8b6ec3c589f4957c72e8c82be5c3cc2ea4bbf /gcc/cpplib.h | |
parent | 7021bb50d4366bf1630d5a685704d0118b06621a (diff) | |
download | gcc-15dad1d9085624c3bce83e0fa0d9b2764f65bccb.zip gcc-15dad1d9085624c3bce83e0fa0d9b2764f65bccb.tar.gz gcc-15dad1d9085624c3bce83e0fa0d9b2764f65bccb.tar.bz2 |
cppexp.c (parse_assertion): New.
* cppexp.c (parse_assertion): New.
(lex): Call it for CPP_HASH. Remove CPP_ASSERTION case.
(_cpp_parse_expr): Remove case '#'. Don't set
parsing_if_directive.
* cpphash.c (collect_objlike_expansion,
collect_funlike_expansion, collect_params,
_cpp_create_definition): The list no longer has a trailing
VSPACE token.
* cpphash.h (enum node_type): Add T_ASSERTION.
(struct hashnode): Remove aschain, add pred.
(struct predicate): New.
Update prototypes.
* cpplex.c (expand_token_space): Handle both offset and
nonoffset lists.
(init_token_list, _cpp_free_token_list, _cpp_parse_assertion): Delete.
(_cpp_init_toklist, _cpp_clear_toklist, _cpp_free_toklist,
_cpp_slice_toklist, _cpp_squeeze_toklist, _cpp_equiv_tokens,
_cpp_equiv_toklists): New.
(_cpp_scan_line): Rename to _cpp_scan_until; add ability to
stop at any single-character token, not just newline.
(_cpp_lex_token): Remove special cases for #define and #if.
(cpp_get_token): Expect # as a separate token type. Remove
DIRECTIVE case.
(_cpp_get_directive_token): Remove DIRECTIVE case.
(_cpp_lex_line, _cpp_lex_file, _cpp_init_input_buffer): Update.
* cpplib.c (_cpp_check_directive): Set dirno and
SYNTAX_INCLUDE bit of flags, not dir_handler and dir_flags.
(_cpp_handle_directive): Run # <number> through the same logic
as normal directives.
(do_define): Don't set parsing_define_directive. Use
_cpp_scan_until. The list does not have a VSPACE at the end.
(do_if): Save, clear, and restore only_seen_white around
_cpp_parse_expr.
(skip_if_group): s/CPP_DIRECTIVE/CPP_HASH/
(do_assert, do_unassert): Rewrite.
* cpplib.h (TTYPE_TABLE): Remove CPP_ASSERTION.
(LIST_OFFSET): New flag.
(struct cpp_toklist): Replace dir_handler and dir_flags with
dirno and flags.
(struct cpp_reader): Remove parsing_if_directive and
parsing_define_directive.
From-SVN: r33984
Diffstat (limited to 'gcc/cpplib.h')
-rw-r--r-- | gcc/cpplib.h | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/gcc/cpplib.h b/gcc/cpplib.h index a46ada3..6ecab52 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -124,7 +124,6 @@ typedef struct cpp_name cpp_name; T(CPP_VSPACE, "\n") /* End of line. */ \ N(CPP_EOF, 0) /* End of file. */ \ N(CPP_HEADER_NAME, 0) /* <stdio.h> in #include */ \ - N(CPP_ASSERTION, 0) /* (...) in #assert */ \ \ /* Obsolete - will be removed when no code uses them still. */ \ N(CPP_HSPACE, 0) /* Horizontal white space. */ \ @@ -189,6 +188,9 @@ struct cpp_token } val; }; +/* General flags. */ +#define LIST_OFFSET (1 << 0) + /* Directive flags. */ #define SYNTAX_INCLUDE (1 << 8) @@ -211,12 +213,12 @@ struct cpp_toklist unsigned int comments_used; /* comment tokens used. */ unsigned int comments_cap; /* comment token capacity. */ - /* Only used if tokens[0].type == CPP_DIRECTIVE. This is the - handler to call after lexing the rest of this line. The flags - indicate whether the rest of the line gets special treatment - during lexing (#include, #if, #assert, #unassert). */ - directive_handler dir_handler; - unsigned short dir_flags; + /* The handler to call after lexing the rest of this line. + -1 for none */ + short dirno; + + /* Per-list flags, see above */ + unsigned short flags; }; struct cpp_buffer @@ -544,12 +546,6 @@ struct cpp_reader /* If true, characters between '<' and '>' are a single (string) token. */ unsigned char parsing_include_directive; - /* If true, # introduces an assertion (see do_assert) */ - unsigned char parsing_if_directive; - - /* If true, # and ## are the STRINGIZE and TOKPASTE operators */ - unsigned char parsing_define_directive; - /* True if escape sequences (as described for has_escapes in parse_buffer) should be emitted. */ unsigned char output_escapes; |