Some modifications to allow to print the name of the file when a syntax error is...
[repair.git] / Repair / RepairCompiler / MCC / Compiler.java
index 7ea9362de66b9d1660172afdc5f46c6ccf59e3a2..0395872829aaed67cb77ea53643fbdc6b86e716b 100755 (executable)
@@ -17,6 +17,8 @@ import MCC.IR.*;
  */
 
 public class Compiler {
+    /* Set this flag to false to turn repairs off */
+    public static boolean REPAIR=false;
     
     public static void main(String[] args) {
         State state = null;
@@ -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");
@@ -76,8 +85,25 @@ public class Compiler {
             
             try {
                 FileOutputStream gcode = new FileOutputStream(cli.infile + ".cc");
-                NaiveGenerator ng = new NaiveGenerator(state);
-                ng.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();
@@ -240,6 +266,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,8 +290,8 @@ public class Compiler {
             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;
        }