Пример #1
0
void prettyINPUT(INPUT* i)
{
    if(i == NULL) return;
    if(i->next)
    {
        prettyINPUT(i->next);
        fprintf(ofile, ", ");
    }
    prettyLVALUE(i->lvalue);
    fprintf(ofile, " = ");
    prettyID(i->id);
}
Пример #2
0
void prettyEXP(EXP *exp)
{ 
  if (exp == NULL)
   return;
  
  switch(exp->kind) {
  case intconstK:
    printf("%i",exp->val.intconstE);   
    break;
  case boolconstK:
    if (exp->val.boolconstE == 1)
      printf("true");
    else
      printf("false");       
    break;
  case stringconstK:
    printf("\"%s\"", exp->val.stringconstE);   
    break;
  case uminusK:
    printf("-");
    prettyEXP(exp->val.uminusE);    
    break;
  case notK:
    printf("!");
    prettyEXP(exp->val.notE.exp);    
    break;
  case lvalueK:
    prettyLVALUE(exp->val.lvalueE);
    break;
  case assignmentK:
    prettyLVALUE(exp->val.assignmentE.left);
    printf("=");
    prettyEXP(exp->val.assignmentE.right);   
    break;
  case equalsK:
    printf("(");
    prettyEXP(exp->val.equalsE.left);
    printf("==");
    prettyEXP(exp->val.equalsE.right);
    printf(")");    
    break;
  case nequalsK:
    printf("(");
    prettyEXP(exp->val.nequalsE.left);
    printf("!=");
    prettyEXP(exp->val.nequalsE.right);
    printf(")");        
    break;
  case lessK:
    printf("(");
    prettyEXP(exp->val.lessE.left);
    printf("<");
    prettyEXP(exp->val.lessE.right);
    printf(")");            
    break;
  case greaterK:
    printf("(");
    prettyEXP(exp->val.greaterE.left);
    printf(">");
    prettyEXP(exp->val.greaterE.right);
    printf(")");         
    break;
  case lequalsK:
    printf("(");
    prettyEXP(exp->val.lequalsE.left);
    printf("<=");
    prettyEXP(exp->val.lequalsE.right);
    printf(")");             
    break;
  case gequalsK:
    printf("(");
    prettyEXP(exp->val.gequalsE.left);
    printf(">=");
    prettyEXP(exp->val.gequalsE.right);
    printf(")");            
    break;
  case plusK:
    printf("(");
    prettyEXP(exp->val.plusE.left);
    printf("+");
    prettyEXP(exp->val.plusE.right);
    printf(")");         
    break;
  case minusK:
    printf("(");
    prettyEXP(exp->val.minusE.left);
    printf("-");
    prettyEXP(exp->val.minusE.right);
    printf(")");       
    break;
  case multK:
    printf("(");
    prettyEXP(exp->val.multE.left);
    printf("*");
    prettyEXP(exp->val.multE.right);
    printf(")");     
    break;
  case divK:
    printf("(");
    prettyEXP(exp->val.divE.left);
    printf("/");
    prettyEXP(exp->val.divE.right);
    printf(")");         
    break;
  case moduloK:
    printf("(");
    prettyEXP(exp->val.moduloE.left);
    printf("%%");
    prettyEXP(exp->val.moduloE.right);
    printf(")");        
    break;
  case andK:
    printf("(");
    prettyEXP(exp->val.andE.left);
    printf("&&");
    prettyEXP(exp->val.andE.right);
    printf(")");       
    break;
  case orK:
    printf("(");
    prettyEXP(exp->val.orE.left);
    printf("||");
    prettyEXP(exp->val.orE.right);
    printf(")");         
    break;
  case callK:
    printf("%s", exp->val.callE.name);
    printf("(");
    if (exp->val.callE.arguments != NULL)
      prettyEXP(exp->val.callE.arguments);
    printf(")");    
    break;
  case castK:
    printf("(");
    prettyTYPE(exp->val.castE.type);
    printf(")");
    prettyEXP(exp->val.castE.exp);    
    break;
  
  }
  
  if(exp->next != NULL) {
    printf(",");  
    prettyEXP(exp->next);  
  }  
}
Пример #3
0
void prettyEXP(EXP* e)
{
    if(e == NULL) return;
    if(e->next != NULL)
    {
        prettyEXP(e->next);
        fprintf(ofile, ", ");
    }
    switch(e->kind)
    {
        case lvalueK:
            prettyLVALUE(e->val.lvalueE);
            break;
        case assignK:
            prettyLVALUE(e->val.assignE.lvalue);
            fprintf(ofile, " = ");
            prettyEXP(e->val.assignE.expr);
            break;
        case equalsK:
            prettyEXP(e->val.equalsE.left);
            fprintf(ofile, " == ");
            prettyEXP(e->val.equalsE.right);
            break;
        case notequalsK:
            prettyEXP(e->val.notequalsE.left);
            fprintf(ofile, " != ");
            prettyEXP(e->val.notequalsE.right);
            break;
        case ltK:
            prettyEXP(e->val.ltE.left);
            fprintf(ofile, " < ");
            prettyEXP(e->val.ltE.right);
            break;
        case gtK:
            prettyEXP(e->val.gtE.left);
            fprintf(ofile, " > ");
            prettyEXP(e->val.gtE.right);
            break;
        case lteK:
            prettyEXP(e->val.lteE.left);
            fprintf(ofile, " <= ");
            prettyEXP(e->val.lteE.right);
            break;
        case gteK:
            prettyEXP(e->val.gteE.left);
            fprintf(ofile, " >= ");
            prettyEXP(e->val.gteE.right);
            break;
        case notK:
            fprintf(ofile, "!");
            prettyEXP(e->val.exprE);
            break;
        case plusK:
            prettyEXP(e->val.plusE.left);
            fprintf(ofile, " + ");
            prettyEXP(e->val.plusE.right);
            break;
        case minusK:
            prettyEXP(e->val.minusE.left);
            fprintf(ofile, " - ");
            prettyEXP(e->val.minusE.right);
            break;
        case multK:
            prettyEXP(e->val.multE.left);
            fprintf(ofile, " * ");
            prettyEXP(e->val.multE.right);
            break;
        case divK:
            prettyEXP(e->val.divE.left);
            fprintf(ofile, " / ");
            prettyEXP(e->val.divE.right);
            break;
        case modK:
            prettyEXP(e->val.modE.left);
            fprintf(ofile, " %% ");
            prettyEXP(e->val.modE.right);
            break;
        case andK:
            prettyEXP(e->val.andE.left);
            fprintf(ofile, " && ");
            prettyEXP(e->val.andE.right);
            break;
        case orK:
            prettyEXP(e->val.orE.left);
            fprintf(ofile, " || ");
            prettyEXP(e->val.orE.right);
            break;
        case joinK:
            prettyEXP(e->val.joinE.left);
            fprintf(ofile, " << ");
            prettyEXP(e->val.joinE.right);
            break;
        case keepK:
            prettyEXP(e->val.keepE.left);
            fprintf(ofile, " \\+ ");
            prettyID(e->val.keepE.right);
            break;
        case removeK:
            prettyEXP(e->val.removeE.left);
            fprintf(ofile, " \\- ");
            prettyID(e->val.removeE.right);
            break;
        case callK:
            prettyID(e->val.callE.left);
            fprintf(ofile, "(");
            prettyEXP(e->val.callE.right);
            fprintf(ofile, ")");
            break;
        case intconstK:
            fprintf(ofile, "%d", e->val.intconstE);
            break;
        case trueK:
            fprintf(ofile, "true");
            break;
        case falseK:
            fprintf(ofile, "false");
            break;
        case stringconstK:
            fprintf(ofile, "\"%s\"", e->val.stringconstE);
            break;
        case tupleK:
            fprintf(ofile, "tuple {");
            prettyFIELDVALUE(e->val.tupleE);
            fprintf(ofile, "}");
            break;
        case parenK:
            fprintf(ofile, "(");
            prettyEXP(e->val.exprE);
            fprintf(ofile, ")");
            break;
    }
}