matlab: add step8
[jackhill/mal.git] / matlab / reader.m
index 8c752c9..968e5a1 100644 (file)
@@ -14,7 +14,10 @@ classdef reader
                 atm = str2double(token);
             elseif strcmp(token(1), '"')
                 atm = token(2:length(token)-1);
-            %else if token eq 'nil'
+                atm = strrep(atm, '\"', '"');
+                atm = strrep(atm, '\n', char(10));
+            elseif strcmp(token, 'nil')
+                atm = types.nil;
             elseif strcmp(token, 'true')
                 atm = true;
             elseif strcmp(token, 'false')
@@ -46,7 +49,19 @@ classdef reader
         function ast = read_form(rdr)
             %fprintf('in read_form\n');
             token = rdr.peek();
-            switch token(1)
+            switch token
+            case ''''
+                rdr.next();
+                ast = {types.Symbol('quote'), reader.read_form(rdr)};
+            case '`'
+                rdr.next();
+                ast = {types.Symbol('quasiquote'), reader.read_form(rdr)};
+            case '~'
+                rdr.next();
+                ast = {types.Symbol('unquote'), reader.read_form(rdr)};
+            case '~@'
+                rdr.next();
+                ast = {types.Symbol('splice-unquote'), reader.read_form(rdr)};
             case ')'
                 error('unexpected '')''');
             case '('