From 085a61df2ebe26f9555188c452501ecbf349f887 Mon Sep 17 00:00:00 2001 From: Michael Gran Date: Sun, 10 Jan 2010 15:39:55 -0800 Subject: [PATCH] Add R6RS backslash string escape R6RS suggests that '\b' should be a string escape for the backslash 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 --- doc/ref/api-data.texi | 3 +++ libguile/read.c | 3 +++ test-suite/tests/strings.test | 8 ++++++-- 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?