lisp library
This package contains a simple grammar and evaluator for LISP.
The code is reasonably complete to run and evaluate reasonably complex programs from the console and from the web browser.
Functions
dynamic evalString(LispParser parser, Environment env, String script) #
Reads and evaluates a script.
dynamic evalString(LispParser parser, Environment env, String script) { var result = null; for (var cell in parser.parse(script).value) { result = eval(env, cell); } return result; }
dynamic evalArguments(Environment env, args) #
The arguments evaluatation function.
dynamic evalArguments(Environment env, dynamic args) { if (args is Cons) { return new Cons(eval(env, args.head), evalArguments(env, args.tail)); } else { return null; } }
dynamic evalList(Environment env, expr) #
Evaluate a cons of instructions.
dynamic evalList(Environment env, dynamic expr) { var result = null; while (expr is Cons) { result = eval(env, expr.head); expr = expr.tail; } return result; }
dynamic eval(Environment env, expr) #
The evaluation function.
dynamic eval(Environment env, dynamic expr) { if (expr is Cons) { return eval(env, expr.head)(env, expr.tail); } else if (expr is Name) { return env[expr]; } else { return expr; } }