Explorar el Código

Format all files with spotless.

Timur Sağlam hace 4 años
padre
commit
6193607e40
Se han modificado 48 ficheros con 1733 adiciones y 1555 borrados
  1. 9 10
      jplag.frontend-utils/pom.xml
  2. 15 16
      jplag.frontend.chars/pom.xml
  3. 39 40
      jplag.frontend.cpp/pom.xml
  4. 153 81
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPToken.java
  5. 66 66
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPTokenConstants.java
  6. 42 43
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/Language.java
  7. 14 14
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/NewlineStream.java
  8. 19 19
      jplag.frontend.cpp/src/main/java/de/jplag/cpp/Scanner.java
  9. 40 41
      jplag.frontend.csharp-1.2/pom.xml
  10. 145 76
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpToken.java
  11. 58 58
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpTokenConstants.java
  12. 42 42
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Language.java
  13. 46 45
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Parser.java
  14. 3 2
      jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/UnicodeReader.java
  15. 15 16
      jplag.frontend.java/pom.xml
  16. 135 135
      jplag.frontend.java/src/main/java/de/jplag/java/JavaToken.java
  17. 35 36
      jplag.frontend.python-3/pom.xml
  18. 31 31
      jplag.frontend.python-3/src/main/java/de/jplag/python3/JplagPython3Listener.java
  19. 3 2
      jplag.frontend.python-3/src/main/java/de/jplag/python3/Parser.java
  20. 1 1
      jplag.frontend.python-3/src/main/java/de/jplag/python3/Python3Token.java
  21. 40 41
      jplag.frontend.scheme/pom.xml
  22. 42 42
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/Language.java
  23. 23 24
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/Parser.java
  24. 113 61
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeToken.java
  25. 47 47
      jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeTokenConstants.java
  26. 40 41
      jplag.frontend.text/pom.xml
  27. 1 0
      jplag.frontend.text/src/main/java/de/jplag/text/Parser.java
  28. 94 95
      jplag/pom.xml
  29. 6 5
      jplag/src/main/java/de/jplag/CLI.java
  30. 5 4
      jplag/src/main/java/de/jplag/CommandLineArgument.java
  31. 2 1
      jplag/src/main/java/de/jplag/GreedyStringTiling.java
  32. 3 5
      jplag/src/main/java/de/jplag/JPlagComparison.java
  33. 2 2
      jplag/src/main/java/de/jplag/Match.java
  34. 0 1
      jplag/src/main/java/de/jplag/SubmissionSet.java
  35. 2 1
      jplag/src/main/java/de/jplag/SubmissionSetBuilder.java
  36. 8 7
      jplag/src/main/java/de/jplag/options/JPlagOptions.java
  37. 6 6
      jplag/src/main/java/de/jplag/options/Verbosity.java
  38. 2 2
      jplag/src/main/java/de/jplag/reporting/Report.java
  39. 2 2
      jplag/src/main/java/de/jplag/reporting/TagParser.java
  40. 3 1
      jplag/src/main/java/de/jplag/strategy/AbstractComparisonStrategy.java
  41. 2 1
      jplag/src/test/java/de/jplag/JPlagComparisonTest.java
  42. 2 2
      jplag/src/test/java/de/jplag/NewJavaFeaturesTest.java
  43. 10 23
      jplag/src/test/java/de/jplag/NormalComparisonTest.java
  44. 4 3
      jplag/src/test/java/de/jplag/ParallelComparisonTest.java
  45. 1 1
      jplag/src/test/java/de/jplag/TestBase.java
  46. 5 6
      jplag/src/test/java/de/jplag/VolumeTest.java
  47. 2 1
      jplag/src/test/java/de/jplag/cli/CommandLineInterfaceTest.java
  48. 355 356
      pom.xml

+ 9 - 10
jplag.frontend-utils/pom.xml

@@ -1,13 +1,12 @@
-<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>frontend-utils</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
 
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>frontend-utils</artifactId>
 
 </project>

+ 15 - 16
jplag.frontend.chars/pom.xml

@@ -1,17 +1,16 @@
-<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>
-	<dependencies>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
-	<artifactId>chars</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>chars</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+    </dependencies>
 </project>

+ 39 - 40
jplag.frontend.cpp/pom.xml

@@ -1,43 +1,42 @@
-<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>cpp</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>cpp</artifactId>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>com.helger.maven</groupId>
-				<artifactId>ph-javacc-maven-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>javacc-gen</id>
-						<phase>generate-sources</phase>
-						<goals>
-							<goal>javacc</goal>
-						</goals>
-						<configuration>
-							<jdkVersion>1.5</jdkVersion>
-							<javadocFriendlyComments>true</javadocFriendlyComments>
-							<packageName>de.jplag.cpp</packageName>
-							<sourceDirectory>src/main/javacc</sourceDirectory>
-							<outputDirectory>${project.build.directory}/generated-sources/javacc</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+    <dependencies>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+    </dependencies>
 
-	<dependencies>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>com.helger.maven</groupId>
+                <artifactId>ph-javacc-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>javacc-gen</id>
+                        <goals>
+                            <goal>javacc</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <jdkVersion>1.5</jdkVersion>
+                            <javadocFriendlyComments>true</javadocFriendlyComments>
+                            <packageName>de.jplag.cpp</packageName>
+                            <sourceDirectory>src/main/javacc</sourceDirectory>
+                            <outputDirectory>${project.build.directory}/generated-sources/javacc</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 153 - 81
jplag.frontend.cpp/src/main/java/de/jplag/cpp/CPPToken.java

@@ -3,91 +3,163 @@ package de.jplag.cpp;
 import de.jplag.Token;
 
 public class CPPToken extends Token implements CPPTokenConstants {
-	private static final long serialVersionUID = 1L;
-	private int line;
+    private static final long serialVersionUID = 1L;
+    private int line;
 
-	public CPPToken(int type, String file, int line) {
-		super(type, file, line);
-	}
+    public CPPToken(int type, String file, int line) {
+        super(type, file, line);
+    }
 
-	@Override
-    public int getLine() { return line; }
-	@Override
-    public void setLine(int line) { this.line = line; }
+    @Override
+    public int getLine() {
+        return line;
+    }
 
-	@Override
-    public int getColumn() {return 0;}
-	@Override
-    public int getLength() {return 0;}
+    @Override
+    public void setLine(int line) {
+        this.line = line;
+    }
 
-	public static String type2string(int type) {
-		switch (type) {
-			case CPPTokenConstants.FILE_END:
-									return "********";
+    @Override
+    public int getColumn() {
+        return 0;
+    }
 
-			case C_BLOCK_BEGIN:     return "BLOCK{";
-			case C_BLOCK_END:       return "}BLOCK";
-			case C_SCOPE:           return "SCOPE";
-			case C_QUESTIONMARK:    return "COND";
-			case C_ELLIPSIS:        return "...";
-			case C_ASSIGN:          return "ASSIGN";
-			case C_DOT:             return "DOT";
-			case C_ARROW:           return "ARROW";
-			case C_DOTSTAR:         return "DOTSTAR";
-			case C_ARROWSTAR:       return "ARROWSTAR";
-			case C_AUTO:            return "AUTO";
-			case C_BREAK:           return "BREAK";
-			case C_CASE:            return "CASE";
-			case C_CATCH:           return "CATCH";
-			case C_CHAR:            return "CHAR";
-			case C_CONST:           return "CONST";
-			case C_CONTINUE:        return "CONTINUE";
-			case C_DEFAULT:         return "DEFAULT";
-			case C_DELETE:          return "DELETE";
-			case C_DO:              return "DO";
-			case C_DOUBLE:          return "DOUBLE";
-			case C_ELSE:            return "ELSE";
-			case C_ENUM:            return "ENUM";
-			case C_EXTERN:          return "EXTERN";
-			case C_FLOAT:           return "FLOAT";
-			case C_FOR:             return "FOR";
-			case C_FRIEND:          return "FRIEND";
-			case C_GOTO:            return "GOTO";
-			case C_IF:              return "IF";
-			case C_INLINE:          return "INLINE";
-			case C_INT:             return "INT";
-			case C_LONG:            return "LONG";
-			case C_NEW:             return "NEW";
-			case C_PRIVATE:         return "PRIVATE";
-			case C_PROTECTED:       return "PROTECTED";
-			case C_PUBLIC:          return "PUBLIC";
-			case C_REDECLARED:      return "REDECLARED";
-			case C_REGISTER:        return "REGISTER";
-			case C_RETURN:          return "RETURN";
-			case C_SHORT:           return "SHORT";
-			case C_SIGNED:          return "SIGNED";
-			case C_SIZEOF:          return "SIZEOF";
-			case C_STATIC:          return "STATIC";
-			case C_STRUCT:          return "STRUCT";
-			case C_CLASS:           return "CLASS";
-			case C_SWITCH:          return "SWITCH";
-			case C_TEMPLATE:        return "TEMPLATE";
-			case C_THIS:            return "THIS";
-			case C_TRY:             return "TRY";
-			case C_TYPEDEF:         return "TYPEDEF";
-			case C_UNION:           return "UNION";
-			case C_UNSIGNED:        return "UNSIGNED";
-			case C_VIRTUAL:         return "VIRTUAL";
-			case C_VOID:            return "VOID";
-			case C_VOLANTILE:       return "VOLANTILE";
-			case C_WHILE:           return "WHILE";
-			case C_OPERATOR:        return "OPERATOR";
-			case C_THROW:           return "THROW";
-			case C_ID:              return "ID";
-			case C_FUN:             return "FUN";
-			case C_NULL:            return "NULL";
+    @Override
+    public int getLength() {
+        return 0;
+    }
 
-			default:                return "<UNBEKANNT>";
-		}
-	}
+    public static String type2string(int type) {
+        switch (type) {
+            case CPPTokenConstants.FILE_END:
+                return "********";
+
+            case C_BLOCK_BEGIN:
+                return "BLOCK{";
+            case C_BLOCK_END:
+                return "}BLOCK";
+            case C_SCOPE:
+                return "SCOPE";
+            case C_QUESTIONMARK:
+                return "COND";
+            case C_ELLIPSIS:
+                return "...";
+            case C_ASSIGN:
+                return "ASSIGN";
+            case C_DOT:
+                return "DOT";
+            case C_ARROW:
+                return "ARROW";
+            case C_DOTSTAR:
+                return "DOTSTAR";
+            case C_ARROWSTAR:
+                return "ARROWSTAR";
+            case C_AUTO:
+                return "AUTO";
+            case C_BREAK:
+                return "BREAK";
+            case C_CASE:
+                return "CASE";
+            case C_CATCH:
+                return "CATCH";
+            case C_CHAR:
+                return "CHAR";
+            case C_CONST:
+                return "CONST";
+            case C_CONTINUE:
+                return "CONTINUE";
+            case C_DEFAULT:
+                return "DEFAULT";
+            case C_DELETE:
+                return "DELETE";
+            case C_DO:
+                return "DO";
+            case C_DOUBLE:
+                return "DOUBLE";
+            case C_ELSE:
+                return "ELSE";
+            case C_ENUM:
+                return "ENUM";
+            case C_EXTERN:
+                return "EXTERN";
+            case C_FLOAT:
+                return "FLOAT";
+            case C_FOR:
+                return "FOR";
+            case C_FRIEND:
+                return "FRIEND";
+            case C_GOTO:
+                return "GOTO";
+            case C_IF:
+                return "IF";
+            case C_INLINE:
+                return "INLINE";
+            case C_INT:
+                return "INT";
+            case C_LONG:
+                return "LONG";
+            case C_NEW:
+                return "NEW";
+            case C_PRIVATE:
+                return "PRIVATE";
+            case C_PROTECTED:
+                return "PROTECTED";
+            case C_PUBLIC:
+                return "PUBLIC";
+            case C_REDECLARED:
+                return "REDECLARED";
+            case C_REGISTER:
+                return "REGISTER";
+            case C_RETURN:
+                return "RETURN";
+            case C_SHORT:
+                return "SHORT";
+            case C_SIGNED:
+                return "SIGNED";
+            case C_SIZEOF:
+                return "SIZEOF";
+            case C_STATIC:
+                return "STATIC";
+            case C_STRUCT:
+                return "STRUCT";
+            case C_CLASS:
+                return "CLASS";
+            case C_SWITCH:
+                return "SWITCH";
+            case C_TEMPLATE:
+                return "TEMPLATE";
+            case C_THIS:
+                return "THIS";
+            case C_TRY:
+                return "TRY";
+            case C_TYPEDEF:
+                return "TYPEDEF";
+            case C_UNION:
+                return "UNION";
+            case C_UNSIGNED:
+                return "UNSIGNED";
+            case C_VIRTUAL:
+                return "VIRTUAL";
+            case C_VOID:
+                return "VOID";
+            case C_VOLANTILE:
+                return "VOLANTILE";
+            case C_WHILE:
+                return "WHILE";
+            case C_OPERATOR:
+                return "OPERATOR";
+            case C_THROW:
+                return "THROW";
+            case C_ID:
+                return "ID";
+            case C_FUN:
+                return "FUN";
+            case C_NULL:
+                return "NULL";
+
+            default:
+                return "<UNBEKANNT>";
+        }
+    }
 }

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

@@ -3,72 +3,72 @@ package de.jplag.cpp;
 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
-  final static int SEPARATOR_TOKEN = 1;
+    final static int FILE_END = 0;
+    // Used to optionally separate methods from each other
+    // with an always marked token
+    final static int SEPARATOR_TOKEN = 1;
 
