示例#1
0
bool AntimonyEvent::SetPriority(const Formula& priority)
{
  string prioritystring = priority.ToSBMLString();
#ifndef NSBML
  if (prioritystring.size() > 0) {
    ASTNode* ASTpriority = parseStringToASTNode(prioritystring);
    if (ASTpriority == NULL) {
      g_registry.SetError("The priority \"" + priority.ToDelimitedStringWithEllipses(".") + "\" seems to be incorrect, and cannot be parsed into an Abstract Syntax Tree (AST).");
      return true;
    }
    else if (ASTpriority->isBoolean()) {
      g_registry.SetError("The priority \"" + priority.ToDelimitedStringWithEllipses(".") + "\" is boolean, and it is therefore illegal to use it as the priority for an event.  Perhaps this was meant as the trigger?  If the line is being misparsed, try adding parentheses.");
      delete ASTpriority;
      return true;
    }
    else {
      delete ASTpriority;
    }
  }
#endif
  m_priority = priority;
  return false;
}
示例#2
0
bool AntimonyEvent::SetTrigger(const Formula& form)
{
  string formstring = form.ToSBMLString();
#ifndef NSBML
  if (formstring.size() > 0) {
    ASTNode* ASTform = parseStringToASTNode(formstring);
    if (ASTform == NULL) {
      g_registry.SetError("The formula \"" + form.ToDelimitedStringWithEllipses(".") + "\" seems to be incorrect, and cannot be parsed into an Abstract Syntax Tree (AST).");
      return true;
    }
    else if (!ASTform->isBoolean()) {
      g_registry.SetError("The formula \"" + form.ToDelimitedStringWithEllipses(".") + "\" cannot be parsed in a boolean context, and it is therefore illegal to use it as the trigger for an event.  (Perhaps try adding parentheses?)");
      delete ASTform;
      return true;
    }
    else {
      delete ASTform;
    }
  }
#endif
  m_trigger = form;
  return false;
}