Hack grammar to add unary minus.
[repair.git] / Repair / RepairCompiler / MCC / CDL.cup
index 4206e84c543a9f0109e2661091651b3eccd0ece4..12021e6d0fdfc587145de676907d87b336413a46 100755 (executable)
@@ -175,6 +175,7 @@ parser code {:
     terminal LABEL;
     terminal INT;
     terminal SUBTYPE;
+    terminal SUBCLASS;
     terminal OF;
 
     terminal SEMICOLON;
@@ -456,6 +457,24 @@ setexpr ::=
        set.getChild("dotinv").addChild("relation", parser.curLine(1)).addChild(relation);
        RESULT = set;
        :}
+
+       | setexpr:setexpr DOT ID:relation
+       {:
+       debugMessage(PRODSTRING);
+       ParseNode set = new ParseNode("setexpr", parser.curLine(3));
+       set.addChild("dotset").addChild(setexpr);
+       set.getChild("dotset").addChild("relation", parser.curLine(1)).addChild(relation);
+       RESULT = set;
+       :}
+
+       | setexpr:setexpr DOTINV ID:relation
+       {:
+       debugMessage(PRODSTRING);
+       ParseNode set = new ParseNode("setexpr", parser.curLine(3));
+       set.addChild("dotinvset").addChild(setexpr);
+       set.getChild("dotinvset").addChild("relation", parser.curLine(1)).addChild(relation);
+       RESULT = set;
+       :}
        ;
        
 expr ::=
@@ -610,6 +629,12 @@ literal ::=
        debugMessage(PRODSTRING);
        RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("decimal").addChild(dec).getRoot();
        :}
+
+       | SUB DECIMAL:dec
+       {:
+       debugMessage(PRODSTRING);
+       RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("decimal").addChild("-"+dec).getRoot();
+       :}
         
        | STRING:str
        {: