aboutsummaryrefslogtreecommitdiff
path: root/gcc/cpplib.h
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-05-18 15:55:46 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-05-18 15:55:46 +0000
commit15dad1d9085624c3bce83e0fa0d9b2764f65bccb (patch)
treeeae8b6ec3c589f4957c72e8c82be5c3cc2ea4bbf /gcc/cpplib.h
parent7021bb50d4366bf1630d5a685704d0118b06621a (diff)
downloadgcc-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.h22
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;