15 #ifndef COPASI_CEvaluationNode
16 #define COPASI_CEvaluationNode
94 static bool isKeyword(
const std::string & str);
163 virtual std::string
getInfix(
const std::vector< std::string > & children)
const;
175 virtual std::string
getDisplayString(
const std::vector< std::string > & children)
const;
187 virtual std::string
getCCodeString(
const std::vector< std::string > & children)
const;
213 virtual std::string
getXPPString(
const std::vector< std::string > & children)
const;
240 void addChildren(
const std::vector< CEvaluationNode * > & children);
294 virtual std::string
getMMLString(
const std::vector< std::string > & children,
296 const std::vector< std::vector< std::string > > & variables)
const;
304 std::string
buildMMLString(
bool expand,
const std::vector< std::vector< std::string > > & variables)
const;
401 const size_t &
right = 0);
427 #define PRECEDENCE_DEFAULT CPrecedence(0, 0)
429 #define PRECEDENCE_LOGIG_NOT CPrecedence(3, 2)
430 #define PRECEDENCE_LOGIG_OR CPrecedence(4, 5)
431 #define PRECEDENCE_LOGIG_XOR CPrecedence(6, 7)
432 #define PRECEDENCE_LOGIG_AND CPrecedence(8, 9)
433 #define PRECEDENCE_LOGIG_EQ CPrecedence(10, 11)
434 #define PRECEDENCE_LOGIG_NE CPrecedence(12, 13)
435 #define PRECEDENCE_LOGIG_GT CPrecedence(14, 15)
436 #define PRECEDENCE_LOGIG_GE CPrecedence(16, 17)
437 #define PRECEDENCE_LOGIG_LT CPrecedence(18, 19)
438 #define PRECEDENCE_LOGIG_LE CPrecedence(20, 21)
440 #define PRECEDENCE_OPERATOR_MINUS CPrecedence(22, 23)
441 #define PRECEDENCE_OPERATOR_PLUS CPrecedence(22, 23)
442 #define PRECEDENCE_OPERATOR_MODULUS CPrecedence(26, 27)
443 #define PRECEDENCE_OPERATOR_DIVIDE CPrecedence(28, 29)
444 #define PRECEDENCE_OPERATOR_MULTIPLY CPrecedence(28, 29)
445 #define PRECEDENCE_OPERATOR_POWER CPrecedence(33, 32)
447 #define PRECEDENCE_FUNCTION CPrecedence(35, 34)
449 #define PRECEDENCE_NUMBER CPrecedence(36, 37)
451 #define PRECEDENCE_STRUCTURE_OPEN CPrecedence(ULONG_MAX, 1)
452 #define PRECEDENCE_STRUCTURE_COMMA CPrecedence(0, 1)
453 #define PRECEDENCE_STRUCTURE_CLOSE CPrecedence(0, ULONG_MAX)
469 #endif // COPASI_CEvaluationNode
bool operator<(const CEvaluationNode &right) const
virtual ASTNode * toAST(const CCopasiDataModel *pDataModel) const
const CEvaluationNode * findTopMinus(const std::vector< CFunctionAnalyzer::CValue > &callParameters) const
CEvaluationNode * copyBranch() const
virtual std::string getDisplayString(const std::vector< std::string > &children) const
virtual std::string getXPPString(const std::vector< std::string > &children) const
CPrecedence(const size_t &left=0, const size_t &right=0)
const C_FLOAT64 * getValuePointer() const
CEvaluationNode * copyNode(CEvaluationNode *child1, CEvaluationNode *child2) const
const C_FLOAT64 & getValue() const
virtual bool operator!=(const CEvaluationNode &right) const
const Type & getType() const
static CEvaluationNode * create(const Type &type, const Data &data)
std::string buildInfix() const
virtual ~CEvaluationNode()
std::string buildCCodeString() const
virtual std::string getInfix(const std::vector< std::string > &children) const
virtual std::string getMMLString(const std::vector< std::string > &children, bool expand, const std::vector< std::vector< std::string > > &variables) const
static bool isKeyword(const std::string &str)
void addChildren(const std::vector< CEvaluationNode * > &children)
static Type type(const Type &type)
std::string buildXPPString() const
std::string buildDisplayString() const
virtual std::string getBerkeleyMadonnaString(const std::vector< std::string > &children) const
void printRecursively() const
std::string buildMMLString(bool expand, const std::vector< std::vector< std::string > > &variables) const
static Type subType(const Type &type)
class CEvaluationNode::CPrecedence mPrecedence
virtual bool isBoolean() const
bool operator==(const CEvaluationNode &right) const
virtual bool compile(const CEvaluationTree *pTree)
std::string buildBerkeleyMadonnaString() const
virtual CEvaluationNode * simplifyNode(const std::vector< CEvaluationNode * > &children) const
const C_FLOAT64 * mpValue
virtual std::string getCCodeString(const std::vector< std::string > &children) const
CEvaluationNode * splitBranch(const CEvaluationNode *splitnode, bool left) const
static const char * Keywords[]