Some modifications to allow to print the name of the file when a syntax error is...
[repair.git] / Repair / RepairCompiler / MCC / MDL.cup
index 44a64df09fbd37623cd46d93406299924ee4bbb8..b8a2ad16e16e96205ba9c2a63e6347ad1ce67b2f 100755 (executable)
@@ -56,13 +56,16 @@ action code {:
 init with {: :}
 
 parser code {:
 init with {: :}
 
 parser code {:
+
+       public String filename;
        
        public void syntax_error (java_cup.runtime.Symbol current) {
 
                CUP$MDLParser$actions.errors = true;
                Symbol symbol = (Symbol) current;
        
        public void syntax_error (java_cup.runtime.Symbol current) {
 
                CUP$MDLParser$actions.errors = true;
                Symbol symbol = (Symbol) current;
-               report_error("MDL: Syntax error at line " + (symbol.line + 1)
-               + ", column " + LineCount.getColumn(symbol.left) + ": " + current.value, current);
+               report_error(filename+": Syntax error at line " +
+(symbol.line + 1) + ", column " + LineCount.getColumn(symbol.left) +
+": " + current.value, current);
        }
 
        public void report_fatal_error (String message, Object info) {
        }
 
        public void report_fatal_error (String message, Object info) {
@@ -142,6 +145,7 @@ parser code {:
 
     terminal IMPLIES;
     terminal TRUE;
 
     terminal IMPLIES;
     terminal TRUE;
+    terminal FALSE;
     terminal ISVALID;
     terminal FOR;
     terminal TO;
     terminal ISVALID;
     terminal FOR;
     terminal TO;
@@ -604,12 +608,19 @@ expr ::=
 /** standard *********************************/
 
 literal ::=
 /** standard *********************************/
 
 literal ::=
+
        TRUE
        {:
        debugMessage(PRODSTRING);
        RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("boolean").addChild("true").getRoot();
        :}
        
        TRUE
        {:
        debugMessage(PRODSTRING);
        RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("boolean").addChild("true").getRoot();
        :}
        
+       | FALSE
+       {:
+       debugMessage(PRODSTRING);
+       RESULT = (new ParseNode("literal", parser.curLine(1))).addChild("boolean").addChild("false").getRoot();
+       :}
+       
        | DECIMAL:dec
        {:
        debugMessage(PRODSTRING);
        | DECIMAL:dec
        {:
        debugMessage(PRODSTRING);