-  final static int C_BLOCK_BEGIN = 2;
-  final static int C_BLOCK_END = 3;
-  final static int C_SCOPE = 4;
-  final static int C_QUESTIONMARK = 5;
-  final static int C_ELLIPSIS = 6;
-  final static int C_ASSIGN = 7;
-  final static int C_DOT = 8;
-  final static int C_ARROW = 9;
-  final static int C_ARROWSTAR = 10;
-  final static int C_AUTO = 11;
-  final static int C_BREAK = 12;
-  final static int C_CASE = 13;
-  final static int C_CATCH = 14;
-  final static int C_CHAR = 15;
-  final static int C_CONST = 16;
-  final static int C_CONTINUE = 17;
-  final static int C_DEFAULT = 18;
-  final static int C_DELETE = 19;
-  final static int C_DO = 20;
-  final static int C_DOUBLE = 21;
-  final static int C_ELSE = 22;
-  final static int C_ENUM = 23;
-  final static int C_EXTERN = 24;
-  final static int C_FLOAT = 25;
-  final static int C_FOR = 26;
-  final static int C_FRIEND = 27;
-  final static int C_GOTO = 28;
-  final static int C_IF = 29;
-  final static int C_INLINE = 30;
-  final static int C_INT = 31;
-  final static int C_LONG = 32;
-  final static int C_NEW = 33;
-  final static int C_PRIVATE = 34;
-  final static int C_PROTECTED = 35;
-  final static int C_PUBLIC = 36;
-  final static int C_REDECLARED = 37;
-  final static int C_REGISTER = 38;
-  final static int C_RETURN = 39;
-  final static int C_SHORT = 40;
-  final static int C_SIGNED = 41;
-  final static int C_SIZEOF = 42;
-  final static int C_STATIC = 43;
-  final static int C_STRUCT = 44;
-  final static int C_CLASS = 45;
-  final static int C_SWITCH = 46;
-  final static int C_TEMPLATE = 47;
-  final static int C_THIS = 48;
-  final static int C_TRY = 49;
-  final static int C_TYPEDEF = 50;
-  final static int C_UNION = 51;
-  final static int C_UNSIGNED = 52;
-  final static int C_VIRTUAL = 53;
-  final static int C_VOID = 54;
-  final static int C_VOLANTILE = 55;
-  final static int C_WHILE = 56;
-  final static int C_OPERATOR = 57;
-  final static int C_THROW = 58;
-  final static int C_ID = 59;
-  final static int C_FUN = 60;
-  final static int C_DOTSTAR = 61;
-  final static int C_NULL = 62;
+    final static int C_BLOCK_BEGIN = 2;
+    final static int C_BLOCK_END = 3;
+    final static int C_SCOPE = 4;
+    final static int C_QUESTIONMARK = 5;
+    final static int C_ELLIPSIS = 6;
+    final static int C_ASSIGN = 7;
+    final static int C_DOT = 8;
+    final static int C_ARROW = 9;
+    final static int C_ARROWSTAR = 10;
+    final static int C_AUTO = 11;
+    final static int C_BREAK = 12;
+    final static int C_CASE = 13;
+    final static int C_CATCH = 14;
+    final static int C_CHAR = 15;
+    final static int C_CONST = 16;
+    final static int C_CONTINUE = 17;
+    final static int C_DEFAULT = 18;
+    final static int C_DELETE = 19;
+    final static int C_DO = 20;
+    final static int C_DOUBLE = 21;
+    final static int C_ELSE = 22;
+    final static int C_ENUM = 23;
+    final static int C_EXTERN = 24;
+    final static int C_FLOAT = 25;
+    final static int C_FOR = 26;
+    final static int C_FRIEND = 27;
+    final static int C_GOTO = 28;
+    final static int C_IF = 29;
+    final static int C_INLINE = 30;
+    final static int C_INT = 31;
+    final static int C_LONG = 32;
+    final static int C_NEW = 33;
+    final static int C_PRIVATE = 34;
+    final static int C_PROTECTED = 35;
+    final static int C_PUBLIC = 36;
+    final static int C_REDECLARED = 37;
+    final static int C_REGISTER = 38;
+    final static int C_RETURN = 39;
+    final static int C_SHORT = 40;
+    final static int C_SIGNED = 41;
+    final static int C_SIZEOF = 42;
+    final static int C_STATIC = 43;
+    final static int C_STRUCT = 44;
+    final static int C_CLASS = 45;
+    final static int C_SWITCH = 46;
+    final static int C_TEMPLATE = 47;
+    final static int C_THIS = 48;
+    final static int C_TRY = 49;
+    final static int C_TYPEDEF = 50;
+    final static int C_UNION = 51;
+    final static int C_UNSIGNED = 52;
+    final static int C_VIRTUAL = 53;
+    final static int C_VOID = 54;
+    final static int C_VOLANTILE = 55;
+    final static int C_WHILE = 56;
+    final static int C_OPERATOR = 57;
+    final static int C_THROW = 58;
+    final static int C_ID = 59;
+    final static int C_FUN = 60;
+    final static int C_DOTSTAR = 61;
+    final static int C_NULL = 62;
 
-  final static int NUM_DIFF_TOKENS = 63;
+    final static int NUM_DIFF_TOKENS = 63;
 }

+ 42 - 43
jplag.frontend.cpp/src/main/java/de/jplag/cpp/Language.java

@@ -9,73 +9,72 @@ import de.jplag.TokenList;
  * Leider werden C/C++ nicht geparst, sondern nur gescannt...
  */
 public class Language implements de.jplag.Language {
-	private Scanner scanner;
+    private Scanner scanner;
 
-	public Language(ErrorConsumer program) {
-		this.scanner = new Scanner();
-		this.scanner.setProgram(program);
+    public Language(ErrorConsumer program) {
+        this.scanner = new Scanner();
+        this.scanner.setProgram(program);
 
-	}
+    }
 
-	@Override
+    @Override
     public int errorCount() {
-		return this.scanner.errorsCount();
-	}
+        return this.scanner.errorsCount();
+    }
 
-	@Override
+    @Override
     public String[] suffixes() {
-		String[] res = { ".cpp", ".CPP", ".cxx", ".CXX", ".c++", ".C++", ".c", ".C", ".cc", ".CC", ".h", ".H",
-				".hpp", ".HPP", ".hh", ".HH" };
-		return res;
-	}
+        String[] res = {".cpp", ".CPP", ".cxx", ".CXX", ".c++", ".C++", ".c", ".C", ".cc", ".CC", ".h", ".H", ".hpp", ".HPP", ".hh", ".HH"};
+        return res;
+    }
 
-	@Override
+    @Override
     public String getName() {
-		return "C/C++ Scanner [basic markup]";
-	}
+        return "C/C++ Scanner [basic markup]";
+    }
 
-	@Override
+    @Override
     public String getShortName() {
-		return "cpp";
-	}
+        return "cpp";
+    }
 
-	@Override
+    @Override
     public int minimumTokenMatch() {
-		return 12;
-	}
+        return 12;
+    }
 
-	@Override
+    @Override
     public boolean supportsColumns() {
-		return false;
-	}
+        return false;
+    }
 
-	@Override
+    @Override
     public boolean isPreformatted() {
-		return true;
-	}
+        return true;
+    }
 
-	@Override
+    @Override
     public boolean usesIndex() {
-		return false;
-	}
+        return false;
+    }
 
-	@Override
+    @Override
     public TokenList parse(File dir, String[] files) {
-		return this.scanner.scan(dir, files);
-	}
+        return this.scanner.scan(dir, files);
+    }
 
-	@Override
+    @Override
     public boolean hasErrors() {
-		return this.scanner.hasErrors();
-	}
+        return this.scanner.hasErrors();
+    }
 
-	@Override
+    @Override
     public int numberOfTokens() {
-		return CPPTokenConstants.NUM_DIFF_TOKENS;
-	}
+        return CPPTokenConstants.NUM_DIFF_TOKENS;
+    }
 
-	@Override
+    @Override
     public String type2string(int type) {
-		return CPPToken.type2string(type);
-	}
+        return CPPToken.type2string(type);
+    }
 }

+ 14 - 14
jplag.frontend.cpp/src/main/java/de/jplag/cpp/NewlineStream.java

@@ -19,20 +19,20 @@ public class NewlineStream extends InputStream {
     public int read() throws IOException {
         int result;
         switch (endOfFile) {
-        case 0:
-            result = stream.read();
-            if (result == -1) {
-                result = 13;
-                endOfFile = 1;
-            }
-            break;
-        case 1:
-            result = 10;
-            endOfFile = 2;
-            break;
-        default:
-            result = -1;
-            break;
+            case 0:
+                result = stream.read();
+                if (result == -1) {
+                    result = 13;
+                    endOfFile = 1;
+                }
+                break;
+            case 1:
+                result = 10;
+                endOfFile = 2;
+                break;
+            default:
+                result = -1;
+                break;
         }
         return result;
     }

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

@@ -6,26 +6,26 @@ import de.jplag.AbstractParser;
 import de.jplag.TokenList;
 
 public class Scanner extends AbstractParser implements CPPTokenConstants {
-	private String actFile;
+    private String actFile;
 
-	private TokenList struct;
+    private TokenList struct;
 
-	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++) {
-			actFile = files[i];
-		    getErrorConsumer().print(null, "Scanning file " + files[i]);
-			if (!CPPScanner.scanFile(dir, files[i], scanner, this))
-				errors++;
-			struct.addToken(new CPPToken(FILE_END, actFile, 1));
-		}
-		this.parseEnd();
-		return struct;
-	}
+    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++) {
+            actFile = files[i];
+            getErrorConsumer().print(null, "Scanning file " + files[i]);
+            if (!CPPScanner.scanFile(dir, files[i], scanner, this))
+                errors++;
+            struct.addToken(new CPPToken(FILE_END, actFile, 1));
+        }
+        this.parseEnd();
+        return struct;
+    }
 
-	public void add(int type, Token token) {
-		struct.addToken(new CPPToken(type, actFile, token.beginLine));
-	}
+    public void add(int type, Token token) {
+        struct.addToken(new CPPToken(type, actFile, token.beginLine));
+    }
 }

+ 40 - 41
jplag.frontend.csharp-1.2/pom.xml

@@ -1,44 +1,43 @@
-<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>csharp-1.2</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>csharp-1.2</artifactId>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>antlr-maven-plugin</artifactId>
-				<configuration>
-					<!-- Comma separated list of grammar files or pattern grammar files 
-						By default, grammar file(s) is in ${basedir}/src/main/antlr -->
-					<grammars>csharp.g</grammars>
-					<!-- <grammars>*.g</grammars> -->
-				</configuration>
-				<executions>
-					<execution>
-						<goals>
-							<goal>generate</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+    <dependencies>
+        <dependency>
+            <groupId>antlr</groupId>
+            <artifactId>antlr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+    </dependencies>
 
-	<dependencies>
-		<dependency>
-			<groupId>antlr</groupId>
-			<artifactId>antlr</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>antlr-maven-plugin</artifactId>
+                <configuration>
+                    <!-- Comma separated list of grammar files or pattern grammar files 
+						By default, grammar file(s) is in ${basedir}/src/main/antlr -->
+                    <grammars>csharp.g</grammars>
+                    <!-- <grammars>*.g</grammars> -->
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 145 - 76
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/CSharpToken.java

