X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FCompiler.java;h=949ae871de523e77747cb6a0de9974fba63e9e6a;hp=bca936ca67a94183ab71d8abf11176aef767c2b2;hb=e05cc9652fbed7559107e24ade77d4656b35233e;hpb=7b490abd701dbb555dea07567a8daeaf3d36df9d diff --git a/Repair/RepairCompiler/MCC/Compiler.java b/Repair/RepairCompiler/MCC/Compiler.java index bca936c..949ae87 100755 --- a/Repair/RepairCompiler/MCC/Compiler.java +++ b/Repair/RepairCompiler/MCC/Compiler.java @@ -17,6 +17,8 @@ import MCC.IR.*; */ public class Compiler { + /* Set this flag to false to turn repairs off */ + public static boolean REPAIR=true; public static void main(String[] args) { State state = null; @@ -37,7 +39,7 @@ public class Compiler { * specified at command line */ - System.out.println("\nMCC v0.0.1 - MIT LCS (Author: Daniel Roy, Brian Demsky)"); + System.out.println("MCC v0.0.1 - MIT LCS (Author: Daniel Roy, Brian Demsky)\n"); if (cli.infile == null) { System.err.println("\nError: no input file specified"); @@ -52,7 +54,14 @@ public class Compiler { success = scan(state) || error(state, "Scanning failed, not attempting to parse."); success = parse(state) || error(state, "Parsing failed, not attempting semantic analysis."); success = semantics(state) || error(state, "Semantic analysis failed, not attempting variable initialization."); - + + + Termination termination=null; + /* Check partition constraints */ + (new ImplicitSchema(state)).update(); + termination=new Termination(state); + + state.printall(); (new DependencyBuilder(state)).calculate(); try { @@ -62,7 +71,7 @@ public class Compiler { FileOutputStream dotfile; dotfile = new FileOutputStream(cli.infile + ".dependencies.edgelabels.dot"); GraphNode.useEdgeLabels = true; - GraphNode.DOTVisitor.visit(dotfile, nodes); + GraphNode.DOTVisitor.visit(dotfile, nodes); dotfile.close(); dotfile = new FileOutputStream(cli.infile + ".dependencies.dot"); @@ -77,13 +86,24 @@ public class Compiler { try { FileOutputStream gcode = new FileOutputStream(cli.infile + ".cc"); - // do model optimizations - (new Optimizer(state)).optimize(); - NaiveGenerator ng = new NaiveGenerator(state); - ng.generate(gcode); - //WorklistGenerator wg = new WorklistGenerator(state); - //wg.generate(gcode); + // do model optimizations + //(new Optimizer(state)).optimize(); + + + + FileOutputStream gcode2 = new FileOutputStream(cli.infile + "_aux.cc"); + FileOutputStream gcode3 = new FileOutputStream(cli.infile + "_aux.h"); + RepairGenerator wg = new RepairGenerator(state,termination); + wg.generate(gcode,gcode2,gcode3, cli.infile + "_aux.h"); + gcode2.close(); + gcode3.close(); + /* } else { + WorklistGenerator ng = new WorklistGenerator(state); + SetInclusion.worklist=true; + RelationInclusion.worklist=true; + ng.generate(gcode); + }*/ gcode.close(); } catch (Exception e) { e.printStackTrace(); @@ -229,6 +249,7 @@ public class Compiler { LineCount.reset(); FileInputStream infile = new FileInputStream(state.infile + ".struct"); TDLParser parser = new TDLParser(new Lexer(infile)); + parser.filename = state.infile + ".struct"; CUP$TDLParser$actions.debug = state.verbose > 1 ; state.ptStructures = (ParseNode) parser.parse().value; } catch (FileNotFoundException fnfe) { @@ -246,6 +267,7 @@ public class Compiler { LineCount.reset(); FileInputStream infile = new FileInputStream(state.infile + ".model"); MDLParser parser = new MDLParser(new Lexer(infile)); + parser.filename = state.infile + ".model"; CUP$MDLParser$actions.debug = state.verbose > 1 ; state.ptModel = (ParseNode) parser.parse().value; } catch (FileNotFoundException fnfe) { @@ -263,14 +285,15 @@ public class Compiler { LineCount.reset(); FileInputStream infile = new FileInputStream(state.infile + ".space"); SDLParser parser = new SDLParser(new Lexer(infile)); + parser.filename = state.infile + ".space"; CUP$SDLParser$actions.debug = state.verbose > 1 ; state.ptSpace = (ParseNode) parser.parse().value; } catch (FileNotFoundException fnfe) { System.err.println("Unable to open file: " + state.infile + ".space"); System.exit(-1); } catch (Exception e) { - // System.out.println(e); - // e.printStackTrace(); + System.out.println(e); + e.printStackTrace(); return false; } @@ -280,6 +303,7 @@ public class Compiler { LineCount.reset(); FileInputStream infile = new FileInputStream(state.infile + ".constraints"); CDLParser parser = new CDLParser(new Lexer(infile)); + parser.filename = state.infile + ".constraints"; CUP$CDLParser$actions.debug = state.verbose > 1 ; state.ptConstraints = (ParseNode) parser.parse().value; } catch (FileNotFoundException fnfe) {