diff options
author | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-11 08:58:28 +0000 |
---|---|---|
committer | neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-11 08:58:28 +0000 |
commit | 27fdc0b6702eeddad8825b45a4a38e05caa56f0d (patch) | |
tree | 34bafa80cd73a9004dc7444f72a7555fb0602318 /gcc | |
parent | 73d6b89357b894ad376e38ba81993a9ac7aeb4a5 (diff) | |
download | ppe42-gcc-27fdc0b6702eeddad8825b45a4a38e05caa56f0d.tar.gz ppe42-gcc-27fdc0b6702eeddad8825b45a4a38e05caa56f0d.zip |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34956 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/cppinit.c | 21 | ||||
-rw-r--r-- | gcc/cpplex.c | 60 | ||||
-rw-r--r-- | gcc/cpplib.h | 3 |
4 files changed, 60 insertions, 35 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4232e8be484..df3a1c3c73e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 88a3e8ccaf8..db8b6e92c76 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -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); diff --git a/gcc/cpplex.c b/gcc/cpplex.c index 951f633b2a4..d75c1e3b922 100644 --- a/gcc/cpplex.c +++ b/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; diff --git a/gcc/cpplib.h b/gcc/cpplib.h index 2868a5bbe62..8db8c51f73d 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -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. */ |