Arthur Brandao пре 6 година
родитељ
комит
afef145979
2 измењених фајлова са 6 додато и 4 уклоњено
  1. 3 2
      src/migl/lisp/LispImpl.java
  2. 3 2
      src/migl/lisp/operator/DefineOperator.java

+ 3 - 2
src/migl/lisp/LispImpl.java

@@ -27,6 +27,7 @@ public class LispImpl implements Lisp {
 		//Définition des opérateurs
 		operators.put("define", new DefineOperator());
 		operators.put("set!", new DefineOperator());
+		operators.put("lambda", new DefineOperator());
 		operators.put("cons", new ConsOperator());
 		operators.put(">", new ComparatorOperator());
 		operators.put(">=", new ComparatorOperator());
@@ -350,11 +351,11 @@ public class LispImpl implements Lisp {
 		try {
 			LispElement.valueOf(name).toStr();
 		} catch (IllegalStateException ex) {
-			throw new LispError(name + " is not a valid identifier", ex);
+			throw new LispError(name + LispError.ERR_INVALID, ex);
 		}
 		//Verifie que ce n'est pas le nom d'un operateur
 		if(operators.containsKey(name)) {
-			throw new LispError(name + " is not a valid identifier");
+			throw new LispError(name + LispError.ERR_INVALID);
 		}
 	}
 

+ 3 - 2
src/migl/lisp/operator/DefineOperator.java

@@ -62,11 +62,12 @@ public class DefineOperator implements LispOperator {
 	
 	private LispElement define(ConsList<Object> lisp) throws LispError {
 		//Recup la clef
+		LispElement le = LispElement.generate(lisp.car());
 		String key;
 		try {
-			key = LispElement.generate(lisp.car()).toStr();
+			key = le.toStr();
 		} catch(IllegalStateException ex) {
-			throw new LispError(ex);
+			throw new LispError(le.toString() + LispError.ERR_INVALID, ex);
 		}
 		//Verification de sa validité
 		LispImpl.verifyForbiddenName(key);