|
@@ -180,18 +180,35 @@ public class LispEval {
|
|
*/
|
|
*/
|
|
private ConsList<Object> lispList = null;
|
|
private ConsList<Object> lispList = null;
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Creation d'un evaluateur lisp
|
|
|
|
+ */
|
|
|
|
+ public LispEval() {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Creation d'un evaluateur lisp
|
|
* Creation d'un evaluateur lisp
|
|
* @param lisp Un element lisp (Object) ou une liste de lisp (ConsList<Object>)
|
|
* @param lisp Un element lisp (Object) ou une liste de lisp (ConsList<Object>)
|
|
*/
|
|
*/
|
|
- @SuppressWarnings("unchecked")
|
|
|
|
public LispEval(Object lisp) {
|
|
public LispEval(Object lisp) {
|
|
|
|
+ this.setLisp(lisp);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Change l'objet lisp à evaluer
|
|
|
|
+ * @param lisp Un element lisp (Object) ou une liste de lisp (ConsList<Object>)
|
|
|
|
+ */
|
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
|
+ public final void setLisp(Object lisp) {
|
|
if(lisp == null) {
|
|
if(lisp == null) {
|
|
throw new IllegalArgumentException("Expression is null");
|
|
throw new IllegalArgumentException("Expression is null");
|
|
} else if(lisp instanceof ConsList) {
|
|
} else if(lisp instanceof ConsList) {
|
|
|
|
+ this.lispElt = null;
|
|
this.lispList = (ConsList<Object>) lisp;
|
|
this.lispList = (ConsList<Object>) lisp;
|
|
} else {
|
|
} else {
|
|
this.lispElt = lisp;
|
|
this.lispElt = lisp;
|
|
|
|
+ this.lispList = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -203,8 +220,10 @@ public class LispEval {
|
|
public LispElement evaluate() throws LispError {
|
|
public LispElement evaluate() throws LispError {
|
|
if(this.lispElt != null) {
|
|
if(this.lispElt != null) {
|
|
return this.evalElt();
|
|
return this.evalElt();
|
|
|
|
+ } else if(this.lispList != null) {
|
|
|
|
+ return this.evalList();
|
|
}
|
|
}
|
|
- return this.evalList();
|
|
|
|
|
|
+ return null;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|