OK, the parser now looks more decent.
authorcristic <cristic>
Thu, 15 Apr 2004 21:18:06 +0000 (21:18 +0000)
committercristic <cristic>
Thu, 15 Apr 2004 21:18:06 +0000 (21:18 +0000)
Still have to work on the semantics errors.

Repair/RepairCompiler/MCC/CDL.cup
Repair/RepairCompiler/MCC/Compiler.java
Repair/RepairCompiler/MCC/MDL.cup
Repair/RepairCompiler/MCC/SDL.cup
Repair/RepairCompiler/MCC/TDL.cup

index e77068d0b550de52ebbf8582d8c6b42ca4195017..76f769d58151caa7c956d27eb1982cf54b916a06 100755 (executable)
@@ -63,7 +63,19 @@ parser code {:
 
                CUP$CDLParser$actions.errors = true;
                Symbol symbol = (Symbol) current;
-               report_error(filename+":"+(symbol.line+1)+": Syntax error at column " + LineCount.getColumn(symbol.left) +": " + current.value, current);
+
+               boolean isInteger = true;
+               try{ 
+                   Integer.parseInt(current.value.toString());
+               } catch(NumberFormatException e) { isInteger = false;}
+
+                report_error(filename+":"+(symbol.line+1)+": Syntax error at column " 
+                + (LineCount.getColumn(symbol.left)+1) +": " + current.value, current);
+
+               if (current.value.equals("true") || isInteger)
+                  System.out.println("Did you mean literal("+current.value+")?");
+
+               System.out.println();
                System.exit(0);
        }
 
index c2d16124949e68e7e20c68ec03a2d55d3fbd9e63..949ae871de523e77747cb6a0de9974fba63e9e6a 100755 (executable)
@@ -39,7 +39,7 @@ public class Compiler {
          * specified at command line
          */
 
-        System.out.println("\nMCC v0.0.1 - MIT LCS (Author: Daniel Roy, Brian Demsky)");
+        System.out.println("MCC v0.0.1 - MIT LCS (Author: Daniel Roy, Brian Demsky)\n");
 
        if (cli.infile == null) {
            System.err.println("\nError: no input file specified");
index 0a3aa0975b37d95b206f2c023e7db0178c02ae69..efd49425a8caba6817f45243149a42306158cf8e 100755 (executable)
@@ -63,7 +63,26 @@ parser code {:
 
                CUP$MDLParser$actions.errors = true;
                Symbol symbol = (Symbol) current;
-               report_error(filename+":"+(symbol.line+1)+": Syntax error at column " + LineCount.getColumn(symbol.left) +": " + current.value, current);
+
+               //System.out.println("current.value = "+current.value + " " + current.value.equals("true"));
+               //System.out.println("current = " + current);
+
+               boolean isInteger = true;
+               try{ 
+                   Integer.parseInt(current.value.toString());
+               } catch(NumberFormatException e) { isInteger = false;}
+
+                report_error(filename+":"+(symbol.line+1)+": Syntax error at column " 
+                + (LineCount.getColumn(symbol.left)+1) +": " + current.value, current);
+
+               if (current.value.equals("true") || isInteger)
+                  System.out.println("Did you mean literal("+current.value+")?");
+              
+                       if (LineCount.getColumn(symbol.left) == 0)      
+                  System.out.println("Did you forget a semicolon on the previous line?");    
+               
+
+               System.out.println();
                System.exit(0);
        }
 
index ee5172cba3e07342d01cac27efd37297c0626fbd..9792ebd120d10047c3c2d14a0ed13ea85c042530 100755 (executable)
@@ -62,9 +62,12 @@ parser code {:
        public void syntax_error (java_cup.runtime.Symbol current) {
 
                CUP$SDLParser$actions.errors = true;
-               Symbol symbol = (Symbol) current;
-               report_error("TDL: Syntax error at line " + (symbol.line + 1)
-               + ", column " + LineCount.getColumn(symbol.left) + ": " + current.value, current);
+               Symbol symbol = (Symbol) current;               
+
+               report_error(filename+":"+(symbol.line+1)+": Syntax error at column " 
+                + (LineCount.getColumn(symbol.left)+1) +": " + current.value, current);
+
+               System.out.println();
                System.exit(0);
        }
 
index db35ad5cc0af5510ec2bceabb34eab2a5f15378c..25ba2dd3e9e850ac635e2e45135be25f7f4114ce 100755 (executable)
@@ -63,7 +63,9 @@ parser code {:
 
                CUP$TDLParser$actions.errors = true;
                Symbol symbol = (Symbol) current;
-               report_error(filename+":"+(symbol.line+1)+": Syntax error at column " + LineCount.getColumn(symbol.left) +": " + current.value, current);
+               report_error(filename+":"+(symbol.line+1)+": Syntax error at column " 
+                + (LineCount.getColumn(symbol.left)+1) +": " + current.value, current);
+               System.out.println();
                System.exit(0);
        }