/** * {@inheritDoc} */ @Override public boolean hasAssignedSymbolValue() { if (hasLocalVariableStack()) { return get() != null; } else { if (fRulesData != null) { PatternMatcherEquals pme = fRulesData.getEqualDownRules().get(this); if (pme != null) { return pme.getRHS() != null; } } } return false; }
/** * {@inheritDoc} */ @Override public IExpr getAssignedValue() { if (hasLocalVariableStack()) { return get(); } else { if (fRulesData != null) { PatternMatcherEquals pme = fRulesData.getEqualDownRules().get(this); if (pme != null) { return pme.getRHS(); } } } return null; }
/** {@inheritDoc} */ @Override public IExpr evaluate(EvalEngine engine) { if (hasLocalVariableStack()) { return ExprUtil.ofNullable(get()); } IExpr result; if ((result = evalDownRule(engine, this)).isPresent()) { return result; } return F.NIL; }
IExpr[] result = new IExpr[2]; IExpr symbolValue; if (hasLocalVariableStack()) { symbolValue = get(); result[0] = symbolValue;
IExpr[] result = new IExpr[2]; IExpr symbolValue; if (hasLocalVariableStack()) { symbolValue = get(); result[0] = symbolValue;
/** {@inheritDoc} */ @Override public IExpr evaluate(EvalEngine engine) { if (hasLocalVariableStack()) { return get(); } IExpr result; if ((result = evalDownRule(engine, this)) != null) { return result; } final IEvaluator module = getEvaluator(); if (module instanceof ISymbolEvaluator) { if (engine.isNumericMode()) { return ((ISymbolEvaluator) module).numericEval(this); } return ((ISymbolEvaluator) module).evaluate(this); } return null; }
@Override public boolean isNumericFunction() { if (isConstant()) { return true; } if (hasLocalVariableStack()) { IExpr temp = get(); if (temp != null && temp != this && temp.isNumericFunction()) { return true; } } else { IExpr temp = evalDownRule(EvalEngine.get(), this); if (temp.isPresent() && temp.isNumericFunction()) { return true; } } return false; }
IExpr[] result = new IExpr[2]; IExpr symbolValue; if (hasLocalVariableStack()) { symbolValue = get(); result[0] = symbolValue;
/** {@inheritDoc} */ @Override public final INumber evalNumber() { if (isNumericFunction()) { IExpr result = F.evaln(this); if (result.isNumber()) { return (INumber) result; } } else if (hasLocalVariableStack()) { IExpr temp = get(); if (temp != null && temp.isNumericFunction()) { IExpr result = F.evaln(this); if (result.isNumber()) { return (INumber) result; } } } else { IExpr temp = evalDownRule(EvalEngine.get(), this); if (temp.isPresent() && temp.isNumericFunction()) { IExpr result = F.evaln(this); if (result.isNumber()) { return (INumber) result; } } } return null; }
/** {@inheritDoc} */ @Override public final ISignedNumber evalReal() { if (isNumericFunction()) { IExpr result = F.evaln(this); if (result.isReal()) { return (ISignedNumber) result; } } else if (hasLocalVariableStack()) { IExpr temp = get(); if (temp != null && temp.isNumericFunction()) { IExpr result = F.evaln(this); if (result.isReal()) { return (ISignedNumber) result; } } } else { IExpr temp = evalDownRule(EvalEngine.get(), this); if (temp.isPresent() && temp.isNumericFunction()) { IExpr result = F.evaln(this); if (result.isReal()) { return (ISignedNumber) result; } } } return null; }