Nicer semantic error messages, removed duplicates.
authorcristic <cristic>
Thu, 15 Apr 2004 22:11:48 +0000 (22:11 +0000)
committercristic <cristic>
Thu, 15 Apr 2004 22:11:48 +0000 (22:11 +0000)
Repair/RepairCompiler/MCC/IR/SimpleIRErrorReporter.java
Repair/RepairCompiler/MCC/IR/VarExpr.java
Repair/RepairCompiler/compiler-steps.txt

index 3c64101e9494561700e5c9bd6414d51468ea202e..11e8db33bf87e5436841f98dad323e0e2fb2627d 100755 (executable)
@@ -25,7 +25,7 @@ public class SimpleIRErrorReporter implements IRErrorReporter {
        LinedMessage sem = new LinedMessage();
        sem.error = true;
        sem.pn = v;
-       sem.message = s;
+       sem.message = s;        
 
        add(sem);
        
@@ -42,8 +42,24 @@ public class SimpleIRErrorReporter implements IRErrorReporter {
        add(sem);
     }
 
+
+    private boolean messageExists(LinedMessage sem) {
+       for (int i = 0; i < messages.size(); i++) {
+           
+           LinedMessage cur = (LinedMessage) messages.elementAt(i);
+           
+           if (cur.message.equals(sem.message))
+               return true;
+       }
+       return false;
+    }
+    
+
     private void add(LinedMessage sem) {
 
+       if (messageExists(sem)) 
+           return;
+
        if (sem.pn == null) {
            messages.addElement(sem);
            return;
@@ -68,15 +84,15 @@ public class SimpleIRErrorReporter implements IRErrorReporter {
        for (int i = 0; i < messages.size(); i++) {
            LinedMessage sem = (LinedMessage)messages.elementAt(i);
            if (sem.error) {
-               output += "error";
+               output += "Semantic Error";
            } else {
-               output += "warning";
+               output += "Semantic Warning";
            }
 
            if (sem.pn != null) {
-               output += " (" + filename + sem.pn.getLine() + "): ";
+               output += ": " + filename + ": "+sem.pn.getLine() + ": ";
            } else {
-                output += " : ";
+                output += ": ";
             }
 
            output += sem.message;
index fcec02cd4c5fbab1e7858b1e4b6b0e54a2c9133f..76ab41626d1f11542c9b7b074c043ce610320da9 100755 (executable)
@@ -112,7 +112,7 @@ public class VarExpr extends Expr {
         vd = (VarDescriptor) sa.getSymbolTable().get(varname);
 
         if (vd == null) {
-            System.out.println(varname);
+            //System.out.println(varname);
             sa.getErrorReporter().report(null, "Undefined variable '" + varname + "'");
             return null;
         }
index 336662fbcb0847d9484604cd01d3332ed0aedbcf..09254b3646fb30fd63be5a4b41f1fe137c1741fa 100755 (executable)
@@ -12,7 +12,7 @@ For the specifs in ex.constraints, ex.struct, ex.space, ex.abstract, ex.model
 in directory Repair/Ex:
 
 A) cd Ex
-B) java -classpath <path to RepairCompiler> MCC.Compiler ex
+B) java -classpath <path to RepairCompiler> MCC.Compiler -checkonly ex
 
 which builds:
   ex.cc
@@ -25,9 +25,14 @@ which builds:
 Step 3: Compile checker
 -----------------------
 
-A) copy generated files into Runtime directory
-B) remove old object files rm *.o
-C) run ./buildruntime
-D) build checking object: g++ -g -c ex_aux.cc
-E) g++ -g ex_test.cc *.o
-F) run ./a.out
+A) copy the Runtime directory in Repair/Ex:   
+   cp -r <path to RepairCompiler>/MCC/Runtime .
+B) copy generated files into the Runtime directory 
+   cp ex.cc ex_aux.* size.* Runtime
+B) remove old object files 
+   cd Runtime; rm *.o
+C) ./buildruntime
+D) build checking object: 
+   g++ -g -c ex_aux.cc
+E) g++ -g ex_test.cc *.o -o ex
+F) ./ex