summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Gran <spk121@yahoo.com>2010-01-10 15:41:37 -0800
committerMichael Gran <spk121@yahoo.com>2010-01-10 15:41:37 -0800
commit67a4a16d8e4418f0525b580c157c1295ca1563fc (patch)
tree7c617600a82087fd4e61e94064c0a7e1acbcdfb5
parent15b6a6b284f00fa790ef003a9df8c8ae5a4d7d6a (diff)
downloadguile-67a4a16d8e4418f0525b580c157c1295ca1563fc.tar.gz
Add R6RS backspace string escape
R6RS suggests that '\b' should be a string escape for the backspace character. * libguile/read.c (scm_read_string): parse backspace escape * test-suite/tests/strings.test (R6RS backslash escapes): new test (Guile extensions backslash escapes): remove R6RS escapes from test. * doc/ref/api-data.texi (Strings): document new string escape
-rwxr-xr-xdoc/ref/api-data.texi3
-rw-r--r--libguile/read.c3
-rw-r--r--test-suite/tests/strings.test8
3 files changed, 12 insertions, 2 deletions
diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
index 3fc34c28f..bf25c5981 100755
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -2649,6 +2649,9 @@ Tab character (ASCII 9).
@item @nicode{\v}
Vertical tab character (ASCII 11).
+@item @nicode{\b}
+Backspace character (ASCII 8).
+
@item @nicode{\xHH}
Character code given by two hexadecimal digits. For example
@nicode{\x7f} for an ASCII DEL (127).
diff --git a/libguile/read.c b/libguile/read.c
index dedfed2fe..25aed5458 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -477,6 +477,9 @@ scm_read_string (int chr, SCM port)
case 'v':
c = '\v';
break;
+ case 'b':
+ c = '\010';
+ break;
case 'x':
{
scm_t_wchar a, b;
diff --git a/test-suite/tests/strings.test b/test-suite/tests/strings.test
index 984178d72..e04c0260d 100644
--- a/test-suite/tests/strings.test
+++ b/test-suite/tests/strings.test
@@ -221,9 +221,13 @@
(pass-if "R5RS backslash escapes"
(string=? "\"\\" (string #\" #\\)))
+ (pass-if "R6RS backslash escapes"
+ (string=? "\a\b\t\n\v\f\r"
+ (string #\alarm #\backspace #\tab #\newline #\vtab
+ #\page #\return)))
+
(pass-if "Guile extensions backslash escapes"
- (string=? "\0\a\f\n\r\t\v"
- (apply string (map integer->char '(0 7 12 10 13 9 11))))))
+ (string=? "\0" (string #\nul))))
;;
;; string?