if( debug ) Gpr.debug("Tree: " + tree.toStringTree());
String treeName = tree.getText().toUpperCase();
// Select appropriate function (and create it)
if( treeName.equals("+") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffSum(functionBlock, terms);
} else if( treeName.equals("-") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffSubstract(functionBlock, terms);
} else if( treeName.equals("*") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffTimes(functionBlock, terms);
} else if( treeName.equals("/") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffDivide(functionBlock, terms);
} else if( treeName.equals("^") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffPow(functionBlock, terms);
} else if( treeName.equals("%") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffModulus(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("exp") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffExp(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("ln") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffLn(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("log") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffLog(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("sin") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffSin(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("cos") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffCos(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("tan") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffTan(functionBlock, terms);
} else if( treeName.equalsIgnoreCase("abs") ) {
FclObject terms[] = parseTerms(functionBlock, tree);
return new MffAbs(functionBlock, terms);
} else {
// Parse it as a 'Value'
return new Value(tree, functionBlock);
}