Update of /cvsroot/bprocessor/bscript/src/net/sourceforge/bprocessor/model/evaluator
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv5814/src/net/sourceforge/bprocessor/model/evaluator
Modified Files:
Environment.java Function.java Call.java
Log Message:
Added a script to project that can contain userdefined functions
Index: Call.java
===================================================================
RCS file: /cvsroot/bprocessor/bscript/src/net/sourceforge/bprocessor/model/evaluator/Call.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Call.java 13 Sep 2006 06:48:30 -0000 1.2
--- Call.java 13 Sep 2006 13:36:32 -0000 1.3
***************
*** 10,13 ****
--- 10,14 ----
import java.util.ArrayList;
import java.util.HashMap;
+ import java.util.Iterator;
import java.util.List;
import java.util.Stack;
***************
*** 46,53 ****
}
stack.pop();
! Invokable function = (Invokable) env.lookupGlobal(name);
! if (function != null) {
! Environment activation = new Environment(env, new HashMap(), arguments);
! Object result = function.evaluate(activation);
stack.push(result);
} else {
--- 47,65 ----
}
stack.pop();
! Invokable invokable = (Invokable) env.lookupGlobal(name);
! if (invokable != null) {
! HashMap locals = new HashMap();
! if (invokable instanceof Function) {
! Function function = (Function) invokable;
! Iterator names = function.formals().iterator();
! Iterator values = arguments.iterator();
! while (names.hasNext()) {
! String name = (String) names.next();
! Object value = values.next();
! locals.put(name, value);
! }
! }
! Environment activation = new Environment(env, locals, arguments);
! Object result = invokable.evaluate(activation);
stack.push(result);
} else {
Index: Function.java
===================================================================
RCS file: /cvsroot/bprocessor/bscript/src/net/sourceforge/bprocessor/model/evaluator/Function.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Function.java 12 Sep 2006 09:27:31 -0000 1.3
--- Function.java 13 Sep 2006 13:36:32 -0000 1.4
***************
*** 20,23 ****
--- 20,29 ----
public final static Object mark = new Object();
+ /** name */
+ private String name;
+
+ /** formals */
+ private List formals;
+
/** operations */
private List operations;
***************
*** 32,35 ****
--- 38,60 ----
/**
+ * Constructor
+ */
+ public Function(String name) {
+ super();
+ this.name = name;
+ operations = new LinkedList();
+ }
+
+ /**
+ * Constructor
+ */
+ public Function(String name, List formals) {
+ super();
+ this.name = name;
+ this.formals = formals;
+ operations = new LinkedList();
+ }
+
+ /**
* Append operation
* @param operation Operation
***************
*** 41,44 ****
--- 66,77 ----
/**
*
+ * @return formals
+ */
+ public List formals() {
+ return formals;
+ }
+
+ /**
+ *
* @return result
*/
Index: Environment.java
===================================================================
RCS file: /cvsroot/bprocessor/bscript/src/net/sourceforge/bprocessor/model/evaluator/Environment.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Environment.java 13 Sep 2006 06:48:30 -0000 1.2
--- Environment.java 13 Sep 2006 13:36:32 -0000 1.3
***************
*** 77,80 ****
--- 77,83 ----
}
}
+ if (value == null) {
+ value = new Double(8.9);
+ }
return value;
}
|