|
@@ -133,10 +133,19 @@ public class DefineOperator implements LispOperator {
|
|
}
|
|
}
|
|
//Remplace les parametres
|
|
//Remplace les parametres
|
|
String lispExpr = lambda.toString();
|
|
String lispExpr = lambda.toString();
|
|
|
|
+ //System.out.println(lisp);
|
|
while(!param.isEmpty()) {
|
|
while(!param.isEmpty()) {
|
|
- lispExpr = lispExpr.replaceAll(" " + param.car() + " ", " " + lisp.car() + " ")
|
|
|
|
- .replaceAll("\\(" + param.car() + " ", "\\(" + lisp.car() + " ")
|
|
|
|
- .replaceAll(" " + param.car() + "\\)", " " + lisp.car() + "\\)");
|
|
|
|
|
|
+ try {
|
|
|
|
+ //Tentative d'evalutation des arguments
|
|
|
|
+ LispElement elt = eval.evaluateList((ConsList<Object>) lisp.car());
|
|
|
|
+ lispExpr = lispExpr.replaceAll(" " + param.car() + " ", " " + elt + " ")
|
|
|
|
+ .replaceAll("\\(" + param.car() + " ", "\\(" + elt + " ")
|
|
|
|
+ .replaceAll(" " + param.car() + "\\)", " " + elt + "\\)");
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
+ lispExpr = lispExpr.replaceAll(" " + param.car() + " ", " " + lisp.car() + " ")
|
|
|
|
+ .replaceAll("\\(" + param.car() + " ", "\\(" + lisp.car() + " ")
|
|
|
|
+ .replaceAll(" " + param.car() + "\\)", " " + lisp.car() + "\\)");
|
|
|
|
+ }
|
|
param = param.cdr();
|
|
param = param.cdr();
|
|
lisp = lisp.cdr();
|
|
lisp = lisp.cdr();
|
|
}
|
|
}
|