@@ -3,85 +3,154 @@ package de.jplag.csharp;
 import de.jplag.Token;
 
 public class CSharpToken extends Token implements CSharpTokenConstants {
-  private static final long serialVersionUID = 1L;
-  private int line, column, length;
+    private static final long serialVersionUID = 1L;
+    private int line, column, length;
 
-  public CSharpToken(int type, String file, int line, int column, int length) {
-    super(type, file, line, column, length);
- }
+    public CSharpToken(int type, String file, int line, int column, int length) {
+        super(type, file, line, column, length);
+    }
 
-  @Override
-public int getLine() { return line; }
-  @Override
-public int getColumn() { return column; }
-  @Override
-public int getLength() { return length; }
-  @Override
-public void setLine(int line) { this.line = line; }
-  @Override
-public void setColumn(int column) { this.column = column; }
-  @Override
-public void setLength(int length) { this.length = length; }
+    @Override
+    public int getLine() {
+        return line;
+    }
 
-  public static String type2string(int type) {
-    switch (type) {
-    case CSharpTokenConstants.FILE_END:
-                                   return "**********";
-    case _INVOCATION:              return "INVOCATION";
-    case _OBJECT_CREATION:         return "OBJECT_CRE";
-    case _ARRAY_CREATION:          return "ARRAY_CREA";
-    case _ASSIGNMENT:              return "ASSIGNMENT";
-    case _L_BRACE:                 return "L_BRACE { ";
-    case _R_BRACE:                 return "R_BRACE } ";
-    case _DECLARE_VAR:             return "DECLAREVAR";
-    case _DECLARE_CONST:           return "DECLARE_CO";
-    case _IF:                      return "IF {      ";
-    case _ELSE:                    return "ELSE      ";
-    case _END_IF:                  return "IF }      ";
-    case _SWITCH_BEGIN:            return "SWITCH {  ";
-    case _SWITCH_END:              return "SWITCH }  ";
-    case _CASE:                    return "CASE      ";
-    case _DO:                      return "DO        ";
-    case _WHILE:                   return "WHILE     ";
-    case _FOR:                     return "FOR       ";
-    case _FOREACH:                 return "FOREACH   ";
-    case _BREAK:                   return "BREAK     ";
-    case _CONTINUE:                return "CONTINUE  ";
-    case _GOTO:                    return "GOTO      ";
-    case _RETURN:                  return "RETURN    ";
-    case _THROW:                   return "THROW     ";
-    case _CHECKED:                 return "CHECKED   ";
-    case _UNCHECKED:               return "UNCHECKED ";
-    case _LOCK:                    return "LOCK      ";
-    case _USING:                   return "USING     ";
-    case _TRY:                     return "TRY       ";
-    case _CATCH:                   return "CATCH     ";
-    case _FINALLY:                 return "FINALLY   ";
-    case _NAMESPACE_BEGIN:         return "NAMESPACE{";
-    case _NAMESPACE_END:           return "NAMESPACE}";
-    case _USING_DIRECTIVE:         return "USING_DIR ";
-    case _CLASS_BEGIN:             return "CLASS {   ";
-    case _CLASS_END:               return "CLASS }   ";
-    case _METHOD:                  return "METHOD    ";
-    case _PROPERTY:                return "PROPERTY  ";
-    case _EVENT:                   return "EVENT     ";
-    case _INDEXER:                 return "INDEXER   ";
-    case _OPERATOR:                return "OPERATOR  ";
-    case _CONSTRUCTOR:             return "CONSTR    ";
-    case _STATIC_CONSTR:           return "ST_CONSTR ";
-    case _DESTRUCTOR:              return "DESTRUCTOR";
-    case _STRUCT_BEGIN:            return "STRUCT {  ";
-    case _STRUCT_END:              return "STRUCT }  ";
-    case _INTERFACE_BEGIN:         return "INTERFACE{";
-    case _INTERFACE_END:           return "INTERFACE}";
-    case _ENUM:                    return "ENUM      ";
-    case _DELEGATE:                return "DELEGATE  ";
-    case _ATTRIBUTE:               return "ATTRIBUTE ";
-    case _UNSAFE:                  return "UNSAFE    ";
-    case _FIXED:                   return "FIXED     ";
+    @Override
+    public int getColumn() {
+        return column;
+    }
 
-    default:                      return "<UNKNOWN> ";
+    @Override
+    public int getLength() {
+        return length;
     }
-  }
-}
 
+    @Override
+    public void setLine(int line) {
+        this.line = line;
+    }
+
+    @Override
+    public void setColumn(int column) {
+        this.column = column;
+    }
+
+    @Override
+    public void setLength(int length) {
+        this.length = length;
+    }
+
+    public static String type2string(int type) {
+        switch (type) {
+            case CSharpTokenConstants.FILE_END:
+                return "**********";
+            case _INVOCATION:
+                return "INVOCATION";
+            case _OBJECT_CREATION:
+                return "OBJECT_CRE";
+            case _ARRAY_CREATION:
+                return "ARRAY_CREA";
+            case _ASSIGNMENT:
+                return "ASSIGNMENT";
+            case _L_BRACE:
+                return "L_BRACE { ";
+            case _R_BRACE:
+                return "R_BRACE } ";
+            case _DECLARE_VAR:
+                return "DECLAREVAR";
+            case _DECLARE_CONST:
+                return "DECLARE_CO";
+            case _IF:
+                return "IF {      ";
+            case _ELSE:
+                return "ELSE      ";
+            case _END_IF:
+                return "IF }      ";
+            case _SWITCH_BEGIN:
+                return "SWITCH {  ";
+            case _SWITCH_END:
+                return "SWITCH }  ";
+            case _CASE:
+                return "CASE      ";
+            case _DO:
+                return "DO        ";
+            case _WHILE:
+                return "WHILE     ";
+            case _FOR:
+                return "FOR       ";
+            case _FOREACH:
+                return "FOREACH   ";
+            case _BREAK:
+                return "BREAK     ";
+            case _CONTINUE:
+                return "CONTINUE  ";
+            case _GOTO:
+                return "GOTO      ";
+            case _RETURN:
+                return "RETURN    ";
+            case _THROW:
+                return "THROW     ";
+            case _CHECKED:
+                return "CHECKED   ";
+            case _UNCHECKED:
+                return "UNCHECKED ";
+            case _LOCK:
+                return "LOCK      ";
+            case _USING:
+                return "USING     ";
+            case _TRY:
+                return "TRY       ";
+            case _CATCH:
+                return "CATCH     ";
+            case _FINALLY:
+                return "FINALLY   ";
+            case _NAMESPACE_BEGIN:
+                return "NAMESPACE{";
+            case _NAMESPACE_END:
+                return "NAMESPACE}";
+            case _USING_DIRECTIVE:
+                return "USING_DIR ";
+            case _CLASS_BEGIN:
+                return "CLASS {   ";
+            case _CLASS_END:
+                return "CLASS }   ";
+            case _METHOD:
+                return "METHOD    ";
+            case _PROPERTY:
+                return "PROPERTY  ";
+            case _EVENT:
+                return "EVENT     ";
+            case _INDEXER:
+                return "INDEXER   ";
+            case _OPERATOR:
+                return "OPERATOR  ";
+            case _CONSTRUCTOR:
+                return "CONSTR    ";
+            case _STATIC_CONSTR:
+                return "ST_CONSTR ";
+            case _DESTRUCTOR:
+                return "DESTRUCTOR";
+            case _STRUCT_BEGIN:
+                return "STRUCT {  ";
+            case _STRUCT_END:
+                return "STRUCT }  ";
+            case _INTERFACE_BEGIN:
+                return "INTERFACE{";
+            case _INTERFACE_END:
+                return "INTERFACE}";
+            case _ENUM:
+                return "ENUM      ";
+            case _DELEGATE:
+                return "DELEGATE  ";
+            case _ATTRIBUTE:
+                return "ATTRIBUTE ";
+            case _UNSAFE:
+                return "UNSAFE    ";
+            case _FIXED:
+                return "FIXED     ";
+
+            default:
+                return "<UNKNOWN> ";
+        }
+    }
+}

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

@@ -3,64 +3,64 @@ package de.jplag.csharp;
 import de.jplag.TokenConstants;
 
 public interface CSharpTokenConstants extends TokenConstants {
-  final static int FILE_END = 0;
+    final static int FILE_END = 0;
 
-  // Used to optionally separate methods from each other
-  // with an always marked token
-  final static int SEPARATOR_TOKEN = 1;
-  
-  final static int _INVOCATION =       2;
-  final static int _OBJECT_CREATION =  3;
-  final static int _ARRAY_CREATION =   4;
-  final static int _ASSIGNMENT =       5;
-  final static int _L_BRACE =          6;
-  final static int _R_BRACE =          7;
-  final static int _DECLARE_VAR =      8;
-  final static int _DECLARE_CONST =    9;
-  final static int _IF =              10;
-  final static int _ELSE =            11;
-  final static int _SWITCH_BEGIN =    12;
-  final static int _SWITCH_END =      13;
-  final static int _CASE =            14;
-  final static int _DO =              15;
-  final static int _WHILE =           16;
-  final static int _FOR =             17;
-  final static int _FOREACH =         18;
-  final static int _BREAK =           19;
-  final static int _CONTINUE =        20;
-  final static int _GOTO =            21;
-  final static int _RETURN =          22;
-  final static int _THROW =           23;
-  final static int _CHECKED =         24;
-  final static int _UNCHECKED =       25;
-  final static int _LOCK =            26;
-  final static int _USING =           27;
-  final static int _TRY =             28;
-  final static int _CATCH =           29;
-  final static int _FINALLY =         30;
-  final static int _NAMESPACE_BEGIN = 31;
-  final static int _NAMESPACE_END =   32;
-  final static int _USING_DIRECTIVE = 33;
-  final static int _CLASS_BEGIN =     34;
-  final static int _CLASS_END =       35;
-  final static int _METHOD =          36;
-  final static int _PROPERTY =        37;
-  final static int _EVENT =           38;
-  final static int _INDEXER =         39;
-  final static int _OPERATOR =        40;
-  final static int _CONSTRUCTOR =     41;
-  final static int _STATIC_CONSTR =   42;
-  final static int _DESTRUCTOR =      43;
-  final static int _STRUCT_BEGIN =    44;
-  final static int _STRUCT_END =      45;
-  final static int _INTERFACE_BEGIN = 46;
-  final static int _INTERFACE_END =   47;
-  final static int _ENUM =            48;
-  final static int _DELEGATE =        49;
-  final static int _ATTRIBUTE =       50;
-  final static int _END_IF =          51;
-  final static int _UNSAFE =          52;
-  final static int _FIXED =           53;
+    // Used to optionally separate methods from each other
+    // with an always marked token
+    final static int SEPARATOR_TOKEN = 1;
 
-  final static int NUM_DIFF_TOKENS = 54;
+    final static int _INVOCATION = 2;
+    final static int _OBJECT_CREATION = 3;
+    final static int _ARRAY_CREATION = 4;
+    final static int _ASSIGNMENT = 5;
+    final static int _L_BRACE = 6;
+    final static int _R_BRACE = 7;
+    final static int _DECLARE_VAR = 8;
+    final static int _DECLARE_CONST = 9;
+    final static int _IF = 10;
+    final static int _ELSE = 11;
+    final static int _SWITCH_BEGIN = 12;
+    final static int _SWITCH_END = 13;
+    final static int _CASE = 14;
+    final static int _DO = 15;
+    final static int _WHILE = 16;
+    final static int _FOR = 17;
+    final static int _FOREACH = 18;
+    final static int _BREAK = 19;
+    final static int _CONTINUE = 20;
+    final static int _GOTO = 21;
+    final static int _RETURN = 22;
+    final static int _THROW = 23;
+    final static int _CHECKED = 24;
+    final static int _UNCHECKED = 25;
+    final static int _LOCK = 26;
+    final static int _USING = 27;
+    final static int _TRY = 28;
+    final static int _CATCH = 29;
+    final static int _FINALLY = 30;
+    final static int _NAMESPACE_BEGIN = 31;
+    final static int _NAMESPACE_END = 32;
+    final static int _USING_DIRECTIVE = 33;
+    final static int _CLASS_BEGIN = 34;
+    final static int _CLASS_END = 35;
+    final static int _METHOD = 36;
+    final static int _PROPERTY = 37;
+    final static int _EVENT = 38;
+    final static int _INDEXER = 39;
+    final static int _OPERATOR = 40;
+    final static int _CONSTRUCTOR = 41;
+    final static int _STATIC_CONSTR = 42;
+    final static int _DESTRUCTOR = 43;
+    final static int _STRUCT_BEGIN = 44;
+    final static int _STRUCT_END = 45;
+    final static int _INTERFACE_BEGIN = 46;
+    final static int _INTERFACE_END = 47;
+    final static int _ENUM = 48;
+    final static int _DELEGATE = 49;
+    final static int _ATTRIBUTE = 50;
+    final static int _END_IF = 51;
+    final static int _UNSAFE = 52;
+    final static int _FIXED = 53;
+
+    final static int NUM_DIFF_TOKENS = 54;
 }

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

@@ -6,72 +6,72 @@ import de.jplag.ErrorConsumer;
 import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
-	private Parser parser;
+    private Parser parser;
 
-	public Language(ErrorConsumer program) {
-		this.parser = new Parser();
-		this.parser.setProgram(program);
+    public Language(ErrorConsumer program) {
+        this.parser = new Parser();
+        this.parser.setProgram(program);
 
-	}
+    }
 
-	@Override
+    @Override
     public String[] suffixes() {
-		String[] res = { ".cs", ".CS" };
-		return res;
-	}
+        String[] res = {".cs", ".CS"};
+        return res;
+    }
 
-	@Override
+    @Override
     public int errorCount() {
-		return this.parser.errorsCount();
-	}
+        return this.parser.errorsCount();
+    }
 
-	@Override
+    @Override
     public String getName() {
-		return "C# 1.2 AbstractParser";
-	}
+        return "C# 1.2 AbstractParser";
+    }
 
-	@Override
+    @Override
     public String getShortName() {
-		return "c#-1.2";
-	}
+        return "c#-1.2";
+    }
 
-	@Override
+    @Override
     public int minimumTokenMatch() {
-		return 8;
-	}
+        return 8;
+    }
 
-	@Override
+    @Override
     public TokenList parse(File dir, String[] files) {
-		return this.parser.parse(dir, files);
-	}
+        return this.parser.parse(dir, files);
+    }
 
-	@Override
+    @Override
     public boolean hasErrors() {
-		return parser.hasErrors();
-	}
+        return parser.hasErrors();
+    }
 
-	@Override
+    @Override
     public boolean supportsColumns() {
-		return true;
-	}
+        return true;
+    }
 
-	@Override
+    @Override
     public boolean isPreformatted() {
-		return true;
-	}
+        return true;
+    }
 
-	@Override
+    @Override
     public boolean usesIndex() {
-		return false;
-	}
+        return false;
+    }
 
-	@Override
+    @Override
     public int numberOfTokens() {
-		return CSharpTokenConstants.NUM_DIFF_TOKENS;
-	}
+        return CSharpTokenConstants.NUM_DIFF_TOKENS;
+    }
 
-	@Override
+    @Override
     public String type2string(int type) {
-		return CSharpToken.type2string(type);
-	}
+        return CSharpToken.type2string(type);
+    }
 }

+ 46 - 45
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/Parser.java

@@ -5,61 +5,62 @@ import java.io.FileInputStream;
 import java.nio.charset.StandardCharsets;
 
 import antlr.Token;
+
 import de.jplag.AbstractParser;
 import de.jplag.TokenList;
 import de.jplag.csharp.grammar.CSharpLexer;
 import de.jplag.csharp.grammar.CSharpParser;
 
 public class Parser extends AbstractParser implements CSharpTokenConstants {
-	private TokenList struct;
-	private String currentFile;
+    private TokenList struct;
+    private String currentFile;
 
-	public TokenList parse(File dir, String files[]) {
-		struct = new TokenList();
-		errors = 0;
-		for (int i = 0; i < files.length; i++) {
-			if (!parseFile(dir, files[i]))
-				errors++;
-			struct.addToken(new CSharpToken(FILE_END, files[i], -1, -1, -1));
-		}
-		this.parseEnd();
-		return struct;
-	}
+    public TokenList parse(File dir, String files[]) {
+        struct = new TokenList();
+        errors = 0;
+        for (int i = 0; i < files.length; i++) {
+            if (!parseFile(dir, files[i]))
+                errors++;
+            struct.addToken(new CSharpToken(FILE_END, files[i], -1, -1, -1));
+        }
+        this.parseEnd();
+        return struct;
+    }
 
-	private boolean parseFile(File dir, String file) {
-		try {
-			FileInputStream fis = new FileInputStream(new File(dir, file));
-			currentFile = file;
-			// Create a scanner that reads from the input stream passed to us
-			CSharpLexer lexer = new CSharpLexer(new UnicodeReader(fis, StandardCharsets.UTF_8));
-			lexer.setFilename(file);
-			lexer.setTabSize(1);
+    private boolean parseFile(File dir, String file) {
+        try {
+            FileInputStream fis = new FileInputStream(new File(dir, file));
+            currentFile = file;
+            // Create a scanner that reads from the input stream passed to us
+            CSharpLexer lexer = new CSharpLexer(new UnicodeReader(fis, StandardCharsets.UTF_8));
+            lexer.setFilename(file);
+            lexer.setTabSize(1);
 
-			// Create a parser that reads from the scanner
-			CSharpParser parser = new CSharpParser(lexer);
-			parser.setFilename(file);
-			parser.parser = this;//Added by emeric 22.01.05
-			// start parsing at the compilationUnit rule
-			parser.compilation_unit();
+            // Create a parser that reads from the scanner
+            CSharpParser parser = new CSharpParser(lexer);
+            parser.setFilename(file);
+            parser.parser = this;// Added by emeric 22.01.05
+            // start parsing at the compilationUnit rule
+            parser.compilation_unit();
 
-			// close file
-			fis.close();
-		} catch (Exception e) {
-			getErrorConsumer().addError("  Parsing Error in '" + file + "':\n  " + e.toString());
-			return false;
-		}
-		return true;
-	}
+            // close file
+            fis.close();
+        } catch (Exception e) {
+            getErrorConsumer().addError("  Parsing Error in '" + file + "':\n  " + e.toString());
+            return false;
+        }
+        return true;
+    }
 
-	private void add(int type, Token tok) {
-		if (tok == null) {
-			System.out.println("tok == null  ERROR!");
-			return;
-		}
-		struct.addToken(new CSharpToken(type, currentFile, tok.getLine(), tok.getColumn(), tok.getText().length()));
-	}
+    private void add(int type, Token tok) {
+        if (tok == null) {
+            System.out.println("tok == null  ERROR!");
+            return;
+        }
+        struct.addToken(new CSharpToken(type, currentFile, tok.getLine(), tok.getColumn(), tok.getText().length()));
+    }
 
-	public void add(int type, CSharpParser p) {
-		add(type, p.getLastConsumedToken());
-	}
+    public void add(int type, CSharpParser p) {
+        add(type, p.getLastConsumedToken());
+    }
 }

