|
@@ -84,21 +84,24 @@ public class LispEval {
|
|
|
operators.put("set!", this.define);
|
|
|
operators.put("lambda", this.define);
|
|
|
operators.put("cons", new ConsOperator());
|
|
|
- operators.put(">", new ComparatorOperator());
|
|
|
- operators.put(">=", new ComparatorOperator());
|
|
|
- operators.put("<", new ComparatorOperator());
|
|
|
- operators.put("<=", new ComparatorOperator());
|
|
|
- operators.put("=", new ComparatorOperator());
|
|
|
- operators.put("min", new MinMaxOperator());
|
|
|
- operators.put("max", new MinMaxOperator());
|
|
|
- operators.put("cbrt", new MathOperator());
|
|
|
- operators.put("ceil", new MathOperator());
|
|
|
- operators.put("floor", new MathOperator());
|
|
|
- operators.put("log10", new MathOperator());
|
|
|
- operators.put("cos", new MathOperator());
|
|
|
- operators.put("rint", new MathOperator());
|
|
|
- operators.put("round", new MathOperator());
|
|
|
- operators.put("signum", new MathOperator());
|
|
|
+ ComparatorOperator comp = new ComparatorOperator();
|
|
|
+ operators.put(">", comp);
|
|
|
+ operators.put(">=", comp);
|
|
|
+ operators.put("<", comp);
|
|
|
+ operators.put("<=", comp);
|
|
|
+ operators.put("=", comp);
|
|
|
+ MinMaxOperator minMax = new MinMaxOperator();
|
|
|
+ operators.put("min", minMax);
|
|
|
+ operators.put("max", minMax);
|
|
|
+ MathOperator math = new MathOperator();
|
|
|
+ operators.put("cbrt", math);
|
|
|
+ operators.put("ceil", math);
|
|
|
+ operators.put("floor", math);
|
|
|
+ operators.put("log10", math);
|
|
|
+ operators.put("cos", math);
|
|
|
+ operators.put("rint", math);
|
|
|
+ operators.put("round", math);
|
|
|
+ operators.put("signum", math);
|
|
|
operators.put("quote", (eval, op, lisp) -> {
|
|
|
if(lisp.size() != 1) {
|
|
|
throw new LispError(LispError.ERR_NUM_ARG);
|