Explorar o código

Aélioration code

Arthur Brandao %!s(int64=6) %!d(string=hai) anos
pai
achega
4f5e5f6763
Modificáronse 1 ficheiros con 17 adicións e 17 borrados
  1. 17 17
      src/migl/lisp/LispEval.java

+ 17 - 17
src/migl/lisp/LispEval.java

@@ -21,56 +21,56 @@ public class LispEval {
 			if(lisp.size() != 1) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = !getElement(lisp.car()).getBool();
+			boolean result = !getElement(lisp.car()).toBoolean();
 			return LispElement.generate(result);
 		});
 		operators.put("and", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getBool() && getElement(lisp.cdr().car()).getBool();
+			boolean result = getElement(lisp.car()).toBoolean() && getElement(lisp.cdr().car()).toBoolean();
 			return LispElement.generate(result);
 		});
 		operators.put("or", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getBool() || getElement(lisp.cdr().car()).getBool();
+			boolean result = getElement(lisp.car()).toBoolean() || getElement(lisp.cdr().car()).toBoolean();
 			return LispElement.generate(result);
 		});
 		operators.put(">", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getNumber() > getElement(lisp.cdr().car()).getNumber();
+			boolean result = getElement(lisp.car()).toNumber() > getElement(lisp.cdr().car()).toNumber();
 			return LispElement.generate(result);
 		});
 		operators.put(">=", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getNumber() >= getElement(lisp.cdr().car()).getNumber();
+			boolean result = getElement(lisp.car()).toNumber() >= getElement(lisp.cdr().car()).toNumber();
 			return LispElement.generate(result);
 		});
 		operators.put("<", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getNumber() < getElement(lisp.cdr().car()).getNumber();
+			boolean result = getElement(lisp.car()).toNumber() < getElement(lisp.cdr().car()).toNumber();
 			return LispElement.generate(result);
 		});
 		operators.put("<=", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getNumber() <= getElement(lisp.cdr().car()).getNumber();
+			boolean result = getElement(lisp.car()).toNumber() <= getElement(lisp.cdr().car()).toNumber();
 			return LispElement.generate(result);
 		});
 		operators.put("=", (lisp) -> {
 			if(lisp.size() != 2) {
 				throw new LispError("Incorrect number of argument");
 			}
-			boolean result = getElement(lisp.car()).getNumber() == getElement(lisp.cdr().car()).getNumber();
+			boolean result = getElement(lisp.car()).toNumber() == getElement(lisp.cdr().car()).toNumber();
 			return LispElement.generate(result);
 		});
 		operators.put("+", (lisp) -> {
@@ -78,7 +78,7 @@ public class LispEval {
 			double result = 0;
 			while(!lisp.isEmpty()) {
 				LispElement<?> elt = getElement(lisp.car());
-				result += elt.getNumber();
+				result += elt.toNumber();
 				isInt = isInt && elt.value.getClass() == BigInteger.class;
 				lisp = lisp.cdr();
 			}
@@ -92,7 +92,7 @@ public class LispEval {
 			double result = 1;
 			while(!lisp.isEmpty()) {
 				LispElement<?> elt = getElement(lisp.car());
-				result *= elt.getNumber();
+				result *= elt.toNumber();
 				isInt = isInt && elt.value.getClass() == BigInteger.class;
 				lisp = lisp.cdr();
 			}
@@ -106,16 +106,16 @@ public class LispEval {
 				case 1:
 					LispElement<?> elt = getElement(lisp.car());
 					if(elt.value.getClass() == Double.class) {
-						return LispElement.generate(elt.getNumber() * -1);
+						return LispElement.generate(elt.toNumber() * -1);
 					}
-					return LispElement.generate(elt.getInt().multiply(new BigInteger("-1")));
+					return LispElement.generate(elt.toInt().multiply(new BigInteger("-1")));
 				case 2:
 					LispElement<?> elt1 = getElement(lisp.car());
 					LispElement<?> elt2 = getElement(lisp.cdr().car());
 					if(elt1.value.getClass() == Double.class || elt2.value.getClass() == Double.class) {
-						return LispElement.generate(elt1.getNumber() - elt2.getNumber());
+						return LispElement.generate(elt1.toNumber() - elt2.toNumber());
 					}
-					return LispElement.generate(elt1.getInt().subtract(elt2.getInt()));
+					return LispElement.generate(elt1.toInt().subtract(elt2.toInt()));
 				default:
 					throw new LispError("Incorrect number of argument");
 			}
@@ -127,9 +127,9 @@ public class LispEval {
 			LispElement<?> elt1 = getElement(lisp.car());
 			LispElement<?> elt2 = getElement(lisp.cdr().car());
 			if(elt1.value.getClass() == Double.class || elt2.value.getClass() == Double.class) {
-				return LispElement.generate(elt1.getNumber() / elt2.getNumber());
+				return LispElement.generate(elt1.toNumber() / elt2.toNumber());
 			}
-			return LispElement.generate(elt1.getInt().divide(elt2.getInt()));
+			return LispElement.generate(elt1.toInt().divide(elt2.toInt()));
 		});
 	}
 	
@@ -141,7 +141,7 @@ public class LispEval {
 	}
 
 	public static LispElement<?> evaluate(ConsList<Object> lisp) throws LispError {
-		LispOperator op = operators.get(lisp.car().toString());
+		LispOperator op = operators.get(LispElement.generate(lisp.car()).toStr());
 		if(op == null) {
 			throw new LispError(new UnsupportedOperationException("Unknow expression"));
 		}