Bug fixes for parsing sum expressions.
authorbdemsky <bdemsky>
Wed, 27 Oct 2004 19:30:29 +0000 (19:30 +0000)
committerbdemsky <bdemsky>
Wed, 27 Oct 2004 19:30:29 +0000 (19:30 +0000)
Repair/RepairCompiler/MCC/CDL.cup
Repair/RepairCompiler/MCC/IR/SemanticChecker.java
Repair/RepairCompiler/MCC/IR/SumExpr.java

index f491a6e556567f337e575b0b0f162a057acb4c5c..12b94a4b3ede49f20dc9d8542bde3871efb8798f 100755 (executable)
@@ -482,9 +482,10 @@ expr ::=
        SUM OPENPAREN ID:set DOT ID:relation CLOSEPAREN
        {:
        debugMessage(PRODSTRING);
-       ParseNode expr = new ParseNode("sumexpr", parser.curLine(3));
-       expr.addChild("dot").addChild("set", parser.curLine(3)).addChild(set);
-       expr.getChild("dot").addChild("relation", parser.curLine(1)).addChild(relation);
+       ParseNode expr = new ParseNode("expr", parser.curLine(1));      
+       expr.addChild("sumexpr", parser.curLine(3));
+       expr.getChild("sumexpr").addChild("dot").addChild("set", parser.curLine(3)).addChild(set);
+       expr.getChild("sumexpr").getChild("dot").addChild("relation", parser.curLine(1)).addChild(relation);
        RESULT = expr;
        :}
 
index 734f6d05365c85183a06d175649127377ed1ccf2..b7f34799f0f6de097fc0cb353cd49b859215a10c 100755 (executable)
@@ -1412,7 +1412,7 @@ public class SemanticChecker {
         if (!precheck(pn, "sumexpr")) {
             return null;
         }
-        String setname = pn.getChild("set").getTerminal();
+        String setname = pn.getChild("dot").getChild("set").getTerminal();
         assert setname != null;
         SetDescriptor sd = lookupSet(setname);
 
index a03338e9dde7b148b76a108a5227cc744c8504d7..34457c3f8d8100453a96bab712b336764d6e73f1 100755 (executable)
@@ -17,7 +17,7 @@ public class SumExpr extends Expr {
     }
 
     public String name() {
-       return "sum("+sd.getSafeSymbol()+"."+rd.getSafeSymbol()+")";
+       return "sum("+sd.toString()+"."+rd.toString()+")";
     }
 
     public boolean equals(Map remap, Expr e) {
@@ -39,7 +39,7 @@ public class SumExpr extends Expr {
     }
 
     public Descriptor getDescriptor() {
-        throw new Error();
+        throw new Error("Sum shouldn't appear on left hand side!");
     }
 
     public boolean inverted() {
@@ -59,9 +59,9 @@ public class SumExpr extends Expr {
 
     public void prettyPrint(PrettyPrinter pp) {
         pp.output("sum(");
-        pp.output(sd.getSafeSymbol());
+        pp.output(sd.toString());
         pp.output(".");
-        pp.output(rd.getSafeSymbol());
+        pp.output(rd.toString());
         pp.output(")");
     }