Thread: [Mathlib-commitlog] SF.net SVN: mathlib:[619] JMathLib/trunk/src/jmathlib/core/tokens/ AssignmentOp
Status: Beta
Brought to you by:
st_mueller
|
From: <st_...@us...> - 2009-01-05 15:06:22
|
Revision: 619
http://mathlib.svn.sourceforge.net/mathlib/?rev=619&view=rev
Author: st_mueller
Date: 2009-01-05 15:06:17 +0000 (Mon, 05 Jan 2009)
Log Message:
-----------
changed handling of global variables
Modified Paths:
--------------
JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java
Modified: JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java
===================================================================
--- JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java 2009-01-05 15:05:03 UTC (rev 618)
+++ JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java 2009-01-05 15:06:17 UTC (rev 619)
@@ -10,6 +10,9 @@
public class AssignmentOperatorToken extends BinaryOperatorToken
{
+ /**
+ *
+ */
public AssignmentOperatorToken()
{
/**call the super constructor, type defaults to ttoperator and operands to 2*/
@@ -50,13 +53,13 @@
{
// e.g. a{8}=...
ErrorLogger.debugLine("AssignmentOpTok: new cell");
- left = getVariables().createVariable(name);
+ left = createVariable(name);
left.assign(new CellArrayToken());
}
else if (!leftVarTok.isStruct())
{
// auto create a new variable
- left = getVariables().createVariable(name);
+ left = createVariable(name);
}
else if (leftVarTok.isStruct() &&
getVariable(name) == null)
@@ -65,7 +68,7 @@
ErrorLogger.debugLine("AssignmentOpTok: new struct: "+name+"."+fieldName);
MathLibObject obj = new MathLibObject();
obj.setField(fieldName, DoubleNumberToken.zero);
- Variable var = getVariables().createVariable(name );
+ Variable var = createVariable(name );
var.assign(obj);
left = ((MathLibObject)getVariable(name).getData()).getFieldVariable(fieldName);
}
@@ -181,7 +184,7 @@
ErrorLogger.debugLine("AssignmentOpTok: variable is null");
// create variable
- leftVar = getVariables().createVariable(varToken.getName() );
+ leftVar = createVariable(varToken.getName() );
}
// assign right side matrix to left side variable
@@ -222,7 +225,7 @@
ErrorLogger.debugLine("AssignmentOpTok: variable is null");
// create variable
- leftVar = getVariables().createVariable(varToken.getName() );
+ leftVar = createVariable(varToken.getName() );
}
// get number-matrix of an element on the right side
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <st_...@us...> - 2009-01-25 07:55:58
|
Revision: 768
http://mathlib.svn.sourceforge.net/mathlib/?rev=768&view=rev
Author: st_mueller
Date: 2009-01-25 07:55:54 +0000 (Sun, 25 Jan 2009)
Log Message:
-----------
changed signature of evaluate(Token[] operands)
to
evaluate(Token[] operands, GlobalValues globals)
Modified Paths:
--------------
JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java
Modified: JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java
===================================================================
--- JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java 2009-01-25 07:46:58 UTC (rev 767)
+++ JMathLib/trunk/src/jmathlib/core/tokens/AssignmentOperatorToken.java 2009-01-25 07:55:54 UTC (rev 768)
@@ -1,6 +1,5 @@
package jmathlib.core.tokens;
-import jmathlib.core.interpreter.Variable;
import jmathlib.core.interpreter.*;
import jmathlib.toolbox.jmathlib.matrix.*;
import jmathlib.core.tokens.numbertokens.DoubleNumberToken;
@@ -23,7 +22,7 @@
* @param operands = the operators operands
* @return the result as and OperandToken
*/
- public OperandToken evaluate(Token[] operands)
+ public OperandToken evaluate(Token[] operands, GlobalValues globals)
{
OperandToken result = null;
@@ -40,7 +39,7 @@
// if leftVarTok is of type MathLibObject the next line will return
// a reference to the field values (e.g. a.b)
- Variable left = leftVarTok.getVariable();
+ Variable left = leftVarTok.getVariable(globals);
// check if variable already exists
if (left == null)
@@ -53,32 +52,32 @@
{
// e.g. a{8}=...
ErrorLogger.debugLine("AssignmentOpTok: new cell");
- left = createVariable(name);
+ left = globals.createVariable(name);
left.assign(new CellArrayToken());
}
else if (!leftVarTok.isStruct())
{
// auto create a new variable
- left = createVariable(name);
+ left = globals.createVariable(name);
}
else if (leftVarTok.isStruct() &&
- getVariable(name) == null)
+ globals.getVariable(name) == null)
{
// struct is not created yet
ErrorLogger.debugLine("AssignmentOpTok: new struct: "+name+"."+fieldName);
MathLibObject obj = new MathLibObject();
obj.setField(fieldName, DoubleNumberToken.zero);
- Variable var = createVariable(name );
+ Variable var = globals.createVariable(name );
var.assign(obj);
- left = ((MathLibObject)getVariable(name).getData()).getFieldVariable(fieldName);
+ left = ((MathLibObject)globals.getVariable(name).getData()).getFieldVariable(fieldName);
}
else
{
// struct is already created, but field is missing
// variable is a struct -> auto create new field variable
ErrorLogger.debugLine("AssignmentOpTok: struct new field: "+name+"."+fieldName);
- ((MathLibObject)getVariable(name).getData()).setField(fieldName,DoubleNumberToken.zero);
- left = leftVarTok.getVariable();
+ ((MathLibObject)globals.getVariable(name).getData()).setField(fieldName,DoubleNumberToken.zero);
+ left = leftVarTok.getVariable(globals);
}
}
@@ -101,12 +100,12 @@
ops[0] = left.getData();
ops[1] = right;
ops[2] = ((OperandToken)limits[0].clone());
- ops[2] = ops[2].evaluate(null);
+ ops[2] = ops[2].evaluate(null, globals);
if (limitsLength==2)
{
ops[3] = ((OperandToken)limits[1].clone());
- ops[3] = ops[3].evaluate(null);
+ ops[3] = ops[3].evaluate(null, globals);
}
subassign subA = new subassign();
@@ -118,7 +117,7 @@
}
// create instance of external function SubAssign and compute assignment
- right = subA.evaluate(ops);
+ right = subA.evaluate(ops, globals);
}
result = left.assign(right);
@@ -127,11 +126,11 @@
/* display the result this expression in the user console*/
if (isDisplayResult())
{
- ErrorLogger.debugLine("AssignmentOperatorToken: !!!!!!!!! displayResult");
+ ErrorLogger.debugLine("AssignmentOperatorToken: displayResult");
if ((right!=null))
- getInterpreter().displayText(left.getName() +" = "+ right.toString());
+ globals.getInterpreter().displayText(left.getName() +" = "+ right.toString());
else
- getInterpreter().displayText(left.getName() +" = []");
+ globals.getInterpreter().displayText(left.getName() +" = []");
}
return null;
@@ -139,7 +138,7 @@
else if (operands[0] instanceof Expression)
{
ErrorLogger.debugLine("AssignmentOpTok: eval: Expression *******");
- operands[0] = operands[0].evaluate(null);
+ operands[0] = operands[0].evaluate(null, globals);
//return evaluate(operands);
return null;
}
@@ -156,8 +155,8 @@
|| (left.getSizeY() != 1)
|| (right.getSizeY() != 1) )
{
- ErrorLogger.debugLine("AssignOperatorToken: unequal sizes");
- return null;
+ ErrorLogger.debugLine("AssignOperatorToken: unequal sizes");
+ return null;
}
OperandToken[][] leftOps = left.getValue();
@@ -166,29 +165,31 @@
// assign all right side elements to left side variables
for (int i=0; i<left.getSizeX(); i++)
{
- if (!(leftOps[0][i] instanceof VariableToken)) return null;
- //ErrorLogger.debugLine("AssignOpToken: inst Var..");
-
- if (!(rightOps[0][i] instanceof DoubleNumberToken )) return null;
- //ErrorLogger.debugLine("AssignOpToken: inst Num..");
-
- // get one variable element of left side
- VariableToken varToken = (VariableToken)leftOps[0][i];
- Variable leftVar = getVariable(varToken.getName());
-
- // get number-matrix of an element on the right side
- DoubleNumberToken number = (DoubleNumberToken)rightOps[0][i];
-
- if (leftVar == null)
- {
- ErrorLogger.debugLine("AssignmentOpTok: variable is null");
-
- // create variable
- leftVar = createVariable(varToken.getName() );
- }
-
- // assign right side matrix to left side variable
- result = leftVar.assign(number);
+ if (!(leftOps[0][i] instanceof VariableToken))
+ return null;
+ //ErrorLogger.debugLine("AssignOpToken: inst Var..");
+
+ if (!(rightOps[0][i] instanceof DoubleNumberToken ))
+ return null;
+ //ErrorLogger.debugLine("AssignOpToken: inst Num..");
+
+ // get one variable element of left side
+ VariableToken varToken = (VariableToken)leftOps[0][i];
+ Variable leftVar = globals.getVariable(varToken.getName());
+
+ // get number-matrix of an element on the right side
+ DoubleNumberToken number = (DoubleNumberToken)rightOps[0][i];
+
+ if (leftVar == null)
+ {
+ ErrorLogger.debugLine("AssignmentOpTok: variable is null");
+
+ // create variable
+ leftVar = globals.createVariable(varToken.getName() );
+ }
+
+ // assign right side matrix to left side variable
+ result = leftVar.assign(number);
}
//return DoubleNumberToken.one;
return null;
@@ -212,12 +213,13 @@
// assign all right side elements to left side variables
for (int i=0; i<left.getSizeX(); i++)
{
- if (!(leftOps[0][i] instanceof VariableToken)) return null;
+ if (!(leftOps[0][i] instanceof VariableToken))
+ return null;
//ErrorLogger.debugLine("AssignOpToken: inst Var..");
// get one variable element of left side
VariableToken varToken = ((VariableToken)leftOps[0][i]);
- Variable leftVar = getVariable(varToken.getName());
+ Variable leftVar = globals.getVariable(varToken.getName());
// check if variable already exists
if (leftVar == null)
@@ -225,7 +227,7 @@
ErrorLogger.debugLine("AssignmentOpTok: variable is null");
// create variable
- leftVar = createVariable(varToken.getName() );
+ leftVar = globals.createVariable(varToken.getName() );
}
// get number-matrix of an element on the right side
@@ -234,7 +236,7 @@
// assign right side matrix to left side variable
result = leftVar.assign(number);
}
- return null; //result; //DoubleNumberToken.one;
+ return null;
}
}
else
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|