- default_pretty_printer = new PrettyPrinter (default_pp);
- set_pretty_printer = new PrettyPrinter (set_pp);
- literal = Defun ("nil", null, 1, 1);
- varref = Defun ("symbol", new Evaluator (get_value), 1, 1);
- block = Defun ("plist", new Evaluator (progn), 1, -1);
-
- Defun ("set", new Evaluator (set_value), 2, 2,
- typeof (MSymbol), typeof (MExpression));
- Defun ("=", new Evaluator (set_value), 2, 2,
- typeof (MSymbol), typeof (MExpression));
- Defun ("+", new Evaluator (plus), 1, -1);
- Defun ("*", new Evaluator (multi), 2, -1);
- Defun ("-", new Evaluator (minus), 1, -1);
- Defun ("/", new Evaluator (divide), 2, -1);
- Defun ("%", new Evaluator (percent), 2, -1);
- Defun ("|", new Evaluator (logior), 2, -1);
- Defun ("&", new Evaluator (logand), 2, -1);
- Defun ("+=", new Evaluator (pluseq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("*=", new Evaluator (multieq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("-=", new Evaluator (minuseq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("/=", new Evaluator (divideeq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("%=", new Evaluator (percenteq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("|=", new Evaluator (logioreq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("&=", new Evaluator (logandeq), 2, -1,
- typeof (MSymbol), typeof (MExpression));
- Defun ("<<", new Evaluator (lshift), 2, 2);
- Defun (">>", new Evaluator (rshift), 2, 2);
- Defun ("<<=", new Evaluator (lshifteq), 2, 2,
- typeof (MSymbol), typeof (MExpression));
- Defun (">>=", new Evaluator (rshifteq), 2, 2,
- typeof (MSymbol), typeof (MExpression));
- Defun ("==", new Evaluator (eq), 2, -1);
- Defun ("!=", new Evaluator (noteq), 2, 2);
- Defun ("<", new Evaluator (less), 2, -1);
- Defun ("<=", new Evaluator (lesseq), 2, -1);
- Defun (">", new Evaluator (more), 2, -1);
- Defun (">=", new Evaluator (moreeq), 2, -1);
- block = Defun ("progn", new Evaluator (progn), 1, -1);
- block.pp = new PrettyPrinter (block_pp);
- Defun ("cond", new Evaluator (cond), 1, -1,
- typeof (MExpression[])).pp = new PrettyPrinter (cond_pp);
- Defun ("if", new Evaluator (ifclause), 2, -1,
- typeof (MExpression)).pp = new PrettyPrinter (if_pp);
- Defun ("while", new Evaluator (whileclause), 1, -1,
- typeof (MExpression)).pp = new PrettyPrinter (while_pp);
- defun = Defun ("defun", new Evaluator (define_function), 4, -1,
- typeof (FunctionTable),
- typeof (MSymbol),
- typeof (MPlist),
- typeof (MExpression));
- defun.pp = new PrettyPrinter (defun_pp);
- }
-
- private static MPlist find_binding (object[] args, MPlist bindings)
- {
- MSymbol var = (MSymbol) args[0];
- MPlist slot = bindings.Find (var);