+ 3 - 2
jplag.frontend.csharp-1.2/src/main/java/de/jplag/csharp/UnicodeReader.java

@@ -1,4 +1,5 @@
 /*
+ * spotless:off
  * Original pseudocode   : Thomas Weidenfeller
  * Implementation tweaked: Aki Nieminen
  *
@@ -12,6 +13,7 @@
  *
  * Win2k Notepad:
  * Unicode format = UTF-16LE
+ * spotless:on
  */
 
 package de.jplag.csharp;
@@ -26,8 +28,7 @@ import java.nio.charset.StandardCharsets;
 
 /**
  * Generic unicode text reader, which will use BOM mark to identify the encoding to be used. If BOM is not found then
- * use a given default encoding. UTF-8 is used if: BOM mark is not found and defaultEnc is NULL.
- * Usage pattern:
+ * use a given default encoding. UTF-8 is used if: BOM mark is not found and defaultEnc is NULL. Usage pattern:
  *
  * <pre>
  * String defaultEnc = "UTF-16BE"; // or NULL to use system default

+ 15 - 16
jplag.frontend.java/pom.xml

@@ -1,17 +1,16 @@
-<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>java</artifactId>
-	<dependencies>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>java</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+    </dependencies>
 </project>

+ 135 - 135
jplag.frontend.java/src/main/java/de/jplag/java/JavaToken.java

@@ -42,143 +42,143 @@ public class JavaToken extends Token implements JavaTokenConstants {
 
     public static String type2string(int type) {
         switch (type) {
-        case JavaTokenConstants.FILE_END:
-            return "********";
-        case JavaTokenConstants.SEPARATOR_TOKEN:
-            return "METHOD_SEPARATOR";
-        case J_PACKAGE:
-            return "PACKAGE ";
-        case J_IMPORT:
-            return "IMPORT  ";
-        case J_CLASS_BEGIN:
-            return "CLASS{  ";
-        case J_CLASS_END:
-            return "}CLASS  ";
-        case J_METHOD_BEGIN:
-            return "METHOD{ ";
-        case J_METHOD_END:
-            return "}METHOD ";
-        case J_VARDEF:
-            return "VARDEF  ";
-        case J_SYNC_BEGIN:
-            return "SYNC{   ";
-        case J_SYNC_END:
-            return "}SYNC   ";
-        case J_DO_BEGIN:
-            return "DO{     ";
-        case J_DO_END:
-            return "}DO     ";
-        case J_WHILE_BEGIN:
-            return "WHILE{  ";
-        case J_WHILE_END:
-            return "}WHILE  ";
-        case J_FOR_BEGIN:
-            return "FOR{    ";
-        case J_FOR_END:
-            return "}FOR    ";
-        case J_SWITCH_BEGIN:
-            return "SWITCH{ ";
-        case J_SWITCH_END:
-            return "}SWITCH ";
-        case J_CASE:
-            return "CASE    ";
-        case J_TRY_BEGIN:
-            return "TRY{    ";
-        case J_CATCH_BEGIN:
-            return "CATCH{  ";
-        case J_CATCH_END:
-            return "}CATCH  ";
-        case J_FINALLY:
-            return "FINALLY ";
-        case J_IF_BEGIN:
-            return "IF{     ";
-        case J_ELSE:
-            return "ELSE    ";
-        case J_IF_END:
-            return "}IF     ";
-        case J_COND:
-            return "COND    ";
-        case J_BREAK:
-            return "BREAK   ";
-        case J_CONTINUE:
-            return "CONTINUE";
-        case J_RETURN:
-            return "RETURN  ";
-        case J_THROW:
-            return "THROW   ";
-        case J_IN_CLASS_BEGIN:
-            return "INCLASS{";
-        case J_IN_CLASS_END:
-            return "}INCLASS";
-        case J_APPLY:
-            return "APPLY   ";
-        case J_NEWCLASS:
-            return "NEWCLASS";
-        case J_NEWARRAY:
-            return "NEWARRAY";
-        case J_ASSIGN:
-            return "ASSIGN  ";
-        case J_INTERFACE_BEGIN:
-            return "INTERF{ ";
-        case J_INTERFACE_END:
-            return "}INTERF ";
-        case J_CONSTR_BEGIN:
-            return "CONSTR{ ";
-        case J_CONSTR_END:
-            return "}CONSTR ";
-        case J_INIT_BEGIN:
-            return "INIT{   ";
-        case J_INIT_END:
-            return "}INIT   ";
-        case J_VOID:
-            return "VOID    ";
-        case J_ARRAY_INIT_BEGIN:
-            return "ARRINIT{";
-        case J_ARRAY_INIT_END:
-            return "ARRINIT}";
-        case J_ENUM_BEGIN:
-            return "ENUM{   ";
-        case J_ENUM_CLASS_BEGIN:
-            return "ENUM_CLA";
-        case J_ENUM_END:
-            return "}ENUM   ";
-        case J_GENERIC:
-            return "GENERIC ";
-        case J_ASSERT:
-            return "ASSERT  ";
-        case J_ANNO:
-            return "ANNO    ";
-        case J_ANNO_MARKER:
-            return "ANNOMARK";
-        case J_ANNO_M_BEGIN:
-            return "ANNO_M{ ";
-        case J_ANNO_M_END:
-            return "}ANNO_M ";
-        case J_ANNO_T_BEGIN:
-            return "ANNO_T{ ";
-        case J_ANNO_T_END:
-            return "}ANNO_T ";
-        case J_ANNO_C_BEGIN:
-            return "ANNO_C{ ";
-        case J_ANNO_C_END:
-            return "}ANNO_C ";
-        case J_MODULE_BEGIN:
-            return "MODULE{ ";
-        case J_MODULE_END:
-            return "}MODULE ";
-        case J_EXPORTS:
-            return "EXPORTS ";
-        case J_PROVIDES:
-            return "PROVIDES";
-        case J_REQUIRES:
-            return "REQUIRES";
+            case JavaTokenConstants.FILE_END:
+                return "********";
+            case JavaTokenConstants.SEPARATOR_TOKEN:
+                return "METHOD_SEPARATOR";
+            case J_PACKAGE:
+                return "PACKAGE ";
+            case J_IMPORT:
+                return "IMPORT  ";
+            case J_CLASS_BEGIN:
+                return "CLASS{  ";
+            case J_CLASS_END:
+                return "}CLASS  ";
+            case J_METHOD_BEGIN:
+                return "METHOD{ ";
+            case J_METHOD_END:
+                return "}METHOD ";
+            case J_VARDEF:
+                return "VARDEF  ";
+            case J_SYNC_BEGIN:
+                return "SYNC{   ";
+            case J_SYNC_END:
+                return "}SYNC   ";
+            case J_DO_BEGIN:
+                return "DO{     ";
+            case J_DO_END:
+                return "}DO     ";
+            case J_WHILE_BEGIN:
+                return "WHILE{  ";
+            case J_WHILE_END:
+                return "}WHILE  ";
+            case J_FOR_BEGIN:
+                return "FOR{    ";
+            case J_FOR_END:
+                return "}FOR    ";
+            case J_SWITCH_BEGIN:
+                return "SWITCH{ ";
+            case J_SWITCH_END:
+                return "}SWITCH ";
+            case J_CASE:
+                return "CASE    ";
+            case J_TRY_BEGIN:
+                return "TRY{    ";
+            case J_CATCH_BEGIN:
+                return "CATCH{  ";
+            case J_CATCH_END:
+                return "}CATCH  ";
+            case J_FINALLY:
+                return "FINALLY ";
+            case J_IF_BEGIN:
+                return "IF{     ";
+            case J_ELSE:
+                return "ELSE    ";
+            case J_IF_END:
+                return "}IF     ";
+            case J_COND:
+                return "COND    ";
+            case J_BREAK:
+                return "BREAK   ";
+            case J_CONTINUE:
+                return "CONTINUE";
+            case J_RETURN:
+                return "RETURN  ";
+            case J_THROW:
+                return "THROW   ";
+            case J_IN_CLASS_BEGIN:
+                return "INCLASS{";
+            case J_IN_CLASS_END:
+                return "}INCLASS";
+            case J_APPLY:
+                return "APPLY   ";
+            case J_NEWCLASS:
+                return "NEWCLASS";
+            case J_NEWARRAY:
+                return "NEWARRAY";
+            case J_ASSIGN:
+                return "ASSIGN  ";
+            case J_INTERFACE_BEGIN:
+                return "INTERF{ ";
+            case J_INTERFACE_END:
+                return "}INTERF ";
+            case J_CONSTR_BEGIN:
+                return "CONSTR{ ";
+            case J_CONSTR_END:
+                return "}CONSTR ";
+            case J_INIT_BEGIN:
+                return "INIT{   ";
+            case J_INIT_END:
+                return "}INIT   ";
+            case J_VOID:
+                return "VOID    ";
+            case J_ARRAY_INIT_BEGIN:
+                return "ARRINIT{";
+            case J_ARRAY_INIT_END:
+                return "ARRINIT}";
+            case J_ENUM_BEGIN:
+                return "ENUM{   ";
+            case J_ENUM_CLASS_BEGIN:
+                return "ENUM_CLA";
+            case J_ENUM_END:
+                return "}ENUM   ";
+            case J_GENERIC:
+                return "GENERIC ";
+            case J_ASSERT:
+                return "ASSERT  ";
+            case J_ANNO:
+                return "ANNO    ";
+            case J_ANNO_MARKER:
+                return "ANNOMARK";
+            case J_ANNO_M_BEGIN:
+                return "ANNO_M{ ";
+            case J_ANNO_M_END:
+                return "}ANNO_M ";
+            case J_ANNO_T_BEGIN:
+                return "ANNO_T{ ";
+            case J_ANNO_T_END:
+                return "}ANNO_T ";
+            case J_ANNO_C_BEGIN:
+                return "ANNO_C{ ";
+            case J_ANNO_C_END:
+                return "}ANNO_C ";
+            case J_MODULE_BEGIN:
+                return "MODULE{ ";
+            case J_MODULE_END:
+                return "}MODULE ";
+            case J_EXPORTS:
+                return "EXPORTS ";
+            case J_PROVIDES:
+                return "PROVIDES";
+            case J_REQUIRES:
+                return "REQUIRES";
 
-        case J_TRY_WITH_RESOURCE:
-            return "TRY_RES ";
+            case J_TRY_WITH_RESOURCE:
+                return "TRY_RES ";
 
-        default:
-            System.err.println("*UNKNOWN: " + type);
-            return "*UNKNOWN" + type;
+            default:
+                System.err.println("*UNKNOWN: " + type);
+                return "*UNKNOWN" + type;
         }
     }
 }

+ 35 - 36
jplag.frontend.python-3/pom.xml

@@ -1,38 +1,37 @@
-<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>python-3</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>python-3</artifactId>
 
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.antlr</groupId>
-				<artifactId>antlr4-maven-plugin</artifactId>
-				<executions>
-					<execution>
-						<goals>
-							<goal>antlr4</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+    <dependencies>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr4-runtime</artifactId>
+        </dependency>
+    </dependencies>
 
-	<dependencies>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.antlr</groupId>
-			<artifactId>antlr4-runtime</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
-</project>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr4-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>antlr4</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

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

@@ -425,7 +425,7 @@ public class JplagPython3Listener implements Python3Listener, Python3TokenConsta
 
     @Override
     public void enterTrailer(Python3Parser.TrailerContext ctx) {
-        if (ctx.getText().charAt(0)=='(') {
+        if (ctx.getText().charAt(0) == '(') {
             jplagParser.add(APPLY, ctx.getStart());
         } else {
             jplagParser.add(ARRAY, ctx.getStart());
@@ -721,43 +721,43 @@ public class JplagPython3Listener implements Python3Listener, Python3TokenConsta
     public void visitErrorNode(ErrorNode node) {
     }
 
-	@Override
-	public void enterAnnassign(Python3Parser.AnnassignContext ctx) {
-	}
+    @Override
+    public void enterAnnassign(Python3Parser.AnnassignContext ctx) {
+    }
 
-	@Override
-	public void exitAnnassign(Python3Parser.AnnassignContext ctx) {
-	}
+    @Override
+    public void exitAnnassign(Python3Parser.AnnassignContext ctx) {
+    }
 
-	@Override
-	public void enterEncoding_decl(Python3Parser.Encoding_declContext ctx) {
-	}
+    @Override
+    public void enterEncoding_decl(Python3Parser.Encoding_declContext ctx) {
+    }
 
-	@Override
-	public void exitEncoding_decl(Python3Parser.Encoding_declContext ctx) {
-	}
+    @Override
+    public void exitEncoding_decl(Python3Parser.Encoding_declContext ctx) {
+    }
 
-	@Override
-	public void enterAtom_expr(Python3Parser.Atom_exprContext ctx) {
-	}
+    @Override
+    public void enterAtom_expr(Python3Parser.Atom_exprContext ctx) {
+    }
 
-	@Override
-	public void exitAtom_expr(Python3Parser.Atom_exprContext ctx) {
-	}
+    @Override
+    public void exitAtom_expr(Python3Parser.Atom_exprContext ctx) {
+    }
 
-	@Override
-	public void enterAsync_funcdef(Python3Parser.Async_funcdefContext ctx) {
-	}
+    @Override
+    public void enterAsync_funcdef(Python3Parser.Async_funcdefContext ctx) {
+    }
 
-	@Override
-	public void exitAsync_funcdef(Python3Parser.Async_funcdefContext ctx) {
-	}
+    @Override
+    public void exitAsync_funcdef(Python3Parser.Async_funcdefContext ctx) {
+    }
 
-	@Override
-	public void enterAsync_stmt(Python3Parser.Async_stmtContext ctx) {
-	}
+    @Override
+    public void enterAsync_stmt(Python3Parser.Async_stmtContext ctx) {
+    }
 
-	@Override
-	public void exitAsync_stmt(Python3Parser.Async_stmtContext ctx) {
-	}
+    @Override
+    public void exitAsync_stmt(Python3Parser.Async_stmtContext ctx) {
+    }
 }

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

@@ -31,7 +31,7 @@ public class Parser extends AbstractParser implements Python3TokenConstants {
             if (!parseFile(dir, files[i])) {
                 errors++;
             }
-            System.gc();//Emeric
+            System.gc();// Emeric
             struct.addToken(new Python3Token(FILE_END, files[i], -1, -1, -1));
         }
         this.parseEnd();
@@ -77,6 +77,7 @@ public class Parser extends AbstractParser implements Python3TokenConstants {
     }
 
     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));
+        struct.addToken(new Python3Token(type, (currentFile == null ? "null" : currentFile), tok.getLine(),
+                struct.getToken(struct.size() - 1).getColumn() + 1, 0));
     }
 }

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

@@ -5,7 +5,7 @@ import de.jplag.Token;
 public class Python3Token extends Token implements Python3TokenConstants {
 
     private static final long serialVersionUID = 1485877548175917943L;
-    
+
     private int line, column, length;
 
     public Python3Token(int type, String file, int line, int column, int length) {

+ 40 - 41
jplag.frontend.scheme/pom.xml

@@ -1,44 +1,43 @@
-<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>scheme</artifactId>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>scheme</artifactId>
 
-	<build>
-		<plugins>
-		
-			<plugin>
-				<groupId>com.helger.maven</groupId>
-				<artifactId>ph-javacc-maven-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>javacc-gen</id>
-						<phase>generate-sources</phase>
-						<goals>
-							<goal>javacc</goal>
-						</goals>
-						<configuration>
-							<jdkVersion>1.5</jdkVersion>
-							<javadocFriendlyComments>true</javadocFriendlyComments>
-							<packageName>de.jplag.scheme</packageName>
-							<sourceDirectory>src/main/javacc</sourceDirectory>
-							<outputDirectory>${project.build.directory}/generated-sources/javacc</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+    <dependencies>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+    </dependencies>
 
-	<dependencies>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+    <build>
+        <plugins>
+
+            <plugin>
+                <groupId>com.helger.maven</groupId>
+                <artifactId>ph-javacc-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>javacc-gen</id>
+                        <goals>
+                            <goal>javacc</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <jdkVersion>1.5</jdkVersion>
+                            <javadocFriendlyComments>true</javadocFriendlyComments>
+                            <packageName>de.jplag.scheme</packageName>
+                            <sourceDirectory>src/main/javacc</sourceDirectory>
+                            <outputDirectory>${project.build.directory}/generated-sources/javacc</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

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

@@ -7,72 +7,72 @@ import de.jplag.TokenList;
 
 public class Language implements de.jplag.Language {
 
-	public Language(ErrorConsumer program) {
-		this.parser = new Parser();
-		this.parser.setProgram(program);
+    public Language(ErrorConsumer program) {
+        this.parser = new Parser();
+        this.parser.setProgram(program);
 
-	}
+    }
 
-	@Override
+    @Override
     public int errorCount() {
-		return this.parser.errorsCount();
-	}
+        return this.parser.errorsCount();
+    }
 
-	private de.jplag.scheme.Parser parser; // Not yet instantiated? See constructor!
+    private de.jplag.scheme.Parser parser; // Not yet instantiated? See constructor!
 
-	@Override
+    @Override
     public String[] suffixes() {
-		String[] res = { ".scm", ".SCM", ".ss", ".SS" };
-		return res;
-	}
+        String[] res = {".scm", ".SCM", ".ss", ".SS"};
+        return res;
+    }
 
-	@Override
+    @Override
     public String getName() {
-		return "SchemeR4RS AbstractParser [basic markup]";
-	}
+        return "SchemeR4RS AbstractParser [basic markup]";
+    }
 
-	@Override
+    @Override
     public String getShortName() {
-		return "scheme";
-	}
+        return "scheme";
+    }
 
-	@Override
+    @Override
     public int minimumTokenMatch() {
-		return 13;
-	}
+        return 13;
+    }
 
-	@Override
+    @Override
     public boolean supportsColumns() {
-		return false;
-	}
+        return false;
+    }
 
-	@Override
+    @Override
     public boolean isPreformatted() {
-		return true;
-	}
+        return true;
+    }
 
-	@Override
+    @Override
     public boolean usesIndex() {
-		return false;
-	}
+        return false;
+    }
 
-	@Override
+    @Override
     public TokenList parse(File dir, String[] files) {
-		return this.parser.parse(dir, files);
-	}
+        return this.parser.parse(dir, files);
+    }
 
-	@Override
+    @Override
     public boolean hasErrors() {
-		return this.parser.hasErrors();
-	}
+        return this.parser.hasErrors();
+    }
 
-	@Override
+    @Override
     public int numberOfTokens() {
-		return SchemeTokenConstants.NUM_DIFF_TOKENS;
-	}
+        return SchemeTokenConstants.NUM_DIFF_TOKENS;
+    }
 
-	@Override
+    @Override
     public String type2string(int type) {
-		return SchemeToken.type2string(type);
-	}
+        return SchemeToken.type2string(type);
+    }
 }

+ 23 - 24
jplag.frontend.scheme/src/main/java/de/jplag/scheme/Parser.java

@@ -6,32 +6,31 @@ import de.jplag.AbstractParser;
 import de.jplag.TokenList;
 
 public class Parser extends AbstractParser implements SchemeTokenConstants {
-	private String actFile;
+    private String actFile;
 
-	private TokenList struct;
+    private TokenList struct;
 
-	public TokenList parse(File dir, String files[]) {
-		struct = new TokenList();
-		errors = 0;
-		SchemeParser parser = null;// no worry it will be reinitialized
-		// in method parseFile(...)
-		for (int i = 0; i < files.length; i++) {
-			actFile = files[i];
-		    getErrorConsumer().print(null, "Parsing file " + files[i]);
-			if (!SchemeParser.parseFile(dir, files[i], parser, this))
-				errors++;
-			struct.addToken(new SchemeToken(FILE_END, actFile, 1));
-		}
-		this.parseEnd();
-		return struct;
-	}
+    public TokenList parse(File dir, String files[]) {
+        struct = new TokenList();
+        errors = 0;
+        SchemeParser parser = null;// no worry it will be reinitialized
+        // in method parseFile(...)
+        for (int i = 0; i < files.length; i++) {
+            actFile = files[i];
+            getErrorConsumer().print(null, "Parsing file " + files[i]);
+            if (!SchemeParser.parseFile(dir, files[i], parser, this))
+                errors++;
+            struct.addToken(new SchemeToken(FILE_END, actFile, 1));
+        }
+        this.parseEnd();
+        return struct;
+    }
 
-	public void add(int type, Token token) {
-		struct.addToken(new SchemeToken(type, actFile, token.beginLine));
-		/*
-		 * System.out.println(token.beginLine+"\t"+ (new
-		 * SchemeToken(0,null,0)).type2string(type)+"\t"+ token.image);
-		 */
-	}
+    public void add(int type, Token token) {
+        struct.addToken(new SchemeToken(type, actFile, token.beginLine));
+        /*
+         * System.out.println(token.beginLine+"\t"+ (new SchemeToken(0,null,0)).type2string(type)+"\t"+ token.image);
+         */
+    }
 
 }

