From e05cc9652fbed7559107e24ade77d4656b35233e Mon Sep 17 00:00:00 2001 From: cristic Date: Thu, 15 Apr 2004 21:18:06 +0000 Subject: [PATCH] OK, the parser now looks more decent. Still have to work on the semantics errors. --- Repair/RepairCompiler/MCC/CDL.cup | 14 +++++++++++++- Repair/RepairCompiler/MCC/Compiler.java | 2 +- Repair/RepairCompiler/MCC/MDL.cup | 21 ++++++++++++++++++++- Repair/RepairCompiler/MCC/SDL.cup | 9 ++++++--- Repair/RepairCompiler/MCC/TDL.cup | 4 +++- 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/Repair/RepairCompiler/MCC/CDL.cup b/Repair/RepairCompiler/MCC/CDL.cup index e77068d..76f769d 100755 --- a/Repair/RepairCompiler/MCC/CDL.cup +++ b/Repair/RepairCompiler/MCC/CDL.cup @@ -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); } diff --git a/Repair/RepairCompiler/MCC/Compiler.java b/Repair/RepairCompiler/MCC/Compiler.java index c2d1612..949ae87 100755 --- a/Repair/RepairCompiler/MCC/Compiler.java +++ b/Repair/RepairCompiler/MCC/Compiler.java @@ -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"); diff --git a/Repair/RepairCompiler/MCC/MDL.cup b/Repair/RepairCompiler/MCC/MDL.cup index 0a3aa09..efd4942 100755 --- a/Repair/RepairCompiler/MCC/MDL.cup +++ b/Repair/RepairCompiler/MCC/MDL.cup @@ -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); } diff --git a/Repair/RepairCompiler/MCC/SDL.cup b/Repair/RepairCompiler/MCC/SDL.cup index ee5172c..9792ebd 100755 --- a/Repair/RepairCompiler/MCC/SDL.cup +++ b/Repair/RepairCompiler/MCC/SDL.cup @@ -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); } diff --git a/Repair/RepairCompiler/MCC/TDL.cup b/Repair/RepairCompiler/MCC/TDL.cup index db35ad5..25ba2dd 100755 --- a/Repair/RepairCompiler/MCC/TDL.cup +++ b/Repair/RepairCompiler/MCC/TDL.cup @@ -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); } -- 2.34.1