diff options
author | Neil Booth <neilb@earthling.net> | 2000-11-08 23:08:07 +0000 |
---|---|---|
committer | Neil Booth <neil@gcc.gnu.org> | 2000-11-08 23:08:07 +0000 |
commit | adb84b4254d23c4ff58f53c4f48971b6cd8395d1 (patch) | |
tree | 2829d58899280886dce9cbba61c7c88422fd36e6 /gcc/cppmacro.c | |
parent | 09ff8283a84ea06073df34b17baad67126f5b68e (diff) | |
download | gcc-adb84b4254d23c4ff58f53c4f48971b6cd8395d1.zip gcc-adb84b4254d23c4ff58f53c4f48971b6cd8395d1.tar.gz gcc-adb84b4254d23c4ff58f53c4f48971b6cd8395d1.tar.bz2 |
Move directive handling into the lexer itself.
* cpplex.c (_cpp_lex_token): Handle directives directly.
In the case of a directive interrupting a function-like
macro invocation, use extra_char since read_ahead is
used to store the '#'. Return a CPP_EOF in this case.
* cppmacro.c (parse_arg): No need to handle CPP_DHASH any more.
(cpp_get_token): Don't handle directives here.
* cpplib.h: Remove CPP_DHASH token type.
From-SVN: r37329
Diffstat (limited to 'gcc/cppmacro.c')
-rw-r--r-- | gcc/cppmacro.c | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c index 24babaf..766a719 100644 --- a/gcc/cppmacro.c +++ b/gcc/cppmacro.c @@ -534,21 +534,6 @@ parse_arg (pfile, arg, var_args) break; else if (result == CPP_EOF) break; /* Error reported by caller. */ - else if (result == CPP_DHASH) - { - /* 6.10.3 paragraph 11: If there are sequences of - preprocessing tokens within the list of arguments that - would otherwise act as preprocessing directives, the - behavior is undefined. - - This implementation will report a hard error, terminate - the macro invocation, and proceed to process the - directive. */ - cpp_error (pfile, "directives may not be used inside a macro argument"); - _cpp_push_token (pfile, token, &pfile->lexer_pos); - result = CPP_EOF; - break; - } } /* Empty arguments become a single placemarker token. */ @@ -1019,16 +1004,6 @@ cpp_get_token (pfile, token) break; continue; } - else if (token->type == CPP_DHASH) - { - /* Handle directives. */ - if (_cpp_handle_directive (pfile, token->flags & PREV_WHITE)) - continue; - /* This is in fact an assembler #. */ - if (pfile->skipping) - continue; - token->type = CPP_HASH; - } /* We are not merging the PREV_WHITE of CPP_PLACEMARKERS. I don't think it really matters. */ else if (pfile->skipping || token->type == CPP_PLACEMARKER) |