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, "}"); }
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); }
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); }
void CallExp::dump(int i) { UnaExp::dump(i); dumpExpressions(i, arguments); }