[Bprocessor-commit] bscript/src/net/sourceforge/bprocessor/model/evaluator Environment.java, 1.2,
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2006-09-13 13:36:34
|
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; } |