Преглед изворни кода

Merge branch 'master' into 192-webreport

Sebastian Hahner пре 5 година
родитељ
комит
e63d7a6bfb
70 измењених фајлова са 370 додато и 769 уклоњено
  1. 6 6
      jplag.frontend-utils/src/main/java/de/jplag/AbstractParser.java
  2. 5 5
      jplag.frontend-utils/src/main/java/de/jplag/Language.java
  3. 3 10
      jplag.frontend-utils/src/main/java/de/jplag/ParserToken.java
  4. 1 1
      jplag.frontend-utils/src/main/java/de/jplag/Program.java
  5. 0 4
      jplag.frontend-utils/src/main/java/de/jplag/Token.java
  6. 3 3
      jplag.frontend.chars/src/main/java/de/jplag/chars/CharToken.java
  7. 13 12
      jplag.frontend.chars/src/main/java/de/jplag/chars/Language.java
  8. 4 23
      jplag.frontend.chars/src/main/java/de/jplag/chars/Parser.java
  9. 3 5
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPToken.java
  10. 3 1
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPTokenConstants.java
  11. 12 11
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/Language.java
  12. 6 5
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/Scanner.java
  13. 3 5
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpToken.java
  14. 3 1
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpTokenConstants.java
  15. 13 12
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Language.java
  16. 5 3
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Parser.java
  17. 3 5
      jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/JavaToken.java
  18. 3 1
      jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/JavaTokenConstants.java
  19. 12 11
      jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/Language.java
  20. 7 4
      jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/Parser.java
  21. 3 5
      jplag.frontend.java-1.2/src/main/java/de/jplag/java/JavaToken.java
  22. 3 1
      jplag.frontend.java-1.2/src/main/java/de/jplag/java/JavaTokenConstants.java
  23. 13 12
      jplag.frontend.java-1.2/src/main/java/de/jplag/java/Language.java
  24. 5 3
      jplag.frontend.java-1.2/src/main/java/de/jplag/java/Parser.java
  25. 3 5
      jplag.frontend.java-1.5/src/main/java/de/jplag/java15/JavaToken.java
  26. 3 1
      jplag.frontend.java-1.5/src/main/java/de/jplag/java15/JavaTokenConstants.java
  27. 13 12
      jplag.frontend.java-1.5/src/main/java/de/jplag/java15/Language.java
  28. 14 12
      jplag.frontend.java-1.5/src/main/java/de/jplag/java15/LanguageWithDelimitedMethods.java
  29. 6 4
      jplag.frontend.java-1.5/src/main/java/de/jplag/java15/Parser.java
  30. 0 63
      jplag.frontend.java-1.5/src/main/java/de/jplag/java15/grammar/JavaTabModCharStream.java
  31. 3 5
      jplag.frontend.java-1.7/src/main/java/de/jplag/java17/JavaToken.java
  32. 3 1
      jplag.frontend.java-1.7/src/main/java/de/jplag/java17/JavaTokenConstants.java
  33. 2 2
      jplag.frontend.java-1.7/src/main/java/de/jplag/java17/JplagJava7Listener.java
  34. 15 14
      jplag.frontend.java-1.7/src/main/java/de/jplag/java17/Language.java
  35. 5 3
      jplag.frontend.java-1.7/src/main/java/de/jplag/java17/Parser.java
  36. 1 1
      jplag.frontend.java-1.7/src/test/java/de/jplag/StrippedProgram.java
  37. 3 5
      jplag.frontend.java-1.9/src/main/java/de/jplag/java19/JavaToken.java
  38. 9 7
      jplag.frontend.java-1.9/src/main/java/de/jplag/java19/JavaTokenConstants.java
  39. 9 9
      jplag.frontend.java-1.9/src/main/java/de/jplag/java19/Language.java
  40. 7 4
      jplag.frontend.java-1.9/src/main/java/de/jplag/java19/Parser.java
  41. 1 1
      jplag.frontend.python-3/src/main/java/de/jplag/python3/JplagPython3Listener.java
  42. 15 14
      jplag.frontend.python-3/src/main/java/de/jplag/python3/Language.java
  43. 6 4
      jplag.frontend.python-3/src/main/java/de/jplag/python3/Parser.java
  44. 3 5
      jplag.frontend.python-3/src/main/java/de/jplag/python3/Python3Token.java
  45. 3 1
      jplag.frontend.python-3/src/main/java/de/jplag/python3/Python3TokenConstants.java
  46. 0 52
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/InsertStream.java
  47. 13 12
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/Language.java
  48. 7 4
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/Parser.java
  49. 0 4
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeToken.java
  50. 3 1
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeTokenConstants.java
  51. 13 12
      jplag.frontend.text/src/main/java/de/jplag/text/Language.java
  52. 6 3
      jplag.frontend.text/src/main/java/de/jplag/text/Parser.java
  53. 5 15
      jplag.frontend.text/src/main/java/de/jplag/text/TextToken.java
  54. 0 5
      jplag.parent/pom.xml
  55. 0 14
      jplag.utils/pom.xml
  56. 0 51
      jplag.utils/src/main/java/de/jplag/utils/DesktopUtils.java
  57. 0 19
      jplag.utils/src/main/java/de/jplag/utils/PropertiesLoader.java
  58. 0 5
      jplag/pom.xml
  59. 2 2
      jplag/src/main/java/de/jplag/CLI.java
  60. 15 15
      jplag/src/main/java/de/jplag/GreedyStringTiling.java
  61. 12 12
      jplag/src/main/java/de/jplag/JPlag.java
  62. 2 2
      jplag/src/main/java/de/jplag/JPlagResult.java
  63. 1 1
      jplag/src/main/java/de/jplag/Submission.java
  64. 25 25
      jplag/src/main/java/de/jplag/options/JPlagOptions.java
  65. 1 1
      jplag/src/main/java/de/jplag/reporting/Report.java
  66. 0 182
      jplag/src/main/javacc/filter.jj
  67. 1 1
      jplag/src/test/java/de/jplag/VolumeTest.java
  68. 4 4
      jplag/src/test/java/de/jplag/cli/MinTokenMatchTest.java
  69. 4 4
      jplag/src/test/java/de/jplag/cli/StoredMatchesTest.java
  70. 0 1
      pom.xml

+ 6 - 6
jplag.frontend-utils/src/main/java/de/jplag/Parser.java → jplag.frontend-utils/src/main/java/de/jplag/AbstractParser.java

@@ -4,13 +4,13 @@ package de.jplag;
  * @author Emeric Kwemou
  * @date 22.01.2005
  */
