diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2007-06-08 04:49:23 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2007-06-08 04:49:23 +0000 |
commit | a88a266ccad495e5bb45d510076eea36fe3feaa1 (patch) | |
tree | 6229751b4eb48bff54ae9a9b30558a48f65b4177 /gcc/fortran/match.c | |
parent | 294e1a5bf10e457c966278bba233d6cea29e3e04 (diff) | |
download | gcc-a88a266ccad495e5bb45d510076eea36fe3feaa1.zip gcc-a88a266ccad495e5bb45d510076eea36fe3feaa1.tar.gz gcc-a88a266ccad495e5bb45d510076eea36fe3feaa1.tar.bz2 |
re PR fortran/32223 (Backslash handling inconsistent)
2007-06-07 Steven G. Kargl <kargl@gcc.gnu.org>
Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/32223
* match.c (gfc_match_special_char): New function. Match special char.
Add handling '\0'.
* match.h: Add prototype.
* io.c (next_char): Use it.
* primary.c (next_string_char): Ditto.
Co-Authored-By: Jerry DeLisle <jvdelisle@gcc.gnu.org>
From-SVN: r125557
Diffstat (limited to 'gcc/fortran/match.c')
-rw-r--r-- | gcc/fortran/match.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 0f99a52..e544d6d 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -64,6 +64,56 @@ mstring intrinsic_operators[] = { /******************** Generic matching subroutines ************************/ +/* See if the next character is a special character that has + escaped by a \ via the -fbackslash option. */ + +match +gfc_match_special_char (int *c) +{ + + match m; + + m = MATCH_YES; + + switch (gfc_next_char_literal (1)) + { + case 'a': + *c = '\a'; + break; + case 'b': + *c = '\b'; + break; + case 't': + *c = '\t'; + break; + case 'f': + *c = '\f'; + break; + case 'n': + *c = '\n'; + break; + case 'r': + *c = '\r'; + break; + case 'v': + *c = '\v'; + break; + case '\\': + *c = '\\'; + break; + case '0': + *c = '\0'; + break; + default: + /* Unknown backslash codes are simply not expanded. */ + m = MATCH_NO; + break; + } + + return m; +} + + /* In free form, match at least one space. Always matches in fixed form. */ |