cppinit.c: (cpp_reader_init): Allow digraphs by default.
* cppinit.c: (cpp_reader_init): Allow digraphs by default. (handle_option): Set digraphs according to standard. Merge OPT_lang_c89 handler with OPT_std_c89. * cpplex.c: (lex_line, can_paste): Honour digraphs in accordance with the digraphs flag. * cpplib.h: (struct cpp_options): New option digraphs. From-SVN: r34956
This commit is contained in:
parent
bb6a53c76b
commit
9b55f29a84
|
@ -1,3 +1,14 @@
|
|||
2000-07-11 Neil Booth <NeilB@earthling.net>
|
||||
|
||||
* cppinit.c: (cpp_reader_init): Allow digraphs by default.
|
||||
(handle_option): Set digraphs according to standard.
|
||||
Merge OPT_lang_c89 handler with OPT_std_c89.
|
||||
|
||||
* cpplex.c: (lex_line, can_paste): Honour digraphs in
|
||||
accordance with the digraphs flag.
|
||||
|
||||
* cpplib.h: (struct cpp_options): New option digraphs.
|
||||
|
||||
2000-07-10 Hans-Peter Nilsson <hp@axis.com>
|
||||
Bruce Korb <bkorb@gnu.org>
|
||||
|
||||
|
|
|
@ -418,6 +418,7 @@ cpp_reader_init (pfile)
|
|||
CPP_OPTION (pfile, cplusplus_comments) = 1;
|
||||
CPP_OPTION (pfile, warn_import) = 1;
|
||||
CPP_OPTION (pfile, warn_paste) = 1;
|
||||
CPP_OPTION (pfile, digraphs) = 1;
|
||||
CPP_OPTION (pfile, discard_comments) = 1;
|
||||
CPP_OPTION (pfile, show_column) = 1;
|
||||
CPP_OPTION (pfile, tabstop) = 8;
|
||||
|
@ -1270,6 +1271,7 @@ handle_option (pfile, argc, argv)
|
|||
CPP_OPTION (pfile, traditional) = 1;
|
||||
CPP_OPTION (pfile, cplusplus_comments) = 0;
|
||||
CPP_OPTION (pfile, trigraphs) = 0;
|
||||
CPP_OPTION (pfile, digraphs) = 0;
|
||||
CPP_OPTION (pfile, warn_trigraphs) = 0;
|
||||
break;
|
||||
case OPT_trigraphs:
|
||||
|
@ -1291,23 +1293,16 @@ handle_option (pfile, argc, argv)
|
|||
CPP_OPTION (pfile, cplusplus_comments) = 1;
|
||||
CPP_OPTION (pfile, c89) = 0;
|
||||
CPP_OPTION (pfile, c99) = 1;
|
||||
CPP_OPTION (pfile, digraphs) = 1;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
break;
|
||||
case OPT_lang_c89:
|
||||
CPP_OPTION (pfile, cplusplus) = 0;
|
||||
CPP_OPTION (pfile, cplusplus_comments) = 0;
|
||||
CPP_OPTION (pfile, c89) = 1;
|
||||
CPP_OPTION (pfile, c99) = 0;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
CPP_OPTION (pfile, trigraphs) = 1;
|
||||
new_pending_directive (pend, "__STRICT_ANSI__", cpp_define);
|
||||
break;
|
||||
case OPT_lang_cplusplus:
|
||||
CPP_OPTION (pfile, cplusplus) = 1;
|
||||
CPP_OPTION (pfile, cplusplus_comments) = 1;
|
||||
CPP_OPTION (pfile, c89) = 0;
|
||||
CPP_OPTION (pfile, c99) = 0;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
CPP_OPTION (pfile, digraphs) = 1;
|
||||
new_pending_directive (pend, "__cplusplus", cpp_define);
|
||||
break;
|
||||
case OPT_lang_objcplusplus:
|
||||
|
@ -1353,6 +1348,7 @@ handle_option (pfile, argc, argv)
|
|||
CPP_OPTION (pfile, c89) = 1;
|
||||
CPP_OPTION (pfile, c99) = 0;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
CPP_OPTION (pfile, digraphs) = 1;
|
||||
break;
|
||||
case OPT_std_gnu9x:
|
||||
case OPT_std_gnu99:
|
||||
|
@ -1360,6 +1356,7 @@ handle_option (pfile, argc, argv)
|
|||
CPP_OPTION (pfile, cplusplus_comments) = 1;
|
||||
CPP_OPTION (pfile, c89) = 0;
|
||||
CPP_OPTION (pfile, c99) = 1;
|
||||
CPP_OPTION (pfile, digraphs) = 1;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
new_pending_directive (CPP_OPTION (pfile, pending),
|
||||
"__STDC_VERSION__=199901L", cpp_define);
|
||||
|
@ -1370,14 +1367,15 @@ handle_option (pfile, argc, argv)
|
|||
/* Fall through */
|
||||
case OPT_std_iso9899_1990:
|
||||
case OPT_std_c89:
|
||||
case OPT_lang_c89:
|
||||
CPP_OPTION (pfile, cplusplus) = 0;
|
||||
CPP_OPTION (pfile, cplusplus_comments) = 0;
|
||||
CPP_OPTION (pfile, c89) = 1;
|
||||
CPP_OPTION (pfile, c99) = 0;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
CPP_OPTION (pfile, digraphs) = opt_code == OPT_std_iso9899_199409;
|
||||
CPP_OPTION (pfile, trigraphs) = 1;
|
||||
new_pending_directive (CPP_OPTION (pfile, pending),
|
||||
"__STRICT_ANSI__", cpp_define);
|
||||
new_pending_directive (pend, "__STRICT_ANSI__", cpp_define);
|
||||
break;
|
||||
case OPT_std_iso9899_199x:
|
||||
case OPT_std_iso9899_1999:
|
||||
|
@ -1388,6 +1386,7 @@ handle_option (pfile, argc, argv)
|
|||
CPP_OPTION (pfile, c89) = 0;
|
||||
CPP_OPTION (pfile, c99) = 1;
|
||||
CPP_OPTION (pfile, objc) = 0;
|
||||
CPP_OPTION (pfile, digraphs) = 1;
|
||||
CPP_OPTION (pfile, trigraphs) = 1;
|
||||
new_pending_directive (CPP_OPTION (pfile, pending),
|
||||
"__STRICT_ANSI__", cpp_define);
|
||||
|
|
60
gcc/cpplex.c
60
gcc/cpplex.c
|
@ -24,7 +24,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
|||
|
||||
Cleanups to do:-
|
||||
|
||||
o Get use of digraphs in sync with the standard reqd on the command line.
|
||||
o -dM and with _cpp_dump_list: too many \n output.
|
||||
o Put a printer object in cpp_reader?
|
||||
o Check line numbers assigned to all errors.
|
||||
|
@ -1572,14 +1571,17 @@ lex_line (pfile, list)
|
|||
if (PREV_TOKEN_TYPE == CPP_COLON
|
||||
&& CPP_OPTION (pfile, cplusplus))
|
||||
BACKUP_TOKEN (CPP_SCOPE);
|
||||
/* Digraph: "<:" is a '[' */
|
||||
else if (PREV_TOKEN_TYPE == CPP_LESS)
|
||||
BACKUP_DIGRAPH (CPP_OPEN_SQUARE);
|
||||
/* Digraph: "%:" is a '#' */
|
||||
else if (PREV_TOKEN_TYPE == CPP_MOD)
|
||||
else if (CPP_OPTION (pfile, digraphs))
|
||||
{
|
||||
(--cur_token)->flags |= DIGRAPH;
|
||||
goto make_hash;
|
||||
/* Digraph: "<:" is a '[' */
|
||||
if (PREV_TOKEN_TYPE == CPP_LESS)
|
||||
BACKUP_DIGRAPH (CPP_OPEN_SQUARE);
|
||||
/* Digraph: "%:" is a '#' */
|
||||
else if (PREV_TOKEN_TYPE == CPP_MOD)
|
||||
{
|
||||
(--cur_token)->flags |= DIGRAPH;
|
||||
goto make_hash;
|
||||
}
|
||||
}
|
||||
}
|
||||
cur_token++;
|
||||
|
@ -1623,12 +1625,15 @@ lex_line (pfile, list)
|
|||
BACKUP_TOKEN (CPP_RSHIFT);
|
||||
else if (PREV_TOKEN_TYPE == CPP_MINUS)
|
||||
BACKUP_TOKEN (CPP_DEREF);
|
||||
/* Digraph: ":>" is a ']' */
|
||||
else if (PREV_TOKEN_TYPE == CPP_COLON)
|
||||
BACKUP_DIGRAPH (CPP_CLOSE_SQUARE);
|
||||
/* Digraph: "%>" is a '}' */
|
||||
else if (PREV_TOKEN_TYPE == CPP_MOD)
|
||||
BACKUP_DIGRAPH (CPP_CLOSE_BRACE);
|
||||
else if (CPP_OPTION (pfile, digraphs))
|
||||
{
|
||||
/* Digraph: ":>" is a ']' */
|
||||
if (PREV_TOKEN_TYPE == CPP_COLON)
|
||||
BACKUP_DIGRAPH (CPP_CLOSE_SQUARE);
|
||||
/* Digraph: "%>" is a '}' */
|
||||
else if (PREV_TOKEN_TYPE == CPP_MOD)
|
||||
BACKUP_DIGRAPH (CPP_CLOSE_BRACE);
|
||||
}
|
||||
}
|
||||
cur_token++;
|
||||
break;
|
||||
|
@ -1652,7 +1657,8 @@ lex_line (pfile, list)
|
|||
case '%':
|
||||
/* Digraph: "<%" is a '{' */
|
||||
cur_token->type = CPP_MOD;
|
||||
if (IMMED_TOKEN () && PREV_TOKEN_TYPE == CPP_LESS)
|
||||
if (IMMED_TOKEN () && PREV_TOKEN_TYPE == CPP_LESS
|
||||
&& CPP_OPTION (pfile, digraphs))
|
||||
BACKUP_DIGRAPH (CPP_OPEN_BRACE);
|
||||
cur_token++;
|
||||
break;
|
||||
|
@ -2421,10 +2427,13 @@ can_paste (pfile, token1, token2, digraph)
|
|||
if (b == a) return CPP_LSHIFT;
|
||||
if (b == CPP_QUERY && cxx) return CPP_MIN;
|
||||
if (b == CPP_LESS_EQ) return CPP_LSHIFT_EQ;
|
||||
if (b == CPP_COLON)
|
||||
{*digraph = 1; return CPP_OPEN_SQUARE;} /* <: digraph */
|
||||
if (b == CPP_MOD)
|
||||
{*digraph = 1; return CPP_OPEN_BRACE;} /* <% digraph */
|
||||
if (CPP_OPTION (pfile, digraphs))
|
||||
{
|
||||
if (b == CPP_COLON)
|
||||
{*digraph = 1; return CPP_OPEN_SQUARE;} /* <: digraph */
|
||||
if (b == CPP_MOD)
|
||||
{*digraph = 1; return CPP_OPEN_BRACE;} /* <% digraph */
|
||||
}
|
||||
break;
|
||||
|
||||
case CPP_PLUS: if (b == a) return CPP_PLUS_PLUS; break;
|
||||
|
@ -2437,15 +2446,18 @@ can_paste (pfile, token1, token2, digraph)
|
|||
break;
|
||||
case CPP_COLON:
|
||||
if (b == a && cxx) return CPP_SCOPE;
|
||||
if (b == CPP_GREATER)
|
||||
if (b == CPP_GREATER && CPP_OPTION (pfile, digraphs))
|
||||
{*digraph = 1; return CPP_CLOSE_SQUARE;} /* :> digraph */
|
||||
break;
|
||||
|
||||
case CPP_MOD:
|
||||
if (b == CPP_GREATER)
|
||||
{*digraph = 1; return CPP_CLOSE_BRACE;} /* %> digraph */
|
||||
if (b == CPP_COLON)
|
||||
{*digraph = 1; return CPP_HASH;} /* %: digraph */
|
||||
if (CPP_OPTION (pfile, digraphs))
|
||||
{
|
||||
if (b == CPP_GREATER)
|
||||
{*digraph = 1; return CPP_CLOSE_BRACE;} /* %> digraph */
|
||||
if (b == CPP_COLON)
|
||||
{*digraph = 1; return CPP_HASH;} /* %: digraph */
|
||||
}
|
||||
break;
|
||||
case CPP_DEREF:
|
||||
if (b == CPP_MULT && cxx) return CPP_DEREF_STAR;
|
||||
|
|
|
@ -329,6 +329,9 @@ struct cpp_options
|
|||
/* Nonzero means process the ISO trigraph sequences. */
|
||||
unsigned char trigraphs;
|
||||
|
||||
/* Nonzero means process the ISO digraph sequences. */
|
||||
unsigned char digraphs;
|
||||
|
||||
/* Nonzero means print the names of included files rather than the
|
||||
preprocessed output. 1 means just the #include "...", 2 means
|
||||
#include <...> as well. */
|
||||
|
|
Loading…
Reference in New Issue