diff options
| author | Joel Martin <github@martintribe.org> | 2014-11-03 21:19:13 -0600 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2015-01-09 16:16:44 -0600 |
| commit | 36737ae57ee106be16426bf9ef088380421ca0ec (patch) | |
| tree | d3c405f95ccf63ab3897a4f17566bcc149cd7bf3 /r/reader.r | |
| parent | 8128c69a1da03d3b8d62defb4533c3e3ae706682 (diff) | |
| download | mal-36737ae57ee106be16426bf9ef088380421ca0ec.tar.gz mal-36737ae57ee106be16426bf9ef088380421ca0ec.zip | |
R: add hash-map and metadata support.
Diffstat (limited to 'r/reader.r')
| -rw-r--r-- | r/reader.r | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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) } |
