1 function step2_eval
(varargin), main
(varargin), end
4 function ret
= READ
(str
)
5 ret
= reader.read_str
(str
);
9 function ret
= eval_ast
(ast
, env
)
16 ret.append
(EVAL(ast.
get(i
), env
));
21 ret.append
(EVAL(ast.
get(i
), env
));
24 ret
= types.HashMap
();
28 ret.
set(EVAL(k
, env
), EVAL(ast.
get(k
), env
));
35 function ret
= EVAL(ast
, env
)
37 ret
= eval_ast
(ast
, env
);
42 el
= eval_ast
(ast
, env
);
44 args
= el.data
(2:end);
49 function ret
= PRINT(ast
)
50 ret
= printer.pr_str
(ast
, true
);
54 function ret
= rep
(str
, env
)
55 ret
= PRINT(EVAL(READ
(str
), env
));
59 repl_env
= containers.Map
();
60 repl_env
('+') = @
(a
,b
) a
+b
;
61 repl_env
('-') = @
(a
,b
) a
-b
;
62 repl_env
('*') = @
(a
,b
) a
*b
;
63 repl_env
('/') = @
(a
,b
) floor(a
/b
);
65 %cleanObj = onCleanup(@() disp('*** here1 ***'));
67 line = input('user> ', 's');
68 if strcmp(strtrim
(line),''), continue
, end
70 fprintf('%s\n', rep
(line, repl_env
));
72 fprintf('Error: %s\n', err.message
);
73 fprintf('%s\n', getReport
(err
, 'extended'));