X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FRepairGenerator.java;h=71ff6edc3b7c0651e4eae60f558eab817a605cdf;hp=8bff95979b21a2b555a82e1a6d67102e13b9607f;hb=04f85f882f97b329b34d2a898454af2c6382ab0f;hpb=1ac19ae1b06036f6883e3a5f91b8a85ecab9ab72 diff --git a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java index 8bff959..71ff6ed 100755 --- a/Repair/RepairCompiler/MCC/IR/RepairGenerator.java +++ b/Repair/RepairCompiler/MCC/IR/RepairGenerator.java @@ -88,6 +88,7 @@ public class RepairGenerator { generate_call(); generate_start(); generate_rules(); + generate_print(); generate_checks(); generate_teardown(); CodeWriter crhead = new StandardCodeWriter(this.outputhead); @@ -474,6 +475,52 @@ public class RepairGenerator { cr.endblock(); } + private void generate_print() { + + final SymbolTable st = new SymbolTable(); + + CodeWriter cr = new StandardCodeWriter(outputaux) { + public SymbolTable getSymbolTable() { return st; } + }; + + cr.outputline("// printing sets!"); + cr.outputline("printf(\"\\n\\nPRINTING SETS AND RELATIONS\\n\");"); + + Iterator setiterator = state.stSets.descriptors(); + while (setiterator.hasNext()) { + SetDescriptor sd = (SetDescriptor) setiterator.next(); + if (sd.getSymbol().equals("int") || sd.getSymbol().equals("token")) { + continue; + } + + String setname = sd.getSafeSymbol(); + + cr.startblock(); + cr.outputline("// printing set " + setname); + cr.outputline("printf(\"\\nPrinting set " + sd.getSymbol() + " - %d elements \\n\", " + setname + "_hash->count());"); + cr.outputline("SimpleIterator __setiterator;"); + cr.outputline("" + setname + "_hash->iterator(__setiterator);"); + cr.outputline("while (__setiterator.hasNext())"); + cr.startblock(); + cr.outputline("int __setval = (int) __setiterator.next();"); + + TypeDescriptor td = sd.getType(); + if (td instanceof StructureTypeDescriptor) { + StructureTypeDescriptor std = (StructureTypeDescriptor) td; + VarDescriptor vd = new VarDescriptor ("__setval", "__setval", td, false); + std.generate_printout(cr, vd); + } else { // Missing type descriptor or reserved type, just print int + cr.outputline("printf(\"<%d> \", __setval);"); + } + + + cr.endblock(); + cr.endblock(); + } + + cr.outputline("printf(\"\\n\\n------------------- END PRINTING\\n\");"); + } + Set ruleset=null; private void generate_rules() { /* first we must sort the rules */ @@ -630,10 +677,13 @@ public class RepairGenerator { private void generate_checks() { /* do constraint checks */ - Vector constraints = state.vConstraints; + // Vector constraints = state.vConstraints; + - for (int i = 0; i < constraints.size(); i++) { - Constraint constraint = (Constraint) constraints.elementAt(i); + // for (int i = 0; i < constraints.size(); i++) { + // Constraint constraint = (Constraint) constraints.elementAt(i); + for (Iterator i = termination.constraintdependence.computeOrdering().iterator(); i.hasNext();) { + Constraint constraint = (Constraint) ((GraphNode)i.next()).getOwner(); { final SymbolTable st = constraint.getSymbolTable();