Пример #1
0
void makeOil(astree* root){
  dumpStruct(root);
  dumpStrincons();
  dumpGlobalVars(root);
  dumpFunction(root);
  fprintf(file_oil, "void __ocmain (void)\n{\n");
  dumpExpressions(root, 0);
  fprintf(file_oil, "}");
}
Пример #2
0
void dumpIfElse(astree* curr, int flag){
  fprintf(file_oil, "if_%zu_%zu_%zu:;\n", curr->filenr,
                    curr->linenr, curr->offset);
  string comp = recursBinop(curr->children[0], NULL, flag);
  fprintf(file_oil, "\tchar b%d = %s;\n", breg, comp.c_str());
          breg++;
  fprintf(file_oil, "\tif (!b%d) goto else_%zu_%zu_%zu;\n",
                    breg, curr->filenr,
                    curr->linenr, curr->offset);
  dumpExpressions(curr->children[1], flag);
  fprintf(file_oil, "\tgoto fi_%zu_%zu_%zu;\n",
                    curr->filenr,
                    curr->linenr, curr->offset);
fprintf(file_oil, "else_%zu_%zu_%zu:;\n",
        curr->filenr,
        curr->linenr, curr->offset);
  dumpExpressions(curr->children[2], flag);
  fprintf(file_oil, "fi_%zu_%zu_%zu:;\n", curr->filenr,
                    curr->linenr, curr->offset);
}
Пример #3
0
void dumpWhile(astree* curr, int flag){
  fprintf(file_oil, "while_%zu_%zu_%zu:;\n", curr->filenr,
                    curr->linenr, curr->offset);
  string comp = recursBinop(curr->children[0], NULL, flag);
  fprintf(file_oil, "\tchar b%d = %s;\n", breg, comp.c_str());
  fprintf(file_oil, "\tif (!b%d) goto break_%zu_%zu_%zu;\n",
                    breg, curr->filenr,
                    curr->linenr, curr->offset);
  breg++;
  dumpExpressions(curr->children[1], flag);
  fprintf(file_oil, "\tgoto while_%zu_%zu_%zu;\n", curr->filenr,
                    curr->linenr, curr->offset);
  fprintf(file_oil, "break_%zu_%zu_%zu:\n", curr->filenr,
                    curr->linenr, curr->offset);
}
Пример #4
0
void CallExp::dump(int i)
{
    UnaExp::dump(i);
    dumpExpressions(i, arguments);
}