From ea81a8087bcd7953b083a2be9db447f75e7ebf56 Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Wed, 2 Apr 2014 22:23:37 -0500 Subject: All: split types into types, env, printer, core. - types: low-level mapping to the implementation language. - core: functions on types that are exposed directly to mal. - printer: implementation called by pr-str, str, prn, println. - env: the environment implementation - Also, unindent all TCO while loops so that the diff of step4 and step5 are minimized. --- js/reader.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'js/reader.js') diff --git a/js/reader.js b/js/reader.js index da51088..f19010d 100644 --- a/js/reader.js +++ b/js/reader.js @@ -40,7 +40,7 @@ function read_atom (reader) { } else if (token === "false") { return false; } else { - return types.symbol(token); // symbol + return types._symbol(token); // symbol } } @@ -66,13 +66,13 @@ function read_list(reader, start, end) { // read vector of tokens function read_vector(reader) { var lst = read_list(reader, '[', ']'); - return types.vector.apply(types.vector, lst); + return types._vector.apply(null, lst); } // read hash-map key/value pairs function read_hash_map(reader) { var lst = read_list(reader, '{', '}'); - return types.hash_map.apply(types.hash_map, lst); + return types._hash_map.apply(null, lst); } function read_form(reader) { @@ -81,18 +81,18 @@ function read_form(reader) { // reader macros/transforms case ';': return null; // Ignore comments case '\'': reader.next(); - return [types.symbol('quote'), read_form(reader)]; + return [types._symbol('quote'), read_form(reader)]; case '`': reader.next(); - return [types.symbol('quasiquote'), read_form(reader)]; + return [types._symbol('quasiquote'), read_form(reader)]; case '~': reader.next(); - return [types.symbol('unquote'), read_form(reader)]; + return [types._symbol('unquote'), read_form(reader)]; case '~@': reader.next(); - return [types.symbol('splice-unquote'), read_form(reader)]; + return [types._symbol('splice-unquote'), read_form(reader)]; case '^': reader.next(); var meta = read_form(reader); - return [types.symbol('with-meta'), read_form(reader), meta]; + return [types._symbol('with-meta'), read_form(reader), meta]; case '@': reader.next(); - return [types.symbol('deref'), read_form(reader)]; + return [types._symbol('deref'), read_form(reader)]; // list case ')': throw new Error("unexpected ')'"); -- cgit v1.2.3