From 36737ae57ee106be16426bf9ef088380421ca0ec Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Mon, 3 Nov 2014 21:19:13 -0600 Subject: R: add hash-map and metadata support. --- r/reader.r | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'r/reader.r') diff --git a/r/reader.r b/r/reader.r index 26c80c9..780dd4d 100644 --- a/r/reader.r +++ b/r/reader.r @@ -89,6 +89,13 @@ read_form <- function(rdr) { } else if (token == "~@") { . <- Reader.next(rdr); new.list(new.symbol("splice-unquote"), read_form(rdr)) + } else if (token == "^") { + . <- Reader.next(rdr) + m <- read_form(rdr) + new.list(new.symbol("with-meta"), read_form(rdr), m) + } else if (token == "@") { + . <- Reader.next(rdr); + new.list(new.symbol("deref"), read_form(rdr)) } else if (token == ")") { throw("unexpected ')'") } else if (token == "(") { @@ -97,6 +104,10 @@ read_form <- function(rdr) { throw("unexpected ']'") } else if (token == "[") { new.vectorl(read_seq(rdr, "[", "]")) + } else if (token == "}") { + throw("unexpected '}'") + } else if (token == "{") { + new.hash_mapl(read_seq(rdr, "{", "}")) } else { read_atom(rdr) } -- cgit v1.2.3