Ejemplo n.º 1
0
std::string IfExpr::toString() {
  std::string ret = "if (";
  if (getCond() != NULL)
    ret += getCond()->toString();
  ret += ") then ";
  if (getThen() != NULL)
    ret += getThen()->toString();
  if (getElse() != NULL) {
    ret += " else " + getElse()->toString();
  }
  return ret;
}
Ejemplo n.º 2
0
// For Debugging Use
void IfExpr::print(FILE* file, int indent) {
  fprintf(file, "%*s(IfExpr:\n", indent, "");
  if (getCond() != NULL) {
    fprintf(file, "%*s:cond\n", indent + 2, "");
    getCond()->print(file, indent + 4);
  }
  if (getThen() != NULL) {
    fprintf(file, "%*s:then\n", indent + 2, "");
    getThen()->print(file, indent + 4);
  }
  if (getElse() != NULL) {
    fprintf(file, "%*s:else\n", indent + 2, "");
    getElse()->print(file, indent + 4);
  }
  fprintf(file, "%*s)\n", indent, "");
}
Ejemplo n.º 3
0
VExprConditionalStatementHandle VExprConditionalStatement::substitute(VExprExpressionHandle pDst, const HashTable<VExprExpressionHandle> & hashSrc) const {
    VExprExpressionHandle pNewIf = getIf()->substitute(pDst, hashSrc);
    VExprStatementOrNullHandle pNewThen = getThen()->substitute(pDst, hashSrc);

    if (getElse().valid()) {
        VExprStatementOrNullHandle pNewElse = getElse()->substitute(pDst, hashSrc);
        return VExprConditionalStatementHandle(VExprConditionalStatement(pNewIf, pNewThen, pNewElse));
    } else {
        return VExprConditionalStatementHandle(VExprConditionalStatement(pNewIf, pNewThen));
    }
    assert(0);
}
Ejemplo n.º 4
0
VExprConditionalStatementHandle VExprConditionalStatement::flatten(VExprIdentifierHandle pInstName) const {
    VExprExpressionHandle pFlatIf = getIf()->flatten(pInstName);
    VExprStatementOrNullHandle pFlatThen = getThen()->flatten(pInstName);

    if (getElse().valid()) {
        VExprStatementOrNullHandle pFlatElse = getElse()->flatten(pInstName);
        return VExprConditionalStatementHandle(VExprConditionalStatement(pFlatIf, pFlatThen, pFlatElse));
    } else {
        return VExprConditionalStatementHandle(VExprConditionalStatement(pFlatIf, pFlatThen));
    }
    assert(0);
}
Ejemplo n.º 5
0
std::string VExprConditionalStatement::getString(unsigned int indentLevel) const {
    std::string s = indent(indentLevel) + "if (" + getIf()->getString() + ") begin\n"
                 + getThen()->getString(indentLevel+1);
    if (getElse().valid() && getElse()->getStatementHandle().valid()) {
        s = s + indent(indentLevel) + "end\n"
              + indent(indentLevel) + "else begin\n"
          + getElse()->getString(indentLevel+1);
    } 
//    if (indentLevel != 0)
//        s += indent(1);
//    s += "}\n";
    
    s = s + indent(indentLevel) + "end\n";
         
    return s;
}