-public abstract class Parser { // TODO TS: We should rename this class, as all concrete parsers shadow its name.
-    protected ProgramI program;
+public abstract class AbstractParser { // TODO TS: We should rename this class, as all concrete parsers shadow its name.
+    protected Program program;
     protected int errors = 0;
     private int errorsSum = 0;
 
-    public boolean getErrors() {
-        return (errors != 0);
+    public boolean hasErrors() {
+        return errors != 0;
     }
 
     public int errorsCount() {
@@ -21,11 +21,11 @@ public abstract class Parser { // TODO TS: We should rename this class, as all c
         errorsSum += errors;
     }
 
-    public ProgramI getProgram() {
+    public Program getProgram() {
         return program;
     }
 
-    public void setProgram(ProgramI prog) {
+    public void setProgram(Program prog) {
         this.program = prog;
     }
 }

+ 5 - 5
jplag.frontend-utils/src/main/java/de/jplag/Language.java

@@ -15,7 +15,7 @@ public interface Language {
     /**
      * Descriptive name of the language.
      */
-    public String name();
+    public String getName();
 
     /**
      * Short name of the language used for CLI options.
@@ -25,7 +25,7 @@ public interface Language {
     /**
      * Minimum number of tokens required for a match.
      */
-    public int min_token_match();
+    public int minimumTokenMatch();
 
     /**
      * Parses a set files in a directory.
@@ -35,12 +35,12 @@ public interface Language {
     /**
      * Whether errors were found during the last {@link #parse}.
      */
-    public boolean errors();
+    public boolean hasErrors();
 
     /**
      * Number of errors found during the last {@link #parse}.
      */
-    public int errorsCount();
+    public int errorCount();
 
     /**
      * Determines whether the parser provide column information.
@@ -60,7 +60,7 @@ public interface Language {
     /**
      * Number of defined tokens in the scanner of the language.
      */
-    public int noOfTokens();
+    public int numberOfTokens();
 
     /**
      * Convert a token type to a text representation.

+ 3 - 10
jplag.frontend-utils/src/main/java/de/jplag/ParserToken.java

@@ -1,6 +1,8 @@
 package de.jplag;
 
-public class ParserToken extends antlr.Token {
+import antlr.Token;
+
+public class ParserToken extends Token {
     /**
      * This variable holds the line number of the current token.
      */
@@ -26,15 +28,6 @@ public class ParserToken extends antlr.Token {
         super();
     }
 
-    public ParserToken(int type) {
-        super(type);
-    }
-
-    public ParserToken(int type, String text) {
-        super(type, text);
-        setText(text);
-    }
-
     @Override
     public void setLine(int line) {
         _line = line;

+ 1 - 1
jplag.frontend-utils/src/main/java/de/jplag/ProgramI.java → jplag.frontend-utils/src/main/java/de/jplag/Program.java

@@ -1,6 +1,6 @@
 package de.jplag;
 
-public interface ProgramI {
+public interface Program {
 
     /**
      * Print and store an error.

+ 0 - 4
jplag.frontend-utils/src/main/java/de/jplag/Token.java

@@ -52,8 +52,4 @@ abstract public class Token implements TokenConstants, Serializable {
     public String toString() {
         return type2string(type);
     }
-
-    public static int numberOfTokens() {
-        return 1;
-    }
 }

+ 3 - 3
jplag.frontend.chars/src/main/java/de/jplag/chars/CharToken.java

@@ -1,6 +1,8 @@
 package de.jplag.chars;
 
-public class CharToken extends de.jplag.Token {
+import de.jplag.Token;
+
+public class CharToken extends Token {
 	private static final long serialVersionUID = 1L;
 
 	private int index;
@@ -27,6 +29,4 @@ public class CharToken extends de.jplag.Token {
 
 	@Override
     public int getIndex() { return index; }
-
-	public static int numberOfTokens() { return 36;	}
 }

+ 13 - 12
jplag.frontend.chars/src/main/java/de/jplag/chars/Language.java

@@ -2,18 +2,19 @@ package de.jplag.chars;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
 import de.jplag.Token;
+import de.jplag.TokenList;
 
 /*
  * read in text files as characters
  */
 public class Language implements de.jplag.Language {
-	private ProgramI program;
+	private Program program;
 
 	private de.jplag.chars.Parser parser = new Parser();
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.program = program;
 		this.parser.setProgram(this.program);
 	}
@@ -30,13 +31,13 @@ public class Language implements de.jplag.Language {
 	 * @see de.jplag.Language#errorsCount()
 	 */
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
 	@Override
-    public String name() {
-		return "Character Parser";
+    public String getName() {
+		return "Character AbstractParser";
 	}
 
 	@Override
@@ -45,18 +46,18 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 10;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
@@ -75,8 +76,8 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.chars.CharToken.numberOfTokens();
+    public int numberOfTokens() {
+		return 36;
 	}
 
 	@Override

+ 4 - 23
jplag.frontend.chars/src/main/java/de/jplag/chars/Parser.java

@@ -4,13 +4,15 @@ import java.io.File;
 import java.io.FileReader;
 import java.nio.charset.StandardCharsets;
 
+import de.jplag.AbstractParser;
+import de.jplag.TokenConstants;
 import de.jplag.TokenList;
 
-public class Parser extends de.jplag.Parser implements de.jplag.TokenConstants {
+public class Parser extends AbstractParser implements TokenConstants {
 
 	private TokenList struct;
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
+	public TokenList parse(File dir, String files[]) {
 		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
@@ -59,27 +61,6 @@ public class Parser extends de.jplag.Parser implements de.jplag.TokenConstants {
 		return true;
 	}
 
-	private char[] reversedMapping = null;
-
-	public char reverseMapping(int i) {
-		if (reversedMapping == null) {
-			int size = 0;
-			for (int j = 0; j < mapping.length; j++)
-				if (mapping[j] > size)
-					size = mapping[j];
-			reversedMapping = new char[size + 1];
-			for (int j = 0; j <= size; j++) {
-				reversedMapping[j] = 0;
-				for (int k = 0; k < mapping.length; k++)
-					if (mapping[k] == j) {
-						reversedMapping[j] = (char) k;
-						break;
-					}
-			}
-		}
-		return reversedMapping[i];
-	}
-
 	private int[] mapping = { -1, //   0 (nul)
 			-1, //   1 (soh)
 			-1, //   2 (stx)

+ 3 - 5
jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPToken.java

@@ -1,6 +1,8 @@
 package de.jplag.cpp;
 
-public class CPPToken extends de.jplag.Token implements CPPTokenConstants {
+import de.jplag.Token;
+
+public class CPPToken extends Token implements CPPTokenConstants {
 	private static final long serialVersionUID = 1L;
 	private int line;
 
@@ -88,8 +90,4 @@ public class CPPToken extends de.jplag.Token implements CPPTokenConstants {
 			default:                return "<UNBEKANNT>";
 		}
 	}
-
-	public static int numberOfTokens() { 
-		return NUM_DIFF_TOKENS;
-	}
 }

+ 3 - 1
jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.cpp;
 
-public interface CPPTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface CPPTokenConstants extends TokenConstants {
   final static int FILE_END = 0;
   // Used to optionally separate methods from each other
   // with an always marked token

+ 12 - 11
jplag.frontend.cpp/src/main/java/de/jplag/cpp/Language.java

@@ -2,7 +2,8 @@ package de.jplag.cpp;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 /*
  * Leider werden C/C++ nicht geparst, sondern nur gescannt...
@@ -10,14 +11,14 @@ import de.jplag.ProgramI;
 public class Language implements de.jplag.Language {
 	private Scanner scanner;
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.scanner = new Scanner();
 		this.scanner.setProgram(program);
 
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.scanner.errorsCount();
 	}
 
@@ -29,7 +30,7 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public String name() {
+    public String getName() {
 		return "C/C++ Scanner [basic markup]";
 	}
 
@@ -39,7 +40,7 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 12;
 	}
 
@@ -59,22 +60,22 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.scanner.scan(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.scanner.getErrors();
+    public boolean hasErrors() {
+		return this.scanner.hasErrors();
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.cpp.CPPToken.numberOfTokens();
+    public int numberOfTokens() {
+		return CPPTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.cpp.CPPToken.type2string(type);
+		return CPPToken.type2string(type);
 	}
 }

+ 6 - 5
jplag.frontend.cpp/src/main/java/de/jplag/cpp/Scanner.java

@@ -2,15 +2,16 @@ package de.jplag.cpp;
 
 import java.io.File;
 
-import de.jplag.Parser;
+import de.jplag.AbstractParser;
+import de.jplag.TokenList;
 
-public class Scanner extends Parser implements CPPTokenConstants {
+public class Scanner extends AbstractParser implements CPPTokenConstants {
 	private String actFile;
 
-	private de.jplag.TokenList struct;
+	private TokenList struct;
 
-	public de.jplag.TokenList scan(File dir, String files[]) {
-		struct = new de.jplag.TokenList();
+	public TokenList scan(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		CPPScanner scanner = null;// will be initialized in Method scanFile
 		for (int i = 0; i < files.length; i++) {

+ 3 - 5
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpToken.java

@@ -1,6 +1,8 @@
 package de.jplag.csharp;
 
-public class CSharpToken extends de.jplag.Token implements CSharpTokenConstants {
+import de.jplag.Token;
+
+public class CSharpToken extends Token implements CSharpTokenConstants {
   private static final long serialVersionUID = 1L;
   private int line, column, length;
 
@@ -81,9 +83,5 @@ public void setLength(int length) { this.length = length; }
     default:                      return "<UNKNOWN> ";
     }
   }
-  
-  public static int numberOfTokens() { 
-    return NUM_DIFF_TOKENS;
-  }
 }
 

+ 3 - 1
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.csharp;
 
-public interface CSharpTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface CSharpTokenConstants extends TokenConstants {
   final static int FILE_END = 0;
 
   // Used to optionally separate methods from each other

+ 13 - 12
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Language.java

@@ -2,12 +2,13 @@ package de.jplag.csharp;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 	private Parser parser;
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.parser = new Parser();
 		this.parser.setProgram(program);
 
@@ -20,13 +21,13 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
 	@Override
-    public String name() {
-		return "C# 1.2 Parser";
+    public String getName() {
+		return "C# 1.2 AbstractParser";
 	}
 
 	@Override
@@ -35,18 +36,18 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 8;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return parser.getErrors();
+    public boolean hasErrors() {
+		return parser.hasErrors();
 	}
 
 	@Override
@@ -65,12 +66,12 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.csharp.CSharpToken.numberOfTokens();
+    public int numberOfTokens() {
+		return CSharpTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.csharp.CSharpToken.type2string(type);
+		return CSharpToken.type2string(type);
 	}
 }

+ 5 - 3
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Parser.java

@@ -4,16 +4,18 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.nio.charset.StandardCharsets;
 
+import antlr.Token;
+import de.jplag.AbstractParser;
 import de.jplag.TokenList;
 import de.jplag.UnicodeReader;
 import de.jplag.csharp.grammar.CSharpLexer;
 import de.jplag.csharp.grammar.CSharpParser;
 
-public class Parser extends de.jplag.Parser implements CSharpTokenConstants {
+public class Parser extends AbstractParser implements CSharpTokenConstants {
 	private TokenList struct;
 	private String currentFile;
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
+	public TokenList parse(File dir, String files[]) {
 		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
@@ -51,7 +53,7 @@ public class Parser extends de.jplag.Parser implements CSharpTokenConstants {
 		return true;
 	}
 
-	private void add(int type, antlr.Token tok) {
+	private void add(int type, Token tok) {
 		if (tok == null) {
 			System.out.println("tok == null  ERROR!");
 			return;

+ 3 - 5
jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/JavaToken.java

@@ -1,6 +1,8 @@
 package de.jplag.javax;
 
-public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
+import de.jplag.Token;
+
+public class JavaToken extends Token implements JavaTokenConstants {
 	private static final long serialVersionUID = 8090049637477580276L;
 	private int line;
 
@@ -125,8 +127,4 @@ public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
 	    default:           return "<UNBEKANNT>";
 		}
 	}
-
-	public static int numberOfTokens() {
-		return NUM_DIFF_TOKENS;
-	}
 }

+ 3 - 1
jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/JavaTokenConstants.java

@@ -1,8 +1,10 @@
 package de.jplag.javax;
 
+import de.jplag.TokenConstants;
+
 //import java.io.*;
 
-public interface JavaTokenConstants extends de.jplag.TokenConstants {
+public interface JavaTokenConstants extends TokenConstants {
   final static int FILE_END = 0;
 
   final static int J_PACKAGE =          1;  

+ 12 - 11
jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/Language.java

@@ -2,19 +2,20 @@ package de.jplag.javax;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 	private Parser parser;
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.parser = new Parser();
 		this.parser.setProgram(program);
 
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
@@ -25,7 +26,7 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public String name() {
+    public String getName() {
 		return "experimental Java1.1";
 	}
 
@@ -35,7 +36,7 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 15;
 	}
 
@@ -55,22 +56,22 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.javax.JavaToken.numberOfTokens();
+    public int numberOfTokens() {
+		return JavaTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.javax.JavaToken.type2string(type);
+		return JavaToken.type2string(type);
 	}
 }

+ 7 - 4
jplag.frontend.java-1.1exp/src/main/java/de/jplag/javax/Parser.java

@@ -2,13 +2,16 @@ package de.jplag.javax;
 
 import java.io.File;
 
-public class Parser extends de.jplag.Parser implements JavaTokenConstants {
+import de.jplag.AbstractParser;
+import de.jplag.TokenList;
+
+public class Parser extends AbstractParser implements JavaTokenConstants {
 	private String actFile;
 
-	private de.jplag.TokenList struct;
+	private TokenList struct;
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
-		struct = new de.jplag.TokenList();
+	public TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		JavaParser parser = null;// no worry it will be reinitialized
 		// in method parseFile(...)

+ 3 - 5
jplag.frontend.java-1.2/src/main/java/de/jplag/java/JavaToken.java

@@ -1,6 +1,8 @@
 package de.jplag.java;
 
-public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
+import de.jplag.Token;
+
+public class JavaToken extends Token implements JavaTokenConstants {
 	private static final long serialVersionUID = 1581274829013336295L;
 	private int line, column, length;
 
@@ -91,8 +93,4 @@ public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
     default:           return "<UNBEKANNT>";
     }
   }
-  
-  public static int numberOfTokens() { 
-    return NUM_DIFF_TOKENS;
-  } 
 }

+ 3 - 1
jplag.frontend.java-1.2/src/main/java/de/jplag/java/JavaTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.java;
 
-public interface JavaTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface JavaTokenConstants extends TokenConstants {
   final static int FILE_END = 0;
 
   final static int J_PACKAGE = 1;               //

+ 13 - 12
jplag.frontend.java-1.2/src/main/java/de/jplag/java/Language.java

@@ -2,12 +2,13 @@ package de.jplag.java;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 	private Parser parser;
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.parser = new Parser();
 		this.parser.setProgram(program);
 	}
@@ -19,13 +20,13 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
 	@Override
-    public String name() {
-		return "Java1.2 Parser";
+    public String getName() {
+		return "Java1.2 AbstractParser";
 	}
 
 	@Override
@@ -34,18 +35,18 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 9;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
@@ -64,12 +65,12 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.java.JavaToken.numberOfTokens();
+    public int numberOfTokens() {
+		return JavaTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.java.JavaToken.type2string(type);
+		return JavaToken.type2string(type);
 	}
 }

+ 5 - 3
jplag.frontend.java-1.2/src/main/java/de/jplag/java/Parser.java

@@ -3,17 +3,19 @@ package de.jplag.java;
 import java.io.File;
 import java.io.FileInputStream;
 
+import antlr.Token;
+import de.jplag.AbstractParser;
 import de.jplag.InputState;
 import de.jplag.ParserToken;
 import de.jplag.TokenList;
 import de.jplag.java.grammar.JLexer;
 import de.jplag.java.grammar.JRecognizer;
 
-public class Parser extends de.jplag.Parser implements JavaTokenConstants {
+public class Parser extends AbstractParser implements JavaTokenConstants {
 	private TokenList struct;
 	private String currentFile;
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
+	public TokenList parse(File dir, String files[]) {
 		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
@@ -59,7 +61,7 @@ public class Parser extends de.jplag.Parser implements JavaTokenConstants {
 		return true;
 	}
 
-	public void add(int type, antlr.Token tok) {
+	public void add(int type, Token tok) {
 		ParserToken ptok = (ParserToken) tok;
 		struct.addToken(new JavaToken(type, currentFile, ptok.getLine(), ptok.getColumn(), ptok.getLength()));
 	}

+ 3 - 5
jplag.frontend.java-1.5/src/main/java/de/jplag/java15/JavaToken.java

@@ -1,6 +1,8 @@
 package de.jplag.java15;
 
-public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
+import de.jplag.Token;
+
+public class JavaToken extends Token implements JavaTokenConstants {
 	private static final long serialVersionUID = 3743208940428676175L;
 	private int line, column, length;
 
@@ -89,9 +91,5 @@ public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
     default:                return "*UNKNOWN"; // @formatter:on
     }
   }
-  
-  public static int numberOfTokens() { 
-    return NUM_DIFF_TOKENS;
-  }
 }
 

+ 3 - 1
jplag.frontend.java-1.5/src/main/java/de/jplag/java15/JavaTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.java15;
 
-public interface JavaTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface JavaTokenConstants extends TokenConstants {
   final static int FILE_END = 0;
   
   // Used to optionally separate methods from each other

+ 13 - 12
jplag.frontend.java-1.5/src/main/java/de/jplag/java15/Language.java

@@ -2,18 +2,19 @@ package de.jplag.java15;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 	private Parser parser;
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.parser = new Parser(false);
 		this.parser.setProgram(program);
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
@@ -24,8 +25,8 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public String name() {
-		return "Java1.5 Parser";
+    public String getName() {
+		return "Java1.5 AbstractParser";
 	}
 
 	@Override
@@ -34,18 +35,18 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 8;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
@@ -64,12 +65,12 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.java15.JavaToken.numberOfTokens();
+    public int numberOfTokens() {
+		return JavaTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.java15.JavaToken.type2string(type);
+		return JavaToken.type2string(type);
 	}
 }

+ 14 - 12
jplag.frontend.java-1.5/src/main/java/de/jplag/java15/LanguageWithDelimitedMethods.java

@@ -2,23 +2,25 @@ package de.jplag.java15;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Language;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 /**
  * Java 1.5 parser with method separators; if you know why these separators
  * exist, PLEASE tell us or document at
  * https://svn.ipd.kit.edu/trac/de/jplag/wiki/Server/Frontends/Java-1.5)
  */
-public class LanguageWithDelimitedMethods implements de.jplag.Language {
+public class LanguageWithDelimitedMethods implements Language {
 	private Parser parser;
 
-	public LanguageWithDelimitedMethods(ProgramI program) {
+	public LanguageWithDelimitedMethods(Program program) {
 		this.parser = new Parser(true);
 		this.parser.setProgram(program);
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
@@ -29,7 +31,7 @@ public class LanguageWithDelimitedMethods implements de.jplag.Language {
 	}
 
 	@Override
-    public String name() {
+    public String getName() {
 		return "Java1.5 Parser with delimited methods";
 	}
 
@@ -39,18 +41,18 @@ public class LanguageWithDelimitedMethods implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 8;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
@@ -69,12 +71,12 @@ public class LanguageWithDelimitedMethods implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.java15.JavaToken.numberOfTokens();
+    public int numberOfTokens() {
+		return JavaTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.java15.JavaToken.type2string(type);
+		return JavaToken.type2string(type);
 	}
 }

+ 6 - 4
jplag.frontend.java-1.5/src/main/java/de/jplag/java15/Parser.java

@@ -2,21 +2,23 @@ package de.jplag.java15;
 
 import java.io.File;
 
+import de.jplag.AbstractParser;
+import de.jplag.TokenList;
 import de.jplag.java15.grammar.JavaParser;
 import de.jplag.java15.grammar.Token;
 
-public class Parser extends de.jplag.Parser implements JavaTokenConstants {
+public class Parser extends AbstractParser implements JavaTokenConstants {
 	private String actFile;
 	private boolean useMethodSeparators;
 
-	private de.jplag.TokenList struct;
+	private TokenList struct;
 
 	public Parser(boolean useMethodSeparators) {
 		this.useMethodSeparators = useMethodSeparators;
 	}
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
-		struct = new de.jplag.TokenList();
+	public TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 
 		JavaParser parser = null; // This will be (re)initialised in parseFile()

+ 0 - 63
jplag.frontend.java-1.5/src/main/java/de/jplag/java15/grammar/JavaTabModCharStream.java

@@ -430,12 +430,6 @@ public void backup(int amount) {
     nextCharInd = bufpos = -1;
   }
 
-  public void ReInit(java.io.Reader dstream,
-                                        int startline, int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
   public void ReInit(java.io.Reader dstream)
   {
      ReInit(dstream, 1, 1, 4096);
@@ -462,15 +456,6 @@ public void backup(int amount) {
   {
      ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
   }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                                                           int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
 
   @Override
 public String GetImage()
@@ -508,52 +493,4 @@ public void Done()
      bufcolumn = null;
   }
 
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
-  }
-
 }

+ 3 - 5
jplag.frontend.java-1.7/src/main/java/de/jplag/java17/JavaToken.java

@@ -1,6 +1,8 @@
 package de.jplag.java17;
 
-public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
+import de.jplag.Token;
+
+public class JavaToken extends Token implements JavaTokenConstants {
 	private static final long serialVersionUID = -383581430479870696L;
 	private int line, column, length;
 
@@ -169,8 +171,4 @@ public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
 			return "*UNKNOWN" + type;
 		}
 	}
-
-	public static int numberOfTokens() {
-		return NUM_DIFF_TOKENS;
-	}
 }

+ 3 - 1
jplag.frontend.java-1.7/src/main/java/de/jplag/java17/JavaTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.java17;
 
-public interface JavaTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface JavaTokenConstants extends TokenConstants {
 	final static int FILE_END = 0;
 
 	// Used to optionally separate methods from each other

+ 2 - 2
jplag.frontend.java-1.7/src/main/java/de/jplag/java17/JplagJava7Listener.java

@@ -10,9 +10,9 @@ import de.jplag.java17.grammar.Java7Parser.*;
 
 public class JplagJava7Listener implements Java7Listener, JavaTokenConstants {
 
-	private de.jplag.java17.Parser jplagParser;
+	private Parser jplagParser;
 
-	public JplagJava7Listener(de.jplag.java17.Parser jplag) {
+	public JplagJava7Listener(Parser jplag) {
 		jplagParser = jplag;
 	}
 

+ 15 - 14
jplag.frontend.java-1.7/src/main/java/de/jplag/java17/Language.java

@@ -2,13 +2,14 @@ package de.jplag.java17;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
-	private de.jplag.java17.Parser parser;
+	private Parser parser;
 
-	public Language(ProgramI program) {
-		this.parser = new de.jplag.java17.Parser();
+	public Language(Program program) {
+		this.parser = new Parser();
 		this.parser.setProgram(program);
 	}
 
@@ -19,13 +20,13 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
 	@Override
-    public String name() {
-		return "Java1.7 Parser";
+    public String getName() {
+		return "Java1.7 AbstractParser";
 	}
 
 	@Override
@@ -34,18 +35,18 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 9;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
@@ -64,12 +65,12 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.java17.JavaToken.numberOfTokens();
+    public int numberOfTokens() {
+		return JavaTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.java17.JavaToken.type2string(type);
+		return JavaToken.type2string(type);
 	}
 }

+ 5 - 3
jplag.frontend.java-1.7/src/main/java/de/jplag/java17/Parser.java

@@ -8,19 +8,21 @@ import java.io.IOException;
 import org.antlr.v4.runtime.CharStream;
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 
+import de.jplag.AbstractParser;
 import de.jplag.TokenList;
 import de.jplag.java17.grammar.Java7Lexer;
 import de.jplag.java17.grammar.Java7Parser;
 import de.jplag.java17.grammar.Java7Parser.CompilationUnitContext;
 
-public class Parser extends de.jplag.Parser implements JavaTokenConstants {
+public class Parser extends AbstractParser implements JavaTokenConstants {
 	private TokenList struct = new TokenList();
 	private String currentFile;
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
+	public TokenList parse(File dir, String files[]) {
 		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
@@ -71,7 +73,7 @@ public class Parser extends de.jplag.Parser implements JavaTokenConstants {
 	//		struct.addToken(new JavaToken(type, (currentFile == null ? "null" : currentFile), line, start, text.length()));
 	//	}
 	
-	public void add(int type, org.antlr.v4.runtime.Token tok) {
+	public void add(int type, Token tok) {
 		struct.addToken(new JavaToken(type, (currentFile == null ? "null" : currentFile), tok.getLine(), tok.getCharPositionInLine() + 1, 
 				tok.getText().length()));
 	}

+ 1 - 1
jplag.frontend.java-1.7/src/test/java/de/jplag/StrippedProgram.java

@@ -3,7 +3,7 @@ package de.jplag;
 /**
  * This is a stripped version of the JPlag main class Program to be used during front end development only.
  */
-public class StrippedProgram implements ProgramI {
+public class StrippedProgram implements Program {
     @Override
     public void addError(String errorMsg) {
         System.err.println(errorMsg);

+ 3 - 5
jplag.frontend.java-1.9/src/main/java/de/jplag/java19/JavaToken.java

@@ -1,6 +1,8 @@
 package de.jplag.java19;
 
-public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
+import de.jplag.Token;
+
+public class JavaToken extends Token implements JavaTokenConstants {
     private static final long serialVersionUID = -383581430479870696L;
     private int line, column, length;
 
@@ -179,8 +181,4 @@ public class JavaToken extends de.jplag.Token implements JavaTokenConstants {
             return "*UNKNOWN" + type;
         }
     }
-
-    public static int numberOfTokens() {
-        return NUM_DIFF_TOKENS;
-    }
 }

+ 9 - 7
jplag.frontend.java-1.9/src/main/java/de/jplag/java19/JavaTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.java19;
 
-public interface JavaTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface JavaTokenConstants extends TokenConstants {
     final static int FILE_END = 0;
 
     // check used to mark tokens that are actually generated by the adapter
@@ -72,11 +74,11 @@ public interface JavaTokenConstants extends de.jplag.TokenConstants {
     final static int J_TRY_WITH_RESOURCE = 60; 	// check
 
     // new in 1.9
-    final static int J_REQUIRES = 61; 	       // check
-    final static int J_PROVIDES = 62; 	       // check
-    final static int J_EXPORTS = 63; 	       // check
-    final static int J_MODULE_BEGIN = 64;     // check
-    final static int J_MODULE_END = 65; 	       // check
+    final static int J_REQUIRES = 61; 	        // check
+    final static int J_PROVIDES = 62; 	        // check
+    final static int J_EXPORTS = 63; 	        // check
+    final static int J_MODULE_BEGIN = 64;       // check
+    final static int J_MODULE_END = 65; 	    // check
 
-    final static int NUM_DIFF_TOKENS = 66;		// @formatter:on
+    final static int NUM_DIFF_TOKENS = 66;	    // @formatter:on
 }

+ 9 - 9
jplag.frontend.java-1.9/src/main/java/de/jplag/java19/Language.java

@@ -2,7 +2,7 @@ package de.jplag.java19;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
 import de.jplag.TokenList;
 
 /**
@@ -11,7 +11,7 @@ import de.jplag.TokenList;
 public class Language implements de.jplag.Language {
     private Parser parser;
 
-    public Language(ProgramI program) {
+    public Language(Program program) {
         this.parser = new Parser();
         this.parser.setProgram(program);
     }
@@ -23,7 +23,7 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public String name() {
+    public String getName() {
         return "Javac 1.9+ based AST plugin";
     }
 
@@ -33,7 +33,7 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
         return 9;
     }
 
@@ -53,8 +53,8 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public int noOfTokens() {
-        return JavaToken.numberOfTokens();
+    public int numberOfTokens() {
+        return JavaTokenConstants.NUM_DIFF_TOKENS;
     }
 
     @Override
@@ -68,12 +68,12 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public boolean errors() {
-        return this.parser.getErrors();
+    public boolean hasErrors() {
+        return this.parser.hasErrors();
     }
 
     @Override
-    public int errorsCount() {
+    public int errorCount() {
         return this.parser.errorsCount();
     }
 

+ 7 - 4
jplag.frontend.java-1.9/src/main/java/de/jplag/java19/Parser.java

@@ -2,11 +2,14 @@ package de.jplag.java19;
 
 import java.io.File;
 
-public class Parser extends de.jplag.Parser {
-    private de.jplag.TokenList tokenList;
+import de.jplag.AbstractParser;
+import de.jplag.TokenList;
 
-    public de.jplag.TokenList parse(File dir, String files[]) {
-        tokenList = new de.jplag.TokenList();
+public class Parser extends AbstractParser {
+    private TokenList tokenList;
+
+    public TokenList parse(File dir, String files[]) {
+        tokenList = new TokenList();
         errors = 0;
         File pathedFiles[] = new File[files.length];
         for (int i = 0; i < files.length; i++) {

+ 1 - 1
jplag.frontend.python-3/src/main/java/de/jplag/python3/JplagPython3Listener.java

@@ -9,7 +9,7 @@ import de.jplag.python3.grammar.Python3Parser;
 
 public class JplagPython3Listener implements Python3Listener, Python3TokenConstants {
 
-    private de.jplag.python3.Parser jplagParser;
+    private Parser jplagParser;
 
     public JplagPython3Listener(de.jplag.python3.Parser jplag) {
         jplagParser = jplag;

+ 15 - 14
jplag.frontend.python-3/src/main/java/de/jplag/python3/Language.java

@@ -2,14 +2,15 @@ package de.jplag.python3;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 
-    private de.jplag.python3.Parser parser;
+    private Parser parser;
 
-    public Language(ProgramI program) {
-        this.parser = new de.jplag.python3.Parser();
+    public Language(Program program) {
+        this.parser = new Parser();
         this.parser.setProgram(program);
     }
 
@@ -20,13 +21,13 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public int errorsCount() {
+    public int errorCount() {
         return this.parser.errorsCount();
     }
 
     @Override
-    public String name() {
-        return "Python3 Parser";
+    public String getName() {
+        return "Python3 AbstractParser";
     }
 
     @Override
@@ -35,18 +36,18 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
         return 12;
     }
 
     @Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
         return this.parser.parse(dir, files);
     }
 
     @Override
-    public boolean errors() {
-        return this.parser.getErrors();
+    public boolean hasErrors() {
+        return this.parser.hasErrors();
     }
 
     @Override
@@ -65,12 +66,12 @@ public class Language implements de.jplag.Language {
     }
 
     @Override
-    public int noOfTokens() {
-        return de.jplag.python3.Python3Token.numberOfTokens();
+    public int numberOfTokens() {
+        return Python3TokenConstants.NUM_DIFF_TOKENS;
     }
 
     @Override
     public String type2string(int type) {
-        return de.jplag.python3.Python3Token.type2string(type);
+        return Python3Token.type2string(type);
     }
 }

+ 6 - 4
jplag.frontend.python-3/src/main/java/de/jplag/python3/Parser.java

@@ -8,20 +8,22 @@ import java.io.IOException;
 import org.antlr.v4.runtime.CharStream;
 import org.antlr.v4.runtime.CharStreams;
 import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.Token;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 
+import de.jplag.AbstractParser;
 import de.jplag.TokenList;
 import de.jplag.python3.grammar.Python3Lexer;
 import de.jplag.python3.grammar.Python3Parser;
 import de.jplag.python3.grammar.Python3Parser.File_inputContext;
 
-public class Parser extends de.jplag.Parser implements Python3TokenConstants {
+public class Parser extends AbstractParser implements Python3TokenConstants {
 
     private TokenList struct = new TokenList();
     private String currentFile;
 
-    public de.jplag.TokenList parse(File dir, String files[]) {
+    public TokenList parse(File dir, String files[]) {
         struct = new TokenList();
         errors = 0;
         for (int i = 0; i < files.length; i++) {
@@ -69,12 +71,12 @@ public class Parser extends de.jplag.Parser implements Python3TokenConstants {
         return true;
     }
 
-    public void add(int type, org.antlr.v4.runtime.Token tok) {
+    public void add(int type, Token tok) {
         struct.addToken(new Python3Token(type, (currentFile == null ? "null" : currentFile), tok.getLine(), tok.getCharPositionInLine() + 1,
                 tok.getText().length()));
     }
 
-    public void addEnd(int type, org.antlr.v4.runtime.Token tok) {
+    public void addEnd(int type, Token tok) {
         struct.addToken(new Python3Token(type, (currentFile == null ? "null" : currentFile), tok.getLine(), struct.getToken(struct.size()-1).getColumn() + 1,0));
     }
 }

+ 3 - 5
jplag.frontend.python-3/src/main/java/de/jplag/python3/Python3Token.java

@@ -1,6 +1,8 @@
 package de.jplag.python3;
 
-public class Python3Token extends de.jplag.Token implements Python3TokenConstants {
+import de.jplag.Token;
+
+public class Python3Token extends Token implements Python3TokenConstants {
 
     private static final long serialVersionUID = 1485877548175917943L;
     
@@ -112,8 +114,4 @@ public class Python3Token extends de.jplag.Token implements Python3TokenConstant
                 return "*UNKNOWN" + type;
         }
     }
-
-    public static int numberOfTokens() {
-        return NUM_DIFF_TOKENS;
-    }
 }

+ 3 - 1
jplag.frontend.python-3/src/main/java/de/jplag/python3/Python3TokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.python3;
 
-public interface Python3TokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface Python3TokenConstants extends TokenConstants {
 
     final static int FILE_END = 0;
     final static int SEPARATOR_TOKEN = 1;

+ 0 - 52
jplag.frontend.scheme/src/main/java/de/jplag/scheme/InsertStream.java

@@ -1,52 +0,0 @@
-package de.jplag.scheme;
-
-import java.io.File;
-import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-public class InsertStream extends FileInputStream {
-  public InsertStream(File file) throws FileNotFoundException {
-    super(file);
-  }
-  public InsertStream(FileDescriptor fdObj) {
-    super(fdObj);
-  }
-  public InsertStream(String name) throws FileNotFoundException {
-    super(name);
-  }
-
-  boolean end_of_file = false;
-
-  @Override
-public int read() throws IOException {
-    int result = super.read();
-    if (result != -1 || end_of_file) return result;
-    end_of_file = true;
-    return Character.LINE_SEPARATOR;
-  }
-
-  @Override
-public int read(byte[] b) throws IOException {
-    int result = super.read(b);
-    if (result != -1 || end_of_file) return result;
-    end_of_file = true;
-    if (b.length > 1) {
-      b[0] = Character.LINE_SEPARATOR;
-      return 1;
-    }
-    return -1;
-  }
-
-  @Override
-public int read(byte[] b, int off, int len) throws IOException {
-    int result = super.read(b,off,len);
-    if (result != -1 || end_of_file) return result;
-    end_of_file = true;
-    if (len > 0) {
-      b[off] = Character.LINE_SEPARATOR;
-      return 1;
-    } else return 0;
-  }
-}

+ 13 - 12
jplag.frontend.scheme/src/main/java/de/jplag/scheme/Language.java

@@ -2,18 +2,19 @@ package de.jplag.scheme;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.parser = new Parser();
 		this.parser.setProgram(program);
 
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
@@ -26,8 +27,8 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public String name() {
-		return "SchemeR4RS Parser [basic markup]";
+    public String getName() {
+		return "SchemeR4RS AbstractParser [basic markup]";
 	}
 
 	@Override
@@ -36,7 +37,7 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 13;
 	}
 
@@ -56,22 +57,22 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
-    public int noOfTokens() {
-		return de.jplag.scheme.SchemeToken.numberOfTokens();
+    public int numberOfTokens() {
+		return SchemeTokenConstants.NUM_DIFF_TOKENS;
 	}
 
 	@Override
     public String type2string(int type) {
-		return de.jplag.scheme.SchemeToken.type2string(type);
+		return SchemeToken.type2string(type);
 	}
 }

+ 7 - 4
jplag.frontend.scheme/src/main/java/de/jplag/scheme/Parser.java

@@ -2,13 +2,16 @@ package de.jplag.scheme;
 
 import java.io.File;
 
-public class Parser extends de.jplag.Parser implements SchemeTokenConstants {
+import de.jplag.AbstractParser;
+import de.jplag.TokenList;
+
+public class Parser extends AbstractParser implements SchemeTokenConstants {
 	private String actFile;
 
-	private de.jplag.TokenList struct;
+	private TokenList struct;
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
-		struct = new de.jplag.TokenList();
+	public TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		SchemeParser parser = null;// no worry it will be reinitialized
 		// in method parseFile(...)

+ 0 - 4
jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeToken.java

@@ -69,8 +69,4 @@ public int getLength() {return 0;}
     default:                 return "<?????> ";
     }
   }
-  
-  public static int numberOfTokens() { 
-    return NUM_DIFF_TOKENS;
-  }
 }

+ 3 - 1
jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeTokenConstants.java

@@ -1,6 +1,8 @@
 package de.jplag.scheme;
 
-public interface SchemeTokenConstants extends de.jplag.TokenConstants {
+import de.jplag.TokenConstants;
+
+public interface SchemeTokenConstants extends TokenConstants {
   final static int FILE_END = 0;
 
   // Used to optionally separate methods from each other

+ 13 - 12
jplag.frontend.text/src/main/java/de/jplag/text/Language.java

@@ -3,7 +3,8 @@ package de.jplag.text;
 
 import java.io.File;
 
-import de.jplag.ProgramI;
+import de.jplag.Program;
+import de.jplag.TokenList;
 
 /**
  * @Changed by Emeric Kwemou 29.01.2005
@@ -11,17 +12,17 @@ import de.jplag.ProgramI;
  */
 public class Language implements de.jplag.Language {
 
-	private ProgramI program;
+	private Program program;
 
-	private de.jplag.text.Parser parser = new de.jplag.text.Parser();
+	private Parser parser = new Parser();
 
-	public Language(ProgramI program) {
+	public Language(Program program) {
 		this.program = program;
 		this.parser.setProgram(this.program);
 	}
 
 	@Override
-    public int errorsCount() {
+    public int errorCount() {
 		return this.parser.errorsCount();
 	}
 
@@ -32,8 +33,8 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public String name() {
-		return "Text Parser";
+    public String getName() {
+		return "Text AbstractParser";
 	}
 
 	@Override
@@ -42,18 +43,18 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int min_token_match() {
+    public int minimumTokenMatch() {
 		return 5;
 	}
 
 	@Override
-    public de.jplag.TokenList parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 
 	@Override
-    public boolean errors() {
-		return this.parser.getErrors();
+    public boolean hasErrors() {
+		return this.parser.hasErrors();
 	}
 
 	@Override
@@ -72,7 +73,7 @@ public class Language implements de.jplag.Language {
 	}
 
 	@Override
-    public int noOfTokens() {
+    public int numberOfTokens() {
         return parser.tokenStructure.serial;
 //		return de.jplag.text.TextToken.numberOfTokens();   // always returns 1 ....
 	}

+ 6 - 3
jplag.frontend.text/src/main/java/de/jplag/text/Parser.java

@@ -7,15 +7,18 @@ import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.util.HashSet;
 
+import antlr.Token;
+import de.jplag.AbstractParser;
 import de.jplag.InputState;
 import de.jplag.ParserToken;
+import de.jplag.TokenConstants;
 import de.jplag.TokenList;
 
 /**
  * @Changed by Emeric Kwemou 29.01.2005
  *  
  */
-public class Parser extends de.jplag.Parser implements de.jplag.TokenConstants {
+public class Parser extends AbstractParser implements TokenConstants {
 
 	protected TokenStructure tokenStructure = new TokenStructure();
 
@@ -47,7 +50,7 @@ public class Parser extends de.jplag.Parser implements de.jplag.TokenConstants {
 		}
 	}
 
-	public de.jplag.TokenList parse(File dir, String files[]) {
+	public TokenList parse(File dir, String files[]) {
 		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
@@ -93,7 +96,7 @@ public class Parser extends de.jplag.Parser implements de.jplag.TokenConstants {
 		return true;
 	}
 
-	public void add(antlr.Token tok) {
+	public void add(Token tok) {
 		ParserToken ptok = (ParserToken) tok;
 		if (filter != null && filter.contains(tok.getText().toLowerCase()))
 			return;

+ 5 - 15
jplag.frontend.text/src/main/java/de/jplag/text/TextToken.java

@@ -1,9 +1,11 @@
 package de.jplag.text;
 
-public class TextToken extends de.jplag.Token {
+import de.jplag.Token;
+
+public class TextToken extends Token {
 	private static final long serialVersionUID = 4301179216570538972L;
 
-	public static int getSerial(String text, Parser parser) {
+	private static int getSerial(String text, Parser parser) {
         text = text.toLowerCase();
         Integer obj = parser.tokenStructure.table.get(text);
         if(obj == null) {
@@ -18,15 +20,7 @@ public class TextToken extends de.jplag.Token {
         }
         return obj.intValue();
     }
-
-    // throw away this method soon:
-
-    public static String type2string(int i, TokenStructure tokenStructure) {
-        if(tokenStructure.reverseMapping == null)
-            tokenStructure.createReverseMapping();
-        return tokenStructure.reverseMapping[i];
-    }
-
+	
     // ///////////////////// END OF STATIC MEMBERS
 
     private int line, column, length;
@@ -76,8 +70,4 @@ public class TextToken extends de.jplag.Token {
     public String getText() {
         return this.text;
     }
-
-    public static int numberOfTokens(TokenStructure tokenStructure) {
-        return tokenStructure.table.size();
-    }
 }

+ 0 - 5
jplag.parent/pom.xml

@@ -249,11 +249,6 @@
 				<artifactId>antlr3-runtime</artifactId>
 				<version>3.5</version>
 			</dependency>
-			<dependency>
-				<groupId>de.jplag</groupId>
-				<artifactId>utils</artifactId>
-				<version>0.0.3-SNAPSHOT</version>
-			</dependency>
 			<dependency>
 				<groupId>de.jplag</groupId>
 				<artifactId>frontend-utils</artifactId>

+ 0 - 14
jplag.utils/pom.xml

@@ -1,14 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<artifactId>utils</artifactId>
-	<version>0.0.3-SNAPSHOT</version>
-
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>parent</artifactId>
-		<version>0.3-SNAPSHOT</version>
-		<relativePath>../jplag.parent/pom.xml</relativePath>
-	</parent>
-
-	</project>

+ 0 - 51
jplag.utils/src/main/java/de/jplag/utils/DesktopUtils.java

@@ -1,51 +0,0 @@
-package de.jplag.utils;
-
-import java.awt.Desktop;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-public class DesktopUtils {
-	public static boolean isBrowseSupported() {
-		Desktop desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
-		if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	public static void openWebpage(URI uri) {
-		if (isBrowseSupported()) {
-			Desktop desktop = Desktop.getDesktop();
-			try {
-				desktop.browse(uri);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-		} else {
-			System.out.println("Desktop does not support opening of a browser :/ open " + uri + " yourself");
-		}
-	}
-
-	public static void openWebpage(URL url) {
-		if (isBrowseSupported()) {
-			try {
-				openWebpage(url.toURI());
-			} catch (URISyntaxException e) {
-				e.printStackTrace();
-			}
-		} else {
-			System.out.println("Desktop does not support opening of a browser :/ open " + url + " yourself");
-		}
-	}
-
-	public static void openWebpage(String url) throws MalformedURLException {
-		if (isBrowseSupported()) {
-			openWebpage(new URL((!url.startsWith("https://") && !url.startsWith("http://") ? "http://" : "") + url));
-		} else {
-			System.out.println("Desktop does not support opening of a browser :/ open " + url + " yourself");
-		}
-	}
-}

+ 0 - 19
jplag.utils/src/main/java/de/jplag/utils/PropertiesLoader.java

@@ -1,19 +0,0 @@
-package de.jplag.utils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-public class PropertiesLoader {
-	public static Properties loadProps(String resourceName) {
-		Properties props = new Properties();
-		try (InputStream in = PropertiesLoader.class.getClassLoader()
-				.getResourceAsStream(resourceName);) {
-			props.load(in);
-			in.close();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return props;
-	}
-}

+ 0 - 5
jplag/pom.xml

@@ -158,11 +158,6 @@
       <artifactId>java-1.1exp</artifactId>
     </dependency>
 
-    <dependency>
-      <groupId>de.jplag</groupId>
-      <artifactId>utils</artifactId>
-    </dependency>
-
     <dependency>
       <groupId>de.jplag</groupId>
       <artifactId>text</artifactId>

+ 2 - 2
jplag/src/main/java/de/jplag/CLI.java

@@ -108,9 +108,9 @@ public class CLI {
         options.setSubdirectoryName(SUBDIRECTORY.getFrom(namespace));
         options.setFileSuffixes(fileSuffixes);
         options.setExclusionFileName(EXCLUDE_FILE.getFrom(namespace));
-        options.setMinTokenMatch(MIN_TOKEN_MATCH.getFrom(namespace));
+        options.setMinimumTokenMatch(MIN_TOKEN_MATCH.getFrom(namespace));
         options.setSimilarityThreshold(SIMILARITY_THRESHOLD.getFrom(namespace));
-        options.setMaxNumberOfMatches(STORED_MATCHES.getFrom(namespace));
+        options.setMaximumNumberOfMatches(STORED_MATCHES.getFrom(namespace));
         ComparisonMode.fromName(COMPARISON_MODE.getFrom(namespace)).ifPresentOrElse(it -> options.setComparisonMode(it),
                 () -> System.out.println("Unknown comparison mode, using default mode!"));
         return options;

+ 15 - 15
jplag/src/main/java/de/jplag/GreedyStringTiling.java

@@ -124,9 +124,9 @@ public class GreedyStringTiling implements TokenConstants {
 
         // Initialize:
         JPlagComparison comparison = new JPlagComparison(firstSubmission, secondSubmission);
-        int minimalTokenMatch = program.getOptions().getMinTokenMatch(); // minimal required token match
+        int minimumTokenMatch = program.getOptions().getMinimumTokenMatch(); // minimal required token match
 
-        if (first.size() <= minimalTokenMatch || second.size() <= minimalTokenMatch) { // <= because of pivots!
+        if (first.size() <= minimumTokenMatch || second.size() <= minimumTokenMatch) { // <= because of pivots!
             return comparison;
         }
 
@@ -134,32 +134,32 @@ public class GreedyStringTiling implements TokenConstants {
         markTokens(second, withBaseCode);
 
         // create hashes:
-        if (first.hash_length != minimalTokenMatch) {
-            createHashes(first, minimalTokenMatch, withBaseCode); // don't make table if it is not a base code comparison
+        if (first.hash_length != minimumTokenMatch) {
+            createHashes(first, minimumTokenMatch, withBaseCode); // don't make table if it is not a base code comparison
         }
-        if (second.hash_length != minimalTokenMatch || second.tokenHashes == null) {
-            createHashes(second, minimalTokenMatch, true);
+        if (second.hash_length != minimumTokenMatch || second.tokenHashes == null) {
+            createHashes(second, minimumTokenMatch, true);
         }
 
         List<Match> matches = new ArrayList<>();
 
         // start the black magic:
-        int maxmatch;
+        int maxMatch;
         do {
-            maxmatch = minimalTokenMatch;
+            maxMatch = minimumTokenMatch;
             matches.clear();
-            for (int x = 0; x < first.size() - maxmatch; x++) {
+            for (int x = 0; x < first.size() - maxMatch; x++) {
                 List<Integer> hashedTokens = second.tokenHashes.get(first.getToken(x).hash);
                 if (first.getToken(x).marked || first.getToken(x).hash == -1) {
                     continue;
                 }
                 inner: for (Integer y : hashedTokens) {
-                    if (second.getToken(y).marked || maxmatch >= second.size() - y) { // >= because of pivots!
+                    if (second.getToken(y).marked || maxMatch >= second.size() - y) { // >= because of pivots!
                         continue;
                     }
 
                     int j, hx, hy;
-                    for (j = maxmatch - 1; j >= 0; j--) { // begins comparison from behind
+                    for (j = maxMatch - 1; j >= 0; j--) { // begins comparison from behind
                         if (first.getToken(hx = x + j).type != second.getToken(hy = y + j).type || first.getToken(hx).marked
                                 || second.getToken(hy).marked) {
                             continue inner;
@@ -167,15 +167,15 @@ public class GreedyStringTiling implements TokenConstants {
                     }
 
                     // expand match
-                    j = maxmatch;
+                    j = maxMatch;
                     while (first.getToken(hx = x + j).type == second.getToken(hy = y + j).type && !first.getToken(hx).marked
                             && !second.getToken(hy).marked) {
                         j++;
                     }
 
-                    if (j > maxmatch && !withBaseCode || j != maxmatch && withBaseCode) {  // new biggest match? -> delete current smaller
+                    if (j > maxMatch && !withBaseCode || j != maxMatch && withBaseCode) {  // new biggest match? -> delete current smaller
                         matches.clear();
-                        maxmatch = j;
+                        maxMatch = j;
                     }
                     addMatchIfNotOverlapping(matches, x, y, j);
                 }
@@ -195,7 +195,7 @@ public class GreedyStringTiling implements TokenConstants {
                 }
             }
 
-        } while (maxmatch != minimalTokenMatch);
+        } while (maxMatch != minimumTokenMatch);
 
         return comparison;
     }

+ 12 - 12
jplag/src/main/java/de/jplag/JPlag.java

@@ -25,7 +25,7 @@ import de.jplag.strategy.ParallelComparisonStrategy;
 /**
  * This class coordinates the whole program flow.
  */
-public class JPlag implements ProgramI {
+public class JPlag implements Program {
 
     // INPUT:
     private Submission baseCodeSubmission = null;
@@ -61,12 +61,12 @@ public class JPlag implements ProgramI {
      */
     public JPlagResult run() throws ExitException {
         // 1. Preparation:
-        File rootDir = new File(options.getRootDirName());
+        File rootDir = new File(options.getRootDirectoryName());
         if (!rootDir.exists()) {
-            throw new ExitException("Root directory " + options.getRootDirName() + " does not exist!");
+            throw new ExitException("Root directory " + options.getRootDirectoryName() + " does not exist!");
         }
         if (!rootDir.isDirectory()) {
-            throw new ExitException(options.getRootDirName() + " is not a directory!");
+            throw new ExitException(options.getRootDirectoryName() + " is not a directory!");
         }
         readExclusionFile(); // This file contains all files names which are excluded
 
@@ -153,10 +153,10 @@ public class JPlag implements ProgramI {
             return;
         }
 
-        String baseCodePath = this.options.getRootDirName() + File.separator + this.options.getBaseCodeSubmissionName();
+        String baseCodePath = this.options.getRootDirectoryName() + File.separator + this.options.getBaseCodeSubmissionName();
 
-        if (!(new File(this.options.getRootDirName())).exists()) {
-            throw new ExitException("Root directory \"" + this.options.getRootDirName() + "\" doesn't exist!", ExitException.BAD_PARAMETER);
+        if (!(new File(this.options.getRootDirectoryName())).exists()) {
+            throw new ExitException("Root directory \"" + this.options.getRootDirectoryName() + "\" doesn't exist!", ExitException.BAD_PARAMETER);
         }
 
         File f = new File(baseCodePath);
@@ -220,7 +220,7 @@ public class JPlag implements ProgramI {
         LanguageOption languageOption = this.options.getLanguageOption();
 
         try {
-            Constructor<?> constructor = Class.forName(languageOption.getClassPath()).getConstructor(ProgramI.class);
+            Constructor<?> constructor = Class.forName(languageOption.getClassPath()).getConstructor(Program.class);
             Object[] constructorParams = {this};
 
             Language language = (Language) constructor.newInstance(constructorParams);
@@ -236,7 +236,7 @@ public class JPlag implements ProgramI {
 
         this.options.setLanguageDefaults(this.getLanguage());
 
-        System.out.println("Initialized language " + this.getLanguage().name());
+        System.out.println("Initialized language " + this.getLanguage().getName());
     }
 
     private ArrayList<Submission> mapFileNamesInRootDirToSubmissions(String[] fileNames, File rootDir) throws ExitException {
@@ -316,12 +316,12 @@ public class JPlag implements ProgramI {
             throw new ExitException("Bad basecode submission");
         }
 
-        if (subm.getTokenList() != null && subm.getNumberOfTokens() < options.getMinTokenMatch()) {
+        if (subm.getTokenList() != null && subm.getNumberOfTokens() < options.getMinimumTokenMatch()) {
             throw new ExitException("Basecode submission contains fewer tokens " + "than minimum match length allows!\n");
         }
 
         if (options.hasBaseCode()) {
-            gSTiling.createHashes(subm.getTokenList(), options.getMinTokenMatch(), true);
+            gSTiling.createHashes(subm.getTokenList(), options.getMinimumTokenMatch(), true);
         }
 
         print("\nBasecode submission parsed!\n", null);
@@ -361,7 +361,7 @@ public class JPlag implements ProgramI {
 
             count++;
 
-            if (subm.getTokenList() != null && subm.getNumberOfTokens() < options.getMinTokenMatch()) {
+            if (subm.getTokenList() != null && subm.getNumberOfTokens() < options.getMinimumTokenMatch()) {
                 print(null, "Submission contains fewer tokens than minimum match " + "length allows!\n");
                 subm.setTokenList(null);
                 invalid++;

+ 2 - 2
jplag/src/main/java/de/jplag/JPlagResult.java

@@ -77,10 +77,10 @@ public class JPlagResult {
      * settings set in JPlagOptions
      */
     public List<JPlagComparison> getComparisons() {
-        if (this.options.getMaxNumberOfMatches() == -1) {
+        if (this.options.getMaximumNumberOfMatches() == -1) {
             return this.getAllComparisons();
         } else {
-            return this.getComparisons(this.options.getMaxNumberOfMatches());
+            return this.getComparisons(this.options.getMaximumNumberOfMatches());
         }
     }
 

+ 1 - 1
jplag/src/main/java/de/jplag/Submission.java

@@ -90,7 +90,7 @@ public class Submission implements Comparable<Submission> {
         String[] relativeFilePaths = getRelativeFilePaths(submissionFile, files);
 
         tokenList = this.program.getLanguage().parse(submissionFile, relativeFilePaths);
-        if (!program.getLanguage().errors()) {
+        if (!program.getLanguage().hasErrors()) {
             if (tokenList.size() < 3) {
                 program.print("Submission \"" + name + "\" is too short!\n", null);
                 tokenList = null;

+ 25 - 25
jplag/src/main/java/de/jplag/options/JPlagOptions.java

@@ -46,7 +46,7 @@ public class JPlagOptions {
      * The maximum number of matches that will be saved. This does affect the generated report as well as the internally
      * saved comparisons. If set to -1 all matches will be saved.
      */
-    private int maxNumberOfMatches = DEFAULT_STORED_MATCHES;
+    private int maximumNumberOfMatches = DEFAULT_STORED_MATCHES;
 
     /**
      * TODO PB: Not happy with the name yet.
@@ -56,7 +56,7 @@ public class JPlagOptions {
     /**
      * Tune the sensitivity of the comparison. A smaller <n> increases the sensitivity
      */
-    private Integer minTokenMatch;
+    private Integer minimumTokenMatch;
 
     /**
      * Name of the file that contains the names of files to exclude from comparison.
@@ -66,7 +66,7 @@ public class JPlagOptions {
     /**
      * Directory that contains all submissions.
      */
-    private String rootDirName;
+    private String rootDirectoryName;
 
     /**
      * Name of the directory which contains the base code.
@@ -92,8 +92,8 @@ public class JPlagOptions {
     /**
      * Constructor with required attributes.
      */
-    public JPlagOptions(String rootDirName, LanguageOption languageOption) {
-        this.rootDirName = rootDirName;
+    public JPlagOptions(String rootDirectoryName, LanguageOption languageOption) {
+        this.rootDirectoryName = rootDirectoryName;
         this.languageOption = languageOption;
     }
 
@@ -103,8 +103,8 @@ public class JPlagOptions {
      * @param language - initialized language instance
      */
     public void setLanguageDefaults(Language language) {
-        if (!hasMinTokenMatch()) {
-            setMinTokenMatch(language.min_token_match());
+        if (!hasMinimumTokenMatch()) {
+            setMinimumTokenMatch(language.minimumTokenMatch());
         }
 
         if (!hasFileSuffixes()) {
@@ -128,8 +128,8 @@ public class JPlagOptions {
         return fileSuffixes != null && fileSuffixes.length > 0;
     }
 
-    private boolean hasMinTokenMatch() {
-        return minTokenMatch != null;
+    private boolean hasMinimumTokenMatch() {
+        return minimumTokenMatch != null;
     }
 
     public ComparisonMode getComparisonMode() {
@@ -144,16 +144,16 @@ public class JPlagOptions {
         return language;
     }
 
-    public Integer getMinTokenMatch() {
-        return minTokenMatch;
+    public Integer getMinimumTokenMatch() {
+        return minimumTokenMatch;
     }
 
     public String getExclusionFileName() {
         return exclusionFileName;
     }
 
-    public String getRootDirName() {
-        return rootDirName;
+    public String getRootDirectoryName() {
+        return rootDirectoryName;
     }
 
     public String getBaseCodeSubmissionName() {
@@ -172,8 +172,8 @@ public class JPlagOptions {
         return similarityThreshold;
     }
 
-    public int getMaxNumberOfMatches() {
-        return this.maxNumberOfMatches;
+    public int getMaximumNumberOfMatches() {
+        return this.maximumNumberOfMatches;
     }
 
     public SimilarityMetric getSimilarityMetric() {
@@ -196,11 +196,11 @@ public class JPlagOptions {
         this.fileSuffixes = fileSuffixes;
     }
 
-    public void setMinTokenMatch(Integer minTokenMatch) {
-        if (minTokenMatch != null && minTokenMatch < 1) {
-            this.minTokenMatch = 1;
+    public void setMinimumTokenMatch(Integer minimumTokenMatch) {
+        if (minimumTokenMatch != null && minimumTokenMatch < 1) {
+            this.minimumTokenMatch = 1;
         } else {
-            this.minTokenMatch = minTokenMatch;
+            this.minimumTokenMatch = minimumTokenMatch;
         }
     }
 
@@ -208,8 +208,8 @@ public class JPlagOptions {
         this.exclusionFileName = exclusionFileName;
     }
 
-    public void setRootDirName(String rootDirName) {
-        this.rootDirName = rootDirName;
+    public void setRootDirectoryName(String rootDirectoryName) {
+        this.rootDirectoryName = rootDirectoryName;
     }
 
     public void setBaseCodeSubmissionName(String baseCodeSubmissionName) {
@@ -240,11 +240,11 @@ public class JPlagOptions {
         }
     }
 
-    public void setMaxNumberOfMatches(int maxNumberOfMatches) {
-        if (maxNumberOfMatches < -1) {
-            this.maxNumberOfMatches = -1;
+    public void setMaximumNumberOfMatches(int maximumNumberOfMatches) {
+        if (maximumNumberOfMatches < -1) {
+            this.maximumNumberOfMatches = -1;
         } else {
-            this.maxNumberOfMatches = maxNumberOfMatches;
+            this.maximumNumberOfMatches = maximumNumberOfMatches;
         }
     }
 

+ 1 - 1
jplag/src/main/java/de/jplag/reporting/Report.java

@@ -458,7 +458,7 @@ public class Report { // Mostly legacy code with some minor improvements.
         htmlFile.println(
                 "<TR BGCOLOR=#aaaaff VALIGN=top><TD>" + msg.getString("Report.Date") + ":</TD><TD>" + dateFormat.format(new Date()) + "</TD></TR>");
         htmlFile.println("<TR BGCOLOR=#aaaaff>" + "<TD><EM>" + msg.getString("Report.Minimum_Match_Length") + "</EM> ("
-                + msg.getString("Report.sensitivity") + "):</TD><TD>" + result.getOptions().getMinTokenMatch() + "</TD></TR>");
+                + msg.getString("Report.sensitivity") + "):</TD><TD>" + result.getOptions().getMinimumTokenMatch() + "</TD></TR>");
         htmlFile.println("<TR BGCOLOR=#aaaaff VALIGN=top><TD>" + msg.getString("Report.Suffixes") + ":</TD><TD>");
 
         String[] fileSuffixes = result.getOptions().getFileSuffixes();

+ 0 - 182
jplag/src/main/javacc/filter.jj

@@ -1,182 +0,0 @@
-/* Hey Emacs, this is -*- mode: java; page-delimiter: "^%%$"; -*- */
-
-options {
-  JAVA_UNICODE_ESCAPE = true;
-  FORCE_LA_CHECK = true;
-}
-
-PARSER_BEGIN(FilterParser)
-package de.jplag.filter;
-import java.io.*;
-import java.util.*;
-
-public class FilterParser {
-  private static de.jplag.Token javatoken;
-  private static int[] table;
-  private static boolean[] abgebildet;
- 
-  public static int[] parse(String fileName, de.jplag.Token token,FilterParser parser) {
-    javatoken = token;
-    table = new int[token.numberOfTokens()];
-    abgebildet = new boolean[javatoken.numberOfTokens()];
-    for (int i=0; i<javatoken.numberOfTokens(); i++) {
-      table[i] = i;
-      abgebildet[i] = false;
-    }
-    parseFile(fileName,parser);
-    return table;
-  }
-
-  public static void add(Token pToken, Token pGoalToken) {
-    int aInt = -2;
-    int bInt = -2;
-    String a = pToken.image;
-    String b = (pGoalToken==null ? "" : pGoalToken.image);
-    // Tokennummer feststellen:
-    for (int i=0; 
-	 ((i<javatoken.numberOfTokens()) && ((aInt==-2) || (bInt==-2)));
-	 i++) {
-      String str = javatoken.type2string(i);
-      //      System.out.print("  "+str);
-      if (str.equals(a))
-	aInt = i;
-      if (str.equals(b))
-	bInt = i;
-    }
-    if (b.equals("")) bInt = -1;   // == auf "nichts" abbilden
-    // Nummer ueberpruefen:
-    if (aInt==-2) {
-      System.out.println("Fehler: '"+a+"' ist kein erlaubtes Symbol! (Zeile: "+
-			 pToken.beginLine+")");
-      return;
-    }
-    if (bInt==-2) {
-      System.out.println("Fehler: '"+b+"' ist kein erlaubtes Symbol! (Zeile: "+
-			 pGoalToken.beginLine+")");
-      return;
-    }
-    if (abgebildet[aInt]) {
-      System.out.println("Warnung: '"+a+
-			 "' wird ein zweites Mal abgebildet in Zeile: "+
-			 pToken.beginLine);
-    }
-    table[aInt] = bInt;
-    abgebildet[aInt] = true;
-    //System.out.println("Abbildung: "+a+" -> "+b+";\t\t("+aInt+"->"+bInt+")");
-  }
-
-  /* // nur zum test
-  public static void main(String[] args) {
-  
-    parse(args[0], new de.jplag.javax.JavaToken(0,null,0),new FilterParser());
-  }
-  
-  */
-
-  // PARSER:
-
- // private static FilterParser parser = null;
-  private static boolean parseFile(String fileName,FilterParser parser) {
-    File file=null;
-    try {
-      FileInputStream in = new FileInputStream(file=new File(fileName));
-      if (parser==null) {
-	parser = new FilterParser(in);
-      } else {
-	parser.ReInit(in);
-      }
-    } catch (FileNotFoundException e) {
-      System.out.println("FilterParser: File " + fileName +
-			 " not found.");
-      return false;
-    }
-    try {
-      parser.File();
-    } catch (ParseException e) {
-      System.out.println("Parsing Error in '"+
-			 (file==null ? fileName : file.toString())+
-			 "':\n"+e.getMessage());
-      return false;
-    } catch (TokenMgrError e) {
-      System.out.println("Scanning Error in '"+
-			 (file==null ? fileName : file.toString())+
-			 "':\n"+e.getMessage());
-      return true; //false;
-    }
-    return true;
-  }
-}
-
-PARSER_END(FilterParser)
-
-
-/* WHITE SPACE */
-
-SKIP :
-{
-  " "
-| "\t"
-| "\n"
-| "\r"
-| "\f"
-| "\u001a"
-
-}
-
-/* COMMENTS */
-
-MORE :
-{
-  "#" : IN_SINGLE_LINE_COMMENT
-}
-
-<IN_SINGLE_LINE_COMMENT>
-SPECIAL_TOKEN :
-{
-  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n"> : DEFAULT
-}
-
-<IN_SINGLE_LINE_COMMENT>
-MORE :
-{
-  < ~[] >
-}
-
-/* IDENTIFIERS */
-
-TOKEN :
-{
-  < ID: (["A"-"Z","_"])+ >
-}
-
-TOKEN :
-{
-  < COMMA: "," >
-| < PROD: "->" >
-| < SEMICOLON: ";" >
-}
-
-void File() :
-{}
-{
-  ( Line() )*
-  <EOF>
-}
-
-void Line() :
-{
-  Vector tokens = new Vector();
-  Token goal = null; }
-{  
-  <ID>         { tokens.addElement(token); }
-  ("," <ID>    { tokens.addElement(token); } )*
-  "->"
-    [<ID>      { goal = token; } ] ";"
-    { 
-      Enumeration enum1 = tokens.elements();
-      while (enum1.hasMoreElements()) {
-	Token t = (Token)enum1.nextElement();
-	add(t,goal);
-      }
-    }
-}

+ 1 - 1
jplag/src/test/java/de/jplag/VolumeTest.java

@@ -44,7 +44,7 @@ public class VolumeTest extends TestBase {
         }
 
         var results = runJPlag("data",
-                jPlagOptions -> jPlagOptions.setMaxNumberOfMatches(-1));
+                jPlagOptions -> jPlagOptions.setMaximumNumberOfMatches(-1));
 
         var csv = readCSVResults(String.format("%s/%s", this.getBasePath(), "matches_avg.csv"));
 

+ 4 - 4
jplag/src/test/java/de/jplag/cli/MinTokenMatchTest.java

@@ -22,7 +22,7 @@ public class MinTokenMatchTest extends CommandLineInterfaceTest {
     public void testLanguageDefault() {
         // Language defaults not set yet:
         buildOptionsFromCLI(CURRENT_DIRECTORY);
-        assertNull(options.getMinTokenMatch());
+        assertNull(options.getMinimumTokenMatch());
         assertNull(options.getLanguage());
 
         // Init JPlag:
@@ -35,7 +35,7 @@ public class MinTokenMatchTest extends CommandLineInterfaceTest {
 
         // Now the language is set:
         assertNotNull(options.getLanguage());
-        assertEquals(options.getLanguage().min_token_match(), options.getMinTokenMatch().intValue());
+        assertEquals(options.getLanguage().minimumTokenMatch(), options.getMinimumTokenMatch().intValue());
     }
 
     @Test
@@ -56,7 +56,7 @@ public class MinTokenMatchTest extends CommandLineInterfaceTest {
     public void testLowerBound() {
         String argument = buildArgument(CommandLineArgument.MIN_TOKEN_MATCH, Integer.toString(-1));
         buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(1, options.getMinTokenMatch().intValue());
+        assertEquals(1, options.getMinimumTokenMatch().intValue());
     }
 
     @Test
@@ -64,6 +64,6 @@ public class MinTokenMatchTest extends CommandLineInterfaceTest {
         int expectedValue = 50;
         String argument = buildArgument(CommandLineArgument.MIN_TOKEN_MATCH, Integer.toString(expectedValue));
         buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(expectedValue, options.getMinTokenMatch().intValue());
+        assertEquals(expectedValue, options.getMinimumTokenMatch().intValue());
     }
 }

+ 4 - 4
jplag/src/test/java/de/jplag/cli/StoredMatchesTest.java

@@ -17,7 +17,7 @@ public class StoredMatchesTest extends CommandLineInterfaceTest {
     @Test
     public void testDefault() {
         buildOptionsFromCLI(CURRENT_DIRECTORY);
-        assertEquals(JPlagOptions.DEFAULT_STORED_MATCHES, options.getMaxNumberOfMatches());
+        assertEquals(JPlagOptions.DEFAULT_STORED_MATCHES, options.getMaximumNumberOfMatches());
     }
 
     @Test
@@ -25,7 +25,7 @@ public class StoredMatchesTest extends CommandLineInterfaceTest {
         int expectedValue = 999;
         String argument = buildArgument(CommandLineArgument.STORED_MATCHES, Integer.toString(expectedValue));
         buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(expectedValue, options.getMaxNumberOfMatches());
+        assertEquals(expectedValue, options.getMaximumNumberOfMatches());
     }
 
     @Test
@@ -33,14 +33,14 @@ public class StoredMatchesTest extends CommandLineInterfaceTest {
         int expectedValue = -1;
         String argument = buildArgument(CommandLineArgument.STORED_MATCHES, Integer.toString(expectedValue));
         buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(expectedValue, options.getMaxNumberOfMatches());
+        assertEquals(expectedValue, options.getMaximumNumberOfMatches());
     }
 
     @Test
     public void testLowerBound() {
         String argument = buildArgument(CommandLineArgument.STORED_MATCHES, Integer.toString(-2));
         buildOptionsFromCLI(argument, CURRENT_DIRECTORY);
-        assertEquals(-1, options.getMaxNumberOfMatches());
+        assertEquals(-1, options.getMaximumNumberOfMatches());
     }
 
     @Test

+ 0 - 1
pom.xml

@@ -22,7 +22,6 @@
     <module>jplag.frontend.python-3</module>
     <module>jplag.frontend.scheme</module>
     <module>jplag.frontend.text</module>
-    <module>jplag.utils</module>
     <module>jplag</module>
   </modules>
   <dependencyManagement>