aboutsummaryrefslogtreecommitdiff
path: root/ocaml/reader.ml
diff options
context:
space:
mode:
Diffstat (limited to 'ocaml/reader.ml')
-rw-r--r--ocaml/reader.ml10
1 files changed, 9 insertions, 1 deletions
diff --git a/ocaml/reader.ml b/ocaml/reader.ml
index 58e72fe..c452e05 100644
--- a/ocaml/reader.ml
+++ b/ocaml/reader.ml
@@ -54,10 +54,18 @@ and read_form all_tokens =
| "`" -> read_quote "quasiquote" tokens
| "~" -> read_quote "unquote" tokens
| "~@" -> read_quote "splice-unquote" tokens
- | "[" | "(" | "{" -> let list_reader =
+ | "(" -> let list_reader =
read_list {list_form = []; tokens = tokens} in
{form = Types.List list_reader.list_form;
tokens = list_reader.tokens}
+ | "{" -> let list_reader =
+ read_list {list_form = []; tokens = tokens} in
+ {form = Types.Map list_reader.list_form;
+ tokens = list_reader.tokens}
+ | "[" -> let list_reader =
+ read_list {list_form = []; tokens = tokens} in
+ {form = Types.Vector list_reader.list_form;
+ tokens = list_reader.tokens}
| _ -> {form = read_atom token; tokens = tokens}
let read_str str = (read_form (List.filter ((<>) "") (find_re token_re str))).form