aboutsummaryrefslogtreecommitdiff
path: root/r/reader.r
diff options
context:
space:
mode:
authorJoel Martin <github@martintribe.org>2014-11-02 21:32:33 -0600
committerJoel Martin <github@martintribe.org>2015-01-09 16:16:43 -0600
commit01feedfe22a381c6b6ca79bdf0db798aa08c4104 (patch)
treeacee75da927f3d4234f7433801584ca750502a9f /r/reader.r
parent4d1456b98f34bfa74aea912469aa246b56273d76 (diff)
downloadmal-01feedfe22a381c6b6ca79bdf0db798aa08c4104.tar.gz
mal-01feedfe22a381c6b6ca79bdf0db798aa08c4104.zip
R: add step4_if_fn_do and step5_tco.
Switch nil from NULL to special class.
Diffstat (limited to 'r/reader.r')
-rw-r--r--r/reader.r8
1 files changed, 5 insertions, 3 deletions
diff --git a/r/reader.r b/r/reader.r
index d2ab486..46a3cdf 100644
--- a/r/reader.r
+++ b/r/reader.r
@@ -41,9 +41,11 @@ read_atom <- function(rdr) {
if (re_match("^-?[0-9][0-9.]*$", token)) {
as.numeric(token)
} else if (substr(token,1,1) == "\"") {
- substr(token, 2, nchar(token)-1)
+ gsub("\\\\n", "\\n",
+ gsub("\\\\\"", "\"",
+ substr(token, 2, nchar(token)-1)))
} else if (token == "nil") {
- NULL
+ nil
} else if (token == "true") {
TRUE
} else if (token == "false") {
@@ -88,7 +90,7 @@ read_form <- function(rdr) {
read_str <- function(str) {
tokens <- tokenize(str)
- if (length(tokens) == 0) return(NULL)
+ if (length(tokens) == 0) return(nil)
return(read_form(new.Reader(tokens)))
}