+ 113 - 61
jplag.frontend.scheme/src/main/java/de/jplag/scheme/SchemeToken.java

@@ -3,70 +3,122 @@ package de.jplag.scheme;
 import de.jplag.Token;
 
 public class SchemeToken extends Token implements SchemeTokenConstants {
-	private static final long serialVersionUID = -143418583849687339L;
-	private int line;
+    private static final long serialVersionUID = -143418583849687339L;
+    private int line;
 
-  public SchemeToken(int type, String file, int line) {
-    super(type, file, line);
-  }
+    public SchemeToken(int type, String file, int line) {
+        super(type, file, line);
+    }
+
+    @Override
+    public int getLine() {
+        return line;
+    }
+
+    @Override
+    public void setLine(int line) {
+        this.line = line;
+    }
+
+    @Override
+    public int getColumn() {
+        return 0;
+    }
 
-  @Override
-public int getLine() { return line; }
-  @Override
-public void setLine(int line) { this.line = line; }
+    @Override
+    public int getLength() {
+        return 0;
+    }
 
-  @Override
-public int getColumn() {return 0;}
-  @Override
-public int getLength() {return 0;}
+    public static String type2string(int type) {
+        switch (type) {
+            case SchemeTokenConstants.FILE_END:
+                return "********";
+            case S_BOOL:
+                return "BOOL    ";
+            case S_NUMBER:
+                return "NUMBER  ";
+            case S_CHAR:
+                return "CHAR    ";
+            case S_STRING:
+                return "STRING  ";
+            case S_ID:
+                return "ID      ";
+            case S_LIST_BEGIN:
+                return "(LIST   ";
+            case S_LIST_END:
+                return "LIST)   ";
+            case S_VECTOR_BEGIN:
+                return "(VECTOR ";
+            case S_VECTOR_END:
+                return "VECTOR) ";
+            case S_LITERAL:
+                return "LITERAL ";
+            case S_QUOT_BEGIN:
+                return "(QUOT   ";
+            case S_QUOT_END:
+                return "QUOT)   ";
+            case S_CALL:
+                return "CALL    ";
+            case S_LAMBDA_BEGIN:
+                return "(LAMBDA ";
+            case S_LAMBDA_END:
+                return "LAMBDA) ";
+            case S_FORMAL_BEGIN:
+                return "(FORMAL ";
+            case S_FORMAL_END:
+                return "FORMAL) ";
+            case S_BODY_BEGIN:
+                return "(BODY   ";
+            case S_BODY_END:
+                return "BODY)   ";
+            case S_IF_BEGIN:
+                return "(IF     ";
+            case S_IF_END:
+                return "IF)     ";
+            case S_ALTERN:
+                return "ALTERN  ";
+            case S_ASSIGN_BEGIN:
+                return "(ASSIGN ";
+            case S_ASSIGN_END:
+                return "ASSIGN) ";
+            case S_COND_BEGIN:
+                return "(COND   ";
+            case S_COND_END:
+                return "COND)   ";
+            case S_ELSE:
+                return "ELSE    ";
+            case S_CASE_BEGIN:
+                return "(CASE   ";
+            case S_CASE_END:
+                return "CASE)   ";
+            case S_DO_BEGIN:
+                return "(DO     ";
+            case S_DO_END:
+                return "DO)     ";
+            case S_COMMAND:
+                return "COMMAND ";
+            case S_DEF_BEGIN:
+                return "(DEF    ";
+            case S_DEF_END:
+                return "DEF)    ";
+            case S_BEGIN:
+                return "(       ";
+            case S_END:
+                return ")       ";
+            case S_AND:
+                return "AND     ";
+            case S_OR:
+                return "OR      ";
+            case S_LET:
+                return "LET     ";
+            case S_DELAY:
+                return "DELAY   ";
+            case S_VAR:
+                return "VAR     ";
 
-  public static String type2string(int type) {
-    switch (type) {
-    case SchemeTokenConstants.FILE_END:
-                             return "********";
-    case S_BOOL:             return "BOOL    ";
-    case S_NUMBER:           return "NUMBER  ";
-    case S_CHAR:             return "CHAR    ";
-    case S_STRING:           return "STRING  ";
-    case S_ID:               return "ID      ";
-    case S_LIST_BEGIN:       return "(LIST   ";
-    case S_LIST_END:         return "LIST)   ";
-    case S_VECTOR_BEGIN:     return "(VECTOR ";
-    case S_VECTOR_END:       return "VECTOR) ";
-    case S_LITERAL:          return "LITERAL ";
-    case S_QUOT_BEGIN:       return "(QUOT   ";
-    case S_QUOT_END:         return "QUOT)   ";
-    case S_CALL:             return "CALL    ";
-    case S_LAMBDA_BEGIN:     return "(LAMBDA ";
-    case S_LAMBDA_END:       return "LAMBDA) ";
-    case S_FORMAL_BEGIN:     return "(FORMAL ";
-    case S_FORMAL_END:       return "FORMAL) ";
-    case S_BODY_BEGIN:       return "(BODY   ";
-    case S_BODY_END:         return "BODY)   ";
-    case S_IF_BEGIN:         return "(IF     ";
-    case S_IF_END:           return "IF)     ";
-    case S_ALTERN:           return "ALTERN  ";
-    case S_ASSIGN_BEGIN:     return "(ASSIGN ";
-    case S_ASSIGN_END:       return "ASSIGN) ";
-    case S_COND_BEGIN:       return "(COND   ";
-    case S_COND_END:         return "COND)   ";
-    case S_ELSE:             return "ELSE    ";
-    case S_CASE_BEGIN:       return "(CASE   ";
-    case S_CASE_END:         return "CASE)   ";
-    case S_DO_BEGIN:         return "(DO     ";
-    case S_DO_END:           return "DO)     ";
-    case S_COMMAND:          return "COMMAND ";
-    case S_DEF_BEGIN:        return "(DEF    ";
-    case S_DEF_END:          return "DEF)    ";
-    case S_BEGIN:            return "(       ";
-    case S_END:              return ")       ";
-    case S_AND:              return "AND     ";
-    case S_OR:               return "OR      ";
-    case S_LET:              return "LET     ";
-    case S_DELAY:            return "DELAY   ";
-    case S_VAR:              return "VAR     ";
-      
-    default:                 return "<?????> ";
+            default:
+                return "<?????> ";
+        }
     }
-  }
 }

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

@@ -3,53 +3,53 @@ package de.jplag.scheme;
 import de.jplag.TokenConstants;
 
 public interface SchemeTokenConstants extends TokenConstants {
-  final static int FILE_END = 0;
+    final static int FILE_END = 0;
 
-  // Used to optionally separate methods from each other
-  // with an always marked token
-  final static int SEPARATOR_TOKEN = 1;
-  
-  final static int S_BOOL = 2;
-  final static int S_NUMBER = 3;
-  final static int S_CHAR = 4;
-  final static int S_STRING = 5;
-  final static int S_ID = 6;
-  final static int S_LIST_BEGIN = 7;
-  final static int S_LIST_END = 8;
-  final static int S_VECTOR_BEGIN = 9;
-  final static int S_VECTOR_END = 10;
-  final static int S_LITERAL = 11;
-  final static int S_QUOT_BEGIN = 12;
-  final static int S_QUOT_END = 13;
-  final static int S_CALL = 14;
-  final static int S_LAMBDA_BEGIN = 15;
-  final static int S_LAMBDA_END = 16;
-  final static int S_FORMAL_BEGIN = 17;
-  final static int S_FORMAL_END = 18;
-  final static int S_BODY_BEGIN = 19;
-  final static int S_BODY_END = 20;
-  final static int S_IF_BEGIN = 21;
-  final static int S_IF_END = 22;
-  final static int S_ALTERN = 23;
-  final static int S_ASSIGN_BEGIN = 24;
-  final static int S_ASSIGN_END = 25;
-  final static int S_COND_BEGIN = 26;
-  final static int S_COND_END = 27;
-  final static int S_ELSE = 28;
-  final static int S_CASE_BEGIN = 29;
-  final static int S_CASE_END = 30;
-  final static int S_DO_BEGIN = 31;
-  final static int S_DO_END = 32;
-  final static int S_COMMAND = 33;
-  final static int S_DEF_BEGIN = 34;
-  final static int S_DEF_END = 35;
-  final static int S_BEGIN = 36;
-  final static int S_END = 37;
-  final static int S_AND = 38;
-  final static int S_OR = 39;
-  final static int S_LET = 40;
-  final static int S_DELAY = 41;
-  final static int S_VAR = 42;
+    // Used to optionally separate methods from each other
+    // with an always marked token
+    final static int SEPARATOR_TOKEN = 1;
 
-  final static int NUM_DIFF_TOKENS = 43;
+    final static int S_BOOL = 2;
+    final static int S_NUMBER = 3;
+    final static int S_CHAR = 4;
+    final static int S_STRING = 5;
+    final static int S_ID = 6;
+    final static int S_LIST_BEGIN = 7;
+    final static int S_LIST_END = 8;
+    final static int S_VECTOR_BEGIN = 9;
+    final static int S_VECTOR_END = 10;
+    final static int S_LITERAL = 11;
+    final static int S_QUOT_BEGIN = 12;
+    final static int S_QUOT_END = 13;
+    final static int S_CALL = 14;
+    final static int S_LAMBDA_BEGIN = 15;
+    final static int S_LAMBDA_END = 16;
+    final static int S_FORMAL_BEGIN = 17;
+    final static int S_FORMAL_END = 18;
+    final static int S_BODY_BEGIN = 19;
+    final static int S_BODY_END = 20;
+    final static int S_IF_BEGIN = 21;
+    final static int S_IF_END = 22;
+    final static int S_ALTERN = 23;
+    final static int S_ASSIGN_BEGIN = 24;
+    final static int S_ASSIGN_END = 25;
+    final static int S_COND_BEGIN = 26;
+    final static int S_COND_END = 27;
+    final static int S_ELSE = 28;
+    final static int S_CASE_BEGIN = 29;
+    final static int S_CASE_END = 30;
+    final static int S_DO_BEGIN = 31;
+    final static int S_DO_END = 32;
+    final static int S_COMMAND = 33;
+    final static int S_DEF_BEGIN = 34;
+    final static int S_DEF_END = 35;
+    final static int S_BEGIN = 36;
+    final static int S_END = 37;
+    final static int S_AND = 38;
+    final static int S_OR = 39;
+    final static int S_LET = 40;
+    final static int S_DELAY = 41;
+    final static int S_VAR = 42;
+
+    final static int NUM_DIFF_TOKENS = 43;
 }

+ 40 - 41
jplag.frontend.text/pom.xml

@@ -1,43 +1,42 @@
-<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>text</artifactId>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.codehaus.mojo</groupId>
-				<artifactId>antlr-maven-plugin</artifactId>
-				<configuration>
-					<!-- Comma separated list of grammar files or pattern grammar files 
-						By default, grammar file(s) is in ${basedir}/src/main/antlr -->
-					<!-- <grammars>*.g</grammars> -->
-					<grammars>text.g</grammars>
-				</configuration>
-				<executions>
-					<execution>
-						<goals>
-							<goal>generate</goal>
-						</goals>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>text</artifactId>
 
-	<dependencies>
-		<dependency>
-			<groupId>antlr</groupId>
-			<artifactId>antlr</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-	</dependencies>
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+    <dependencies>
+        <dependency>
+            <groupId>antlr</groupId>
+            <artifactId>antlr</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>antlr-maven-plugin</artifactId>
+                <configuration>
+                    <!-- Comma separated list of grammar files or pattern grammar files 
+						By default, grammar file(s) is in ${basedir}/src/main/antlr -->
+                    <!-- <grammars>*.g</grammars> -->
+                    <grammars>text.g</grammars>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 1 - 0
jplag.frontend.text/src/main/java/de/jplag/text/Parser.java

@@ -5,6 +5,7 @@ import java.io.FileInputStream;
 import java.util.Hashtable;
 
 import antlr.Token;
+
 import de.jplag.AbstractParser;
 import de.jplag.TokenConstants;
 import de.jplag.TokenList;

+ 94 - 95
jplag/pom.xml

@@ -1,104 +1,103 @@
-<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">
+<?xml version="1.0" encoding="UTF-8"?>
+<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>jplag</artifactId>
+    <modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>de.jplag</groupId>
-		<artifactId>aggregator</artifactId>
-		<version>3.1.0-SNAPSHOT</version>
-	</parent>
+    <parent>
+        <groupId>de.jplag</groupId>
+        <artifactId>aggregator</artifactId>
+        <version>3.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>jplag</artifactId>
 
-	<build>
-		<resources>
-			<resource>
-				<directory>src/main/resources</directory>
-				<filtering>true</filtering>
-			</resource>
+    <dependencies>
+        <dependency>
+            <groupId>net.sourceforge.argparse4j</groupId>
+            <artifactId>argparse4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.github.stefanbirkner</groupId>
+            <artifactId>system-rules</artifactId>
+            <scope>test</scope>
+        </dependency>
 
-			<resource>
-				<directory>src/main/resources</directory>
-				<filtering>false</filtering>
-				<excludes>
-					<exclude>de/jplag/version.properties</exclude>
-				</excludes>
-			</resource>
-		</resources>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>frontend-utils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>text</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>python-3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>csharp-1.2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>cpp</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>scheme</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.jplag</groupId>
+            <artifactId>chars</artifactId>
+        </dependency>
+    </dependencies>
 
-		<plugins>
-			<plugin>
-				<artifactId>maven-jar-plugin</artifactId>
-				<configuration>
-					<archive>
-						<manifest>
-							<mainClass>de.jplag.CLI</mainClass>
-							<packageName>jplag</packageName>
-						</manifest>
-					</archive>
-				</configuration>
-			</plugin>
+    <build>
+        <resources>
+            <resource>
+                <filtering>true</filtering>
+                <directory>src/main/resources</directory>
+            </resource>
 
-			<plugin>
-				<artifactId>maven-assembly-plugin</artifactId>
-				<configuration>
-					<descriptorRefs>
-						<descriptorRef>jar-with-dependencies</descriptorRef>
-					</descriptorRefs>
-					<archive>
-						<manifest>
-							<mainClass>de.jplag.CLI</mainClass>
-							<packageName>jplag</packageName>
-						</manifest>
-					</archive>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/resources</directory>
+                <excludes>
+                    <exclude>de/jplag/version.properties</exclude>
+                </excludes>
+            </resource>
+        </resources>
 
-	<dependencies>
-		<dependency>
-			<groupId>net.sourceforge.argparse4j</groupId>
-			<artifactId>argparse4j</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.github.stefanbirkner</groupId>
-			<artifactId>system-rules</artifactId>
-			<scope>test</scope>
-		</dependency>
+        <plugins>
+            <plugin>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>de.jplag.CLI</mainClass>
+                            <packageName>jplag</packageName>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
 
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>frontend-utils</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>text</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>java</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>python-3</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>csharp-1.2</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>cpp</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>scheme</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>de.jplag</groupId>
-			<artifactId>chars</artifactId>
-		</dependency>
-	</dependencies>
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                    <archive>
+                        <manifest>
+                            <mainClass>de.jplag.CLI</mainClass>
+                            <packageName>jplag</packageName>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 6 - 5
jplag/src/main/java/de/jplag/CLI.java

@@ -8,8 +8,8 @@ import static de.jplag.CommandLineArgument.LANGUAGE;
 import static de.jplag.CommandLineArgument.MIN_TOKEN_MATCH;
 import static de.jplag.CommandLineArgument.RESULT_FOLDER;
 import static de.jplag.CommandLineArgument.ROOT_DIRECTORY;
-import static de.jplag.CommandLineArgument.SIMILARITY_THRESHOLD;
 import static de.jplag.CommandLineArgument.SHOWN_COMPARISONS;
+import static de.jplag.CommandLineArgument.SIMILARITY_THRESHOLD;
 import static de.jplag.CommandLineArgument.SUBDIRECTORY;
 import static de.jplag.CommandLineArgument.SUFFIXES;
 import static de.jplag.CommandLineArgument.VERBOSITY;
@@ -17,16 +17,17 @@ import static de.jplag.CommandLineArgument.VERBOSITY;
 import java.io.File;
 import java.util.Random;
 
+import net.sourceforge.argparse4j.ArgumentParsers;
+import net.sourceforge.argparse4j.inf.ArgumentParser;
+import net.sourceforge.argparse4j.inf.ArgumentParserException;
+import net.sourceforge.argparse4j.inf.Namespace;
+
 import de.jplag.exceptions.ExitException;
 import de.jplag.options.JPlagOptions;
 import de.jplag.options.LanguageOption;
 import de.jplag.options.Verbosity;
 import de.jplag.reporting.Report;
 import de.jplag.strategy.ComparisonMode;
-import net.sourceforge.argparse4j.ArgumentParsers;
-import net.sourceforge.argparse4j.inf.ArgumentParser;
-import net.sourceforge.argparse4j.inf.ArgumentParserException;
-import net.sourceforge.argparse4j.inf.Namespace;
 
 /**
  * Command line interface class, allows using via command line.

+ 5 - 4
jplag/src/main/java/de/jplag/CommandLineArgument.java

@@ -9,12 +9,13 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 
-import de.jplag.options.LanguageOption;
-import de.jplag.strategy.ComparisonMode;
 import net.sourceforge.argparse4j.inf.Argument;
 import net.sourceforge.argparse4j.inf.ArgumentParser;
 import net.sourceforge.argparse4j.inf.Namespace;
 
+import de.jplag.options.LanguageOption;
+import de.jplag.strategy.ComparisonMode;
+
 /**
  * Command line arguments for the JPlag CLI. Each argument is defined through an enumeral.
  * @author Timur Saglam
@@ -100,8 +101,8 @@ public enum CommandLineArgument {
     }
 
     /**
-     * Dynamically loads the description from the message file. For an option named <code>NEW_OPTION</code> the messages key should
-     * be <code>CommandLineArgument.NewOption</code>.
+     * Dynamically loads the description from the message file. For an option named <code>NEW_OPTION</code> the messages key
+     * should be <code>CommandLineArgument.NewOption</code>.
      */
     private String retrieveDescriptionFromMessages() {
         StringBuilder builder = new StringBuilder();

+ 2 - 1
jplag/src/main/java/de/jplag/GreedyStringTiling.java

@@ -175,7 +175,8 @@ public class GreedyStringTiling implements TokenConstants {
                         j++;
                     }
 
-                    if (j > maxMatch && !isBaseCodeComparison || j != maxMatch && isBaseCodeComparison) {  // new biggest match? -> delete current smaller
+                    if (j > maxMatch && !isBaseCodeComparison || j != maxMatch && isBaseCodeComparison) {  // new biggest match? -> delete current
+                                                                                                           // smaller
                         matches.clear();
                         maxMatch = j;
                     }

+ 3 - 5
jplag/src/main/java/de/jplag/JPlagComparison.java

@@ -78,7 +78,7 @@ public class JPlagComparison implements Comparator<JPlagComparison> { // FIXME T
          * Collect the file names of the first token of each match.
          */
         Set<String> collectedFiles = new LinkedHashSet<>();
-        for (Match match: matches) {
+        for (Match match : matches) {
             collectedFiles.add(tokenList.getToken(match.getStart(j == 0)).file);
         }
 
@@ -140,8 +140,7 @@ public class JPlagComparison implements Comparator<JPlagComparison> { // FIXME T
     }
 
     /**
-     * @param getFirst Whether to return the first submission,
-     *      else return the second submission.
+     * @param getFirst Whether to return the first submission, else return the second submission.
      * @return The requested submission.
      */
     public Submission getSubmission(boolean getFirst) {
@@ -149,8 +148,7 @@ public class JPlagComparison implements Comparator<JPlagComparison> { // FIXME T
     }
 
     /**
-     * @param getFirst Whether to return the first basecode matches,
-     *      else return the second basecode matches.
+     * @param getFirst Whether to return the first basecode matches, else return the second basecode matches.
      * @return The requested basecode matches.
      */
     public JPlagComparison getBaseCodeMatches(boolean getFirst) {

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

@@ -36,8 +36,8 @@ public class Match {
     }
 
     /**
-     * @param getFirst Whether to return the starting token index of the first submission,
-     *      else the starting token index of the second submission is returned.
+     * @param getFirst Whether to return the starting token index of the first submission, else the starting token index of
+     * the second submission is returned.
      * @return Start index of the requested submission.
      */
     public int getStart(boolean getFirst) {

+ 0 - 1
jplag/src/main/java/de/jplag/SubmissionSet.java

@@ -58,7 +58,6 @@ public class SubmissionSet {
     /**
      * Retrieve the base code of this collection.<br>
      * <b>Asking for a non-existing basecode crashes the errorConsumer.</b>
-     *
      * @return The base code submission.
      * @see #hasBaseCode
      */

+ 2 - 1
jplag/src/main/java/de/jplag/SubmissionSetBuilder.java

@@ -154,7 +154,8 @@ public class SubmissionSetBuilder {
         }
 
         // If it is not a name of a single sub-directory, bail out.
-        if (name.isEmpty() || name.contains(File.separator)) return null;
+        if (name.isEmpty() || name.contains(File.separator))
+            return null;
 
         if (name.contains(".")) {
             throw new BasecodeException("The basecode directory name \"" + name + "\" cannot contain dots!");

+ 8 - 7
jplag/src/main/java/de/jplag/options/JPlagOptions.java

@@ -85,14 +85,15 @@ public class JPlagOptions {
     /**
      * Path name of the directory containing the base code.
      * <p>
-     * For backwards compatibility it may also be a directory name inside the root directory.
-     * Condition for the latter is
-     * <ul><li>Specified path does not exist.</li>
-     *     <li>Name has not have a separator character after trimming them from both ends (leaving at least a one-character name).</li>
-     *     <li>A submission with the specified name exists in the root directory.</li>
+     * For backwards compatibility it may also be a directory name inside the root directory. Condition for the latter is
+     * <ul>
+     * <li>Specified path does not exist.</li>
+     * <li>Name has not have a separator character after trimming them from both ends (leaving at least a one-character
+     * name).</li>
+     * <li>A submission with the specified name exists in the root directory.</li>
      * </ul>
-     * It's an error if a string has been provided but it is neither an existing path nor does it fulfill all the
-     * conditions of the compatibility fallback listed above.
+     * It's an error if a string has been provided but it is neither an existing path nor does it fulfill all the conditions
+     * of the compatibility fallback listed above.
      * </p>
      */
     private Optional<String> baseCodeSubmissionName = Optional.empty();

+ 6 - 6
jplag/src/main/java/de/jplag/options/Verbosity.java

@@ -6,12 +6,12 @@ public enum Verbosity {
 
     public static Verbosity fromOption(String optionValue) {
         switch (optionValue) {
-        case "quiet":
-            return QUIET;
-        case "long":
-            return LONG;
-        default:
-            return QUIET;
+            case "quiet":
+                return QUIET;
+            case "long":
+                return LONG;
+            default:
+                return QUIET;
         }
     }
 }

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

@@ -436,8 +436,8 @@ public class Report { // Mostly legacy code with some minor improvements.
         htmlFile.println("<TR VALIGN=middle ALIGN=center BGCOLOR=#ffffff><TD>" + "<IMG SRC=\"logo.png\" ALT=\"JPlag\" BORDER=0></TD>");
         htmlFile.println("<TD><H1><BIG>" + title + "</BIG></H1></TD></TR>");
 
-        htmlFile.println("<TR BGCOLOR=#aaaaff VALIGN=top><TD>" + msg.getString("Report.Language") + ":</TD><TD>"
-                + options.getLanguageOption().name() + "</TD></TR>");
+        htmlFile.println("<TR BGCOLOR=#aaaaff VALIGN=top><TD>" + msg.getString("Report.Language") + ":</TD><TD>" + options.getLanguageOption().name()
+                + "</TD></TR>");
         htmlFile.print("<TR BGCOLOR=#aaaaff VALIGN=top><TD>" + msg.getString("Report.Submissions") + ":</TD><TD>" + result.getNumberOfSubmissions());
 
         htmlFile.println("</TD></TR>");

+ 2 - 2
jplag/src/main/java/de/jplag/reporting/TagParser.java

@@ -5,8 +5,8 @@ public class TagParser {
     /**
      * Replaces all "{&lt;index&gt;_description}" tags inside the message string with params[&lt;index&gt;-1].
      * <p>
-     * Example: parse("blb {1_n/a} d {3_desc} sf {2_bla} d", new String[] {"#", blabla(), null}); returns "blb # d null
-     * sf blab d", if blabla() returns "blab"
+     * Example: parse("blb {1_n/a} d {3_desc} sf {2_bla} d", new String[] {"#", blabla(), null}); returns "blb # d null sf
+     * blab d", if blabla() returns "blab"
      */
     public static String parse(String message, String[] params) {
         String[] tokens = message.split("[{}]", -1);

+ 3 - 1
jplag/src/main/java/de/jplag/strategy/AbstractComparisonStrategy.java

@@ -21,7 +21,9 @@ public abstract class AbstractComparisonStrategy implements ComparisonStrategy {
 
     /**
      * Compare all submissions to the basecode.
-     * <p>Caller must ensure that the provided set does have a basecode submission before calling.</p>
+     * <p>
+     * Caller must ensure that the provided set does have a basecode submission before calling.
+     * </p>
      * @param submissionSet Submissions and basecode to compare.
      */
     protected void compareSubmissionsToBaseCode(SubmissionSet submissionSet) {

+ 2 - 1
jplag/src/test/java/de/jplag/JPlagComparisonTest.java

@@ -11,7 +11,8 @@ import de.jplag.exceptions.ExitException;
 
 public class JPlagComparisonTest extends TestBase {
 
-    private static final String[] FILES = {"GSTiling.java", "Match.java", "Matches.java", "Structure.java", "Submission.java", "Table.java", "Token.java"};
+    private static final String[] FILES = {"GSTiling.java", "Match.java", "Matches.java", "Structure.java", "Submission.java", "Table.java",
+            "Token.java"};
     private static final String[] FILES_2 = {"Match.java", "Matches.java", "Structure.java", "Submission.java", "Table.java", "Token.java"};
     private static final String[] FILES_3 = {"Table.java", "Token.java"};
 

+ 2 - 2
jplag/src/test/java/de/jplag/NewJavaFeaturesTest.java

@@ -13,13 +13,13 @@ public class NewJavaFeaturesTest extends TestBase {
     @Test
     public void testJavaFeatureDuplicates() throws ExitException {
         JPlagResult result = runJPlagWithExclusionFile(ROOT_DIRECTORY, EXCLUSION_FILE_NAME);
-        
+
         // Two submissions, one comparison with 100% match:
         assertEquals(2, result.getNumberOfSubmissions());
         assertEquals(1, result.getComparisons().size());
         var comparison = result.getComparisons().get(0);
         assertEquals(100, comparison.similarity(), Double.MIN_NORMAL);
-        
+
         // Five matches that each start at the same position:
         assertEquals(4, comparison.getMatches().size());
         for (Match match : comparison.getMatches()) {

+ 10 - 23
jplag/src/test/java/de/jplag/NormalComparisonTest.java

@@ -40,12 +40,9 @@ public class NormalComparisonTest extends TestBase {
     }
 
     /**
-     * This case is more complex and consists out of 5 submissions with different plagiarism.
-     * A is the original code (coming from an older JPlag version)
-     * B is a partial copy of that code
-     * C is a full copy of that code
-     * D is dumb plagiarism, e.g., changed variable names, additional unneeded code, ...
-     * E is just a Hello World Java errorConsumer
+     * This case is more complex and consists out of 5 submissions with different plagiarism. A is the original code (coming
+     * from an older JPlag version) B is a partial copy of that code C is a full copy of that code D is dumb plagiarism,
+     * e.g., changed variable names, additional unneeded code, ... E is just a Hello World Java errorConsumer
      */
     @Test
     public void testPartialPlagiarism() throws ExitException {
@@ -55,14 +52,9 @@ public class NormalComparisonTest extends TestBase {
         assertEquals(10, result.getComparisons().size());
 
         // All comparisons with E shall have no matches
-        result.getComparisons()
-                .stream()
-                .filter(comparison ->
-                        comparison.getSecondSubmission().getName().equals("E") ||
-                                comparison.getFirstSubmission().getName().equals("E"))
-                .forEach(comparison ->
-                        assertEquals(0f, comparison.similarity(), DELTA)
-                );
+        result.getComparisons().stream()
+                .filter(comparison -> comparison.getSecondSubmission().getName().equals("E") || comparison.getFirstSubmission().getName().equals("E"))
+                .forEach(comparison -> assertEquals(0f, comparison.similarity(), DELTA));
 
         // Hard coded assertions on selected comparisons
         assertEquals(24.6f, getSelectedPercent(result, "A", "B"), 0.1f);
@@ -82,18 +74,13 @@ public class NormalComparisonTest extends TestBase {
 
     // TODO SH: Methods like this should be moved to the API and also should accept wildcards
     private float getSelectedPercent(JPlagResult result, String nameA, String nameB) {
-        return getSelectedComparison(result, nameA, nameB)
-                .map(JPlagComparison::similarity)
-                .orElse(-1f);
+        return getSelectedComparison(result, nameA, nameB).map(JPlagComparison::similarity).orElse(-1f);
     }
 
     private Optional<JPlagComparison> getSelectedComparison(JPlagResult result, String nameA, String nameB) {
-        return result.getComparisons().stream()
-                .filter(comparison ->
-                        comparison.getFirstSubmission().getName().equals(nameA) &&
-                                comparison.getSecondSubmission().getName().equals(nameB) ||
-                                comparison.getFirstSubmission().getName().equals(nameB) &&
-                                        comparison.getSecondSubmission().getName().equals(nameA))
+        return result.getComparisons().stream().filter(
+                comparison -> comparison.getFirstSubmission().getName().equals(nameA) && comparison.getSecondSubmission().getName().equals(nameB)
+                        || comparison.getFirstSubmission().getName().equals(nameB) && comparison.getSecondSubmission().getName().equals(nameA))
                 .findFirst();
     }
 }

+ 4 - 3
jplag/src/test/java/de/jplag/ParallelComparisonTest.java

@@ -11,7 +11,8 @@ import de.jplag.exceptions.ExitException;
 import de.jplag.strategy.ParallelComparisonStrategy;
 
 /**
- * Currently just a copy of {@link NormalComparisonTest} but for the {@link ParallelComparisonStrategy}. // TODO TS: de-duplicate this
+ * Currently just a copy of {@link NormalComparisonTest} but for the {@link ParallelComparisonStrategy}. // TODO TS:
+ * de-duplicate this
  * @author Timur Saglam
  */
 public class ParallelComparisonTest extends TestBase {
@@ -84,8 +85,8 @@ public class ParallelComparisonTest extends TestBase {
     }
 
     private Optional<JPlagComparison> getSelectedComparison(JPlagResult result, String nameA, String nameB) {
-        return result.getComparisons().stream()
-                .filter(comparison -> comparison.getFirstSubmission().getName().equals(nameA) && comparison.getSecondSubmission().getName().equals(nameB)
+        return result.getComparisons().stream().filter(
+                comparison -> comparison.getFirstSubmission().getName().equals(nameA) && comparison.getSecondSubmission().getName().equals(nameB)
                         || comparison.getFirstSubmission().getName().equals(nameB) && comparison.getSecondSubmission().getName().equals(nameA))
                 .findFirst();
     }

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

@@ -20,7 +20,7 @@ public abstract class TestBase {
 
     protected String getBasePath(String... subs) {
         String path = BASE_PATH;
-        for (String sub: subs) {
+        for (String sub : subs) {
             path += File.separator + sub;
         }
         return path;

+ 5 - 6
jplag/src/test/java/de/jplag/VolumeTest.java

@@ -17,8 +17,8 @@ import de.jplag.exceptions.ExitException;
 import de.jplag.options.JPlagOptions;
 
 /**
- * These tests are not intended to be used automatically but rather manually prior to releases.
- * These tests shall be used with large data sets (e.g., 100+ submissions) in order to validate the core functionality.
+ * These tests are not intended to be used automatically but rather manually prior to releases. These tests shall be
+ * used with large data sets (e.g., 100+ submissions) in order to validate the core functionality.
  */
 public class VolumeTest extends TestBase {
 
@@ -40,12 +40,11 @@ public class VolumeTest extends TestBase {
     public void volumeComparisonTest() throws ExitException, IOException {
 
         // Always succeed if not executed in an appropriate environment
-        if(!new File(this.getBasePath()).exists()) {
+        if (!new File(this.getBasePath()).exists()) {
             return;
         }
 
-        var results = runJPlag("data",
-                jPlagOptions -> jPlagOptions.setMaximumNumberOfComparisons(-1));
+        var results = runJPlag("data", jPlagOptions -> jPlagOptions.setMaximumNumberOfComparisons(-1));
 
         var csv = readCSVResults(String.format("%s/%s", this.getBasePath(), "matches_avg.csv"));
 
@@ -68,7 +67,7 @@ public class VolumeTest extends TestBase {
         lines.forEach(line -> {
             var entries = line.split(";");
 
-            if(entries.length != 4) {
+            if (entries.length != 4) {
                 throw new IllegalArgumentException(String.format("Illegal line: '%s'", line));
             }
 

+ 2 - 1
jplag/src/test/java/de/jplag/cli/CommandLineInterfaceTest.java

@@ -5,10 +5,11 @@ import static java.util.stream.Collectors.toSet;
 
 import java.util.Arrays;
 
+import net.sourceforge.argparse4j.inf.Namespace;
+
 import de.jplag.CLI;
 import de.jplag.CommandLineArgument;
 import de.jplag.options.JPlagOptions;
-import net.sourceforge.argparse4j.inf.Namespace;
 
 /**
  * Test base for tests regarding the {@link CLI} and any {@link CommandLineArgument}. Solely tests if the arguments set

+ 355 - 356
pom.xml

@@ -1,368 +1,367 @@
-<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>
-  <groupId>de.jplag</groupId>
-  <artifactId>aggregator</artifactId>
-  <version>3.1.0-SNAPSHOT</version>
-  <packaging>pom</packaging>
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+    <groupId>de.jplag</groupId>
+    <artifactId>aggregator</artifactId>
+    <version>3.1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
 
-  <name>JPlag Plagiarism Detector</name>
-  <description>JPlag is a system that finds similarities among multiple sets of source code files. This way it can detect software plagiarism and collusion in software development.</description>
-  <url>http://jplag.de</url>
-  <licenses>
-    <license>
-      <name>GNU General Public License v3.0</name>
-      <url>https://www.gnu.org/licenses/gpl-3.0.txt</url>
-    </license>
-  </licenses>
-  <scm>
-    <connection>scm:git:git://github.com/jplag/JPlag.git</connection>
-    <developerConnection>scm:git:ssh://github.com:jplag/JPlag.git</developerConnection>
-    <url>http://github.com/jplag/JPlag/tree/master</url>
-  </scm>
+    <name>JPlag Plagiarism Detector</name>
+    <description>JPlag is a system that finds similarities among multiple sets of source code files. This way it can detect software plagiarism and collusion in software development.</description>
+    <url>http://jplag.de</url>
+    <organization>
+        <name>Karlsruhe Institute of Technology (KIT), KASTEL – Institute of Information Security and Dependability</name>
+        <url>http://www.ipd.kit.edu</url>
+    </organization>
+    <licenses>
+        <license>
+            <name>GNU General Public License v3.0</name>
+            <url>https://www.gnu.org/licenses/gpl-3.0.txt</url>
+        </license>
+    </licenses>
 
-  <issueManagement>
-    <system>GitHub</system>
-    <url>https://github.com/jplag/jplag</url>
-  </issueManagement>
-  <ciManagement>
-    <system>GitHub Actions</system>
-    <url>https://github.com/jplag/jplag/actions</url>
-  </ciManagement>
-  <distributionManagement>
-    <snapshotRepository>
-      <id>ossrh</id>
-      <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
-    </snapshotRepository>
-    <repository>
-      <id>ossrh</id>
-      <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
-    </repository>
-  </distributionManagement>
-  <organization>
-    <name>Karlsruhe Institute of Technology (KIT), KASTEL – Institute of Information Security and Dependability</name>
-    <url>http://www.ipd.kit.edu</url>
-  </organization>
+    <developers>
+        <developer>
+            <id>sebinside</id>
+            <name>Sebastian Hahner</name>
+            <email>hahner@kit.edu</email>
+            <url>https://sdq.ipd.kit.edu/people/sebastian-hahner/</url>
+            <organization>KASTEL</organization>
+            <organizationUrl>https://dsis.kastel.kit.edu/</organizationUrl>
+            <timezone>GMT+1</timezone>
+        </developer>
+        <developer>
+            <id>tsaglam</id>
+            <name>Timur Sağlam</name>
+            <email>saglam@kit.edu</email>
+            <url>https://sdq.ipd.kit.edu/people/timur-saglam/</url>
+            <organization>KASTEL</organization>
+            <organizationUrl>https://dsis.kastel.kit.edu/</organizationUrl>
+            <timezone>GMT+1</timezone>
+        </developer>
+    </developers>
 
-  <developers>
-    <developer>
-      <id>sebinside</id>
-      <name>Sebastian Hahner</name>
-      <email>hahner@kit.edu</email>
-      <url>https://sdq.ipd.kit.edu/people/sebastian-hahner/</url>
-      <organization>KASTEL</organization>
-      <organizationUrl>https://dsis.kastel.kit.edu/</organizationUrl>
-      <timezone>GMT+1</timezone>
-    </developer>
-    <developer>
-      <id>tsaglam</id>
-      <name>Timur Sağlam</name>
-      <email>saglam@kit.edu</email>
-      <url>https://sdq.ipd.kit.edu/people/timur-saglam/</url>
-      <organization>KASTEL</organization>
-      <organizationUrl>https://dsis.kastel.kit.edu/</organizationUrl>
-      <timezone>GMT+1</timezone>
-    </developer>
-  </developers>
+    <modules>
+        <module>jplag.frontend-utils</module>
+        <module>jplag.frontend.chars</module>
+        <module>jplag.frontend.cpp</module>
+        <module>jplag.frontend.csharp-1.2</module>
+        <module>jplag.frontend.java</module>
+        <module>jplag.frontend.python-3</module>
+        <module>jplag.frontend.scheme</module>
+        <module>jplag.frontend.text</module>
+        <module>jplag</module>
+    </modules>
+    <scm>
+        <connection>scm:git:git://github.com/jplag/JPlag.git</connection>
+        <developerConnection>scm:git:ssh://github.com:jplag/JPlag.git</developerConnection>
+        <url>http://github.com/jplag/JPlag/tree/master</url>
+    </scm>
 
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>14</maven.compiler.source>
-    <maven.compiler.target>14</maven.compiler.target>
-    <spotless.version>2.20.0</spotless.version>
-  </properties>
+    <issueManagement>
+        <system>GitHub</system>
+        <url>https://github.com/jplag/jplag</url>
+    </issueManagement>
+    <ciManagement>
+        <system>GitHub Actions</system>
+        <url>https://github.com/jplag/jplag/actions</url>
+    </ciManagement>
+    <distributionManagement>
+        <repository>
+            <id>ossrh</id>
+            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+        </repository>
+        <snapshotRepository>
+            <id>ossrh</id>
+            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
+        </snapshotRepository>
+    </distributionManagement>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>add-source</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>${project.build.directory}/generated-sources/javacc/</source>
-                <source>${project.build.directory}/generated-sources/antlr/</source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>attach-javadocs</id>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>attach-sources</id>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-gpg-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>sign-artifacts</id>
-            <phase>verify</phase>
-            <goals>
-              <goal>sign</goal>
-            </goals>
-            <configuration>
-              <keyname>0xC6E9DAC2</keyname>
-              <passphrase>${env.GPG_PASSPHRASE}</passphrase>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.sonatype.plugins</groupId>
-        <artifactId>nexus-staging-maven-plugin</artifactId>
-        <version>1.6.8</version>
-        <extensions>true</extensions>
-        <configuration>
-          <serverId>ossrh</serverId>
-          <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
-          <autoReleaseAfterClose>true</autoReleaseAfterClose>
-        </configuration>
-      </plugin>
-      <plugin>
-          <groupId>com.diffplug.spotless</groupId>
-          <artifactId>spotless-maven-plugin</artifactId>
-          <version>${spotless.version}</version>
-          <configuration>
-            <java>
-              <toggleOffOn />
-              <eclipse>
-                <file>${maven.multiModuleProjectDirectory}/formatter.xml</file>
-              </eclipse>
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>14</maven.compiler.source>
+        <maven.compiler.target>14</maven.compiler.target>
+        <spotless.version>2.20.0</spotless.version>
+    </properties>
+    <dependencyManagement>
+        <dependencies>
+            <!-- ANTLR -->
+            <dependency>
+                <groupId>antlr</groupId>
+                <artifactId>antlr</artifactId>
+                <version>2.7.7</version>
+            </dependency>
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr4-runtime</artifactId>
+                <version>4.9.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr4</artifactId>
+                <version>4.9.3</version>
+            </dependency>
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr3</artifactId>
+                <version>3.5</version>
+            </dependency>
+            <dependency>
+                <groupId>org.antlr</groupId>
+                <artifactId>antlr3-runtime</artifactId>
+                <version>3.5</version>
+            </dependency>
 
-              <importOrder>
-                <file>spotless.importorder</file>
-              </importOrder>
-              <removeUnusedImports></removeUnusedImports>
-            </java>
-            <pom>
-              <sortPom>
-                <encoding>UTF-8</encoding>
-                <keepBlankLines>true</keepBlankLines>
-                <indentBlankLines>false</indentBlankLines>
-                <nrOfIndentSpace>4</nrOfIndentSpace>
-              </sortPom>
-            </pom>
-          </configuration>
-        </plugin>
-    </plugins>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>com.helger.maven</groupId>
-          <artifactId>ph-javacc-maven-plugin</artifactId>
-          <version>4.1.5</version>
-        </plugin>
+            <dependency>
+                <groupId>net.sourceforge.argparse4j</groupId>
+                <artifactId>argparse4j</artifactId>
+                <version>0.9.0</version>
+            </dependency>
+            <dependency>
+                <groupId>com.github.stefanbirkner</groupId>
+                <artifactId>system-rules</artifactId>
+                <version>1.19.0</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>4.13.2</version>
+                <scope>test</scope>
+            </dependency>
 
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>build-helper-maven-plugin</artifactId>
-          <version>3.3.0</version>
-        </plugin>
-        <plugin>
-          <groupId>org.codehaus.mojo</groupId>
-          <artifactId>antlr-maven-plugin</artifactId>
-          <version>2.1</version>
-        </plugin>
-        <plugin>
-          <groupId>org.antlr</groupId>
-          <artifactId>antlr4-maven-plugin</artifactId>
-          <version>4.9.3</version>
-        </plugin>
-
-        <plugin>
-          <artifactId>maven-jar-plugin</artifactId>
-          <version>3.2.2</version>
-          <configuration>
-            <archive>
-              <manifest>
-                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-              </manifest>
-            </archive>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <version>3.3.0</version>
-          <configuration>
-            <descriptorRefs>
-              <descriptorRef>jar-with-dependencies</descriptorRef>
-            </descriptorRefs>
-            <archive>
-              <manifest>
-                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-              </manifest>
-            </archive>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-javadoc-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>attach-javadocs</id>
-              <goals>
-                <goal>jar</goal>
-              </goals>
-            </execution>
-          </executions>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-source-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>attach-sources</id>
-              <goals>
-                <goal>jar</goal>
-              </goals>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-  <dependencies>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-  <dependencyManagement>
+            <!-- JPLAG -->
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>text</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>java</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>python-3</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>csharp-1.2</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>cpp</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>scheme</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>chars</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>frontend-utils</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>jplag</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
     <dependencies>
-      <!-- ANTLR -->
-      <dependency>
-        <groupId>antlr</groupId>
-        <artifactId>antlr</artifactId>
-        <version>2.7.7</version>
-      </dependency>
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr4-runtime</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr4</artifactId>
-        <version>4.9.3</version>
-      </dependency>
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr3</artifactId>
-        <version>3.5</version>
-      </dependency>
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr3-runtime</artifactId>
-        <version>3.5</version>
-      </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
-      <dependency>
-        <groupId>net.sourceforge.argparse4j</groupId>
-        <artifactId>argparse4j</artifactId>
-        <version>0.9.0</version>
-      </dependency>
-      <dependency>
-        <groupId>com.github.stefanbirkner</groupId>
-        <artifactId>system-rules</artifactId>
-        <scope>test</scope>
-        <version>1.19.0</version>
-      </dependency>
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <scope>test</scope>
-        <version>4.13.2</version>
-      </dependency>
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>com.helger.maven</groupId>
+                    <artifactId>ph-javacc-maven-plugin</artifactId>
+                    <version>4.1.5</version>
+                </plugin>
 
-      <!-- JPLAG -->
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>text</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>java</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>python-3</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>csharp-1.2</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>cpp</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>scheme</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>chars</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>frontend-utils</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>${project.groupId}</groupId>
-        <artifactId>jplag</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>build-helper-maven-plugin</artifactId>
+                    <version>3.3.0</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>antlr-maven-plugin</artifactId>
+                    <version>2.1</version>
+                </plugin>
+                <plugin>
+                    <groupId>org.antlr</groupId>
+                    <artifactId>antlr4-maven-plugin</artifactId>
+                    <version>4.9.3</version>
+                </plugin>
+
+                <plugin>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>3.2.2</version>
+                    <configuration>
+                        <archive>
+                            <manifest>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                            </manifest>
+                        </archive>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-assembly-plugin</artifactId>
+                    <version>3.3.0</version>
+                    <configuration>
+                        <descriptorRefs>
+                            <descriptorRef>jar-with-dependencies</descriptorRef>
+                        </descriptorRefs>
+                        <archive>
+                            <manifest>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                            </manifest>
+                        </archive>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <executions>
+                        <execution>
+                            <id>attach-javadocs</id>
+                            <goals>
+                                <goal>jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <executions>
+                        <execution>
+                            <id>attach-sources</id>
+                            <goals>
+                                <goal>jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <phase>generate-sources</phase>
+                        <configuration>
+                            <sources>
+                                <source>${project.build.directory}/generated-sources/javacc/</source>
+                                <source>${project.build.directory}/generated-sources/antlr/</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-sources</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-gpg-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>sign-artifacts</id>
+                        <goals>
+                            <goal>sign</goal>
+                        </goals>
+                        <phase>verify</phase>
+                        <configuration>
+                            <keyname>0xC6E9DAC2</keyname>
+                            <passphrase>${env.GPG_PASSPHRASE}</passphrase>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.sonatype.plugins</groupId>
+                <artifactId>nexus-staging-maven-plugin</artifactId>
+                <version>1.6.8</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <serverId>ossrh</serverId>
+                    <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
+                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>com.diffplug.spotless</groupId>
+                <artifactId>spotless-maven-plugin</artifactId>
+                <version>${spotless.version}</version>
+                <configuration>
+                    <java>
+                        <toggleOffOn></toggleOffOn>
+                        <eclipse>
+                            <file>${maven.multiModuleProjectDirectory}/formatter.xml</file>
+                        </eclipse>
 
-  <modules>
-    <module>jplag.frontend-utils</module>
-    <module>jplag.frontend.chars</module>
-    <module>jplag.frontend.cpp</module>
-    <module>jplag.frontend.csharp-1.2</module>
-    <module>jplag.frontend.java</module>
-    <module>jplag.frontend.python-3</module>
-    <module>jplag.frontend.scheme</module>
-    <module>jplag.frontend.text</module>
-    <module>jplag</module>
-  </modules>
+                        <importOrder>
+                            <file>spotless.importorder</file>
+                        </importOrder>
+                        <removeUnusedImports></removeUnusedImports>
+                    </java>
+                    <pom>
+                        <sortPom>
+                            <encoding>UTF-8</encoding>
+                            <keepBlankLines>true</keepBlankLines>
+                            <indentBlankLines>false</indentBlankLines>
+                            <nrOfIndentSpace>4</nrOfIndentSpace>
+                        </sortPom>
+                    </pom>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>