Просмотр исходного кода

Rename the class Structure to TokenList.

Timur Sağlam 5 лет назад
Родитель
Сommit
0e93bdabee
30 измененных файлов с 73 добавлено и 73 удалено
  1. 1 1
      jplag.frontend-utils/src/main/java/jplag/Language.java
  2. 3 3
      jplag.frontend-utils/src/main/java/jplag/TokenList.java
  3. 1 1
      jplag.frontend.chars/src/main/java/jplag/chars/Language.java
  4. 4 4
      jplag.frontend.chars/src/main/java/jplag/chars/Parser.java
  5. 1 1
      jplag.frontend.cpp/src/main/java/jplag/cpp/Language.java
  6. 3 3
      jplag.frontend.cpp/src/main/java/jplag/cpp/Scanner.java
  7. 1 1
      jplag.frontend.csharp-1.2/src/main/java/jplag/csharp/Language.java
  8. 4 4
      jplag.frontend.csharp-1.2/src/main/java/jplag/csharp/Parser.java
  9. 1 1
      jplag.frontend.java-1.1exp/src/main/java/jplag/javax/Language.java
  10. 3 3
      jplag.frontend.java-1.1exp/src/main/java/jplag/javax/Parser.java
  11. 1 1
      jplag.frontend.java-1.2/src/main/java/jplag/java/Language.java
  12. 4 4
      jplag.frontend.java-1.2/src/main/java/jplag/java/Parser.java
  13. 1 1
      jplag.frontend.java-1.5/src/main/java/jplag/java15/Language.java
  14. 1 1
      jplag.frontend.java-1.5/src/main/java/jplag/java15/LanguageWithDelimitedMethods.java
  15. 3 3
      jplag.frontend.java-1.5/src/main/java/jplag/java15/Parser.java
  16. 1 1
      jplag.frontend.java-1.7/src/main/java/jplag/java17/Language.java
  17. 4 4
      jplag.frontend.java-1.7/src/main/java/jplag/java17/Parser.java
  18. 3 3
      jplag.frontend.java-1.7/src/test/java/jplag/java17/ParserTest.java
  19. 2 2
      jplag.frontend.java-1.9/src/main/java/jplag/java19/Language.java
  20. 3 3
      jplag.frontend.java-1.9/src/main/java/jplag/java19/Parser.java
  21. 1 1
      jplag.frontend.python-3/src/main/java/jplag/python3/Language.java
  22. 4 4
      jplag.frontend.python-3/src/main/java/jplag/python3/Parser.java
  23. 1 1
      jplag.frontend.scheme/src/main/java/jplag/scheme/Language.java
  24. 3 3
      jplag.frontend.scheme/src/main/java/jplag/scheme/Parser.java
  25. 1 1
      jplag.frontend.text/src/main/java/jplag/text/Language.java
  26. 5 5
      jplag.frontend.text/src/main/java/jplag/text/Parser.java
  27. 5 5
      jplag/src/main/java/jplag/GreedyStringTiling.java
  28. 1 1
      jplag/src/main/java/jplag/JPlagComparison.java
  29. 1 1
      jplag/src/main/java/jplag/Submission.java
  30. 6 6
      jplag/src/main/java/jplag/reporting/Report.java

+ 1 - 1
jplag.frontend-utils/src/main/java/jplag/Language.java

@@ -30,7 +30,7 @@ public interface Language {
     /**
      * Parses a set files in a directory.
      */
-    public Structure parse(File dir, String[] files);
+    public TokenList parse(File dir, String[] files);
 
     /**
      * Whether errors were found during the last {@link #parse}.

+ 3 - 3
jplag.frontend-utils/src/main/java/jplag/Structure.java → jplag.frontend-utils/src/main/java/jplag/TokenList.java

@@ -5,13 +5,13 @@ import java.util.List;
 
 /**
  * List of tokens. Allows random access to individual tokens.
- */ // TODO PB: The name 'Structure' is very generic and should be changed to something more descriptive.
-public class Structure implements TokenConstants { // TODO TS: How about renaming it to TokenList?
+ */
+public class TokenList implements TokenConstants {
     private final List<Token> tokens;
     Table table = null;
     int hash_length = -1;
 
-    public Structure() {
+    public TokenList() {
         tokens = new ArrayList<>();
     }
 

+ 1 - 1
jplag.frontend.chars/src/main/java/jplag/chars/Language.java

@@ -50,7 +50,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

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

@@ -3,14 +3,14 @@ package jplag.chars;
 import java.io.File;
 import java.io.FileReader;
 
-import jplag.Structure;
+import jplag.TokenList;
 
 public class Parser extends jplag.Parser implements jplag.TokenConstants {
 
-	private Structure struct;
+	private TokenList struct;
 
-	public jplag.Structure parse(File dir, String files[]) {
-		struct = new Structure();
+	public jplag.TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
 			getProgram().print(null, "Parsing file " + files[i] + "\n");

+ 1 - 1
jplag.frontend.cpp/src/main/java/jplag/cpp/Language.java

@@ -59,7 +59,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.scanner.scan(dir, files);
 	}
 

+ 3 - 3
jplag.frontend.cpp/src/main/java/jplag/cpp/Scanner.java

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

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

@@ -40,7 +40,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 4 - 4
jplag.frontend.csharp-1.2/src/main/java/jplag/csharp/Parser.java

@@ -3,17 +3,17 @@ package jplag.csharp;
 import java.io.File;
 import java.io.FileInputStream;
 
-import jplag.Structure;
+import jplag.TokenList;
 import jplag.UnicodeReader;
 import jplag.csharp.grammar.CSharpLexer;
 import jplag.csharp.grammar.CSharpParser;
 
 public class Parser extends jplag.Parser implements CSharpTokenConstants {
-	private Structure struct;
+	private TokenList struct;
 	private String currentFile;
 
-	public jplag.Structure parse(File dir, String files[]) {
-		struct = new Structure();
+	public jplag.TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
 			//			getProgram().print(null, "Parsing file " + files[i] + "\n");

+ 1 - 1
jplag.frontend.java-1.1exp/src/main/java/jplag/javax/Language.java

@@ -55,7 +55,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 3 - 3
jplag.frontend.java-1.1exp/src/main/java/jplag/javax/Parser.java

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

+ 1 - 1
jplag.frontend.java-1.2/src/main/java/jplag/java/Language.java

@@ -39,7 +39,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 4 - 4
jplag.frontend.java-1.2/src/main/java/jplag/java/Parser.java

@@ -5,16 +5,16 @@ import java.io.FileInputStream;
 
 import jplag.InputState;
 import jplag.ParserToken;
-import jplag.Structure;
+import jplag.TokenList;
 import jplag.java.grammar.JLexer;
 import jplag.java.grammar.JRecognizer;
 
 public class Parser extends jplag.Parser implements JavaTokenConstants {
-	private Structure struct;
+	private TokenList struct;
 	private String currentFile;
 
-	public jplag.Structure parse(File dir, String files[]) {
-		struct = new Structure();
+	public jplag.TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
 			getProgram().print(null, "Parsing file " + files[i] + "\n");

+ 1 - 1
jplag.frontend.java-1.5/src/main/java/jplag/java15/Language.java

@@ -39,7 +39,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 1 - 1
jplag.frontend.java-1.5/src/main/java/jplag/java15/LanguageWithDelimitedMethods.java

@@ -44,7 +44,7 @@ public class LanguageWithDelimitedMethods implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 3 - 3
jplag.frontend.java-1.5/src/main/java/jplag/java15/Parser.java

@@ -9,14 +9,14 @@ public class Parser extends jplag.Parser implements JavaTokenConstants {
 	private String actFile;
 	private boolean useMethodSeparators;
 
-	private jplag.Structure struct;
+	private jplag.TokenList struct;
 
 	public Parser(boolean useMethodSeparators) {
 		this.useMethodSeparators = useMethodSeparators;
 	}
 
-	public jplag.Structure parse(File dir, String files[]) {
-		struct = new jplag.Structure();
+	public jplag.TokenList parse(File dir, String files[]) {
+		struct = new jplag.TokenList();
 		errors = 0;
 
 		JavaParser parser = null; // This will be (re)initialised in parseFile()

+ 1 - 1
jplag.frontend.java-1.7/src/main/java/jplag/java17/Language.java

@@ -39,7 +39,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 4 - 4
jplag.frontend.java-1.7/src/main/java/jplag/java17/Parser.java

@@ -11,17 +11,17 @@ import org.antlr.v4.runtime.CommonTokenStream;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 
-import jplag.Structure;
+import jplag.TokenList;
 import jplag.java17.grammar.Java7Lexer;
 import jplag.java17.grammar.Java7Parser;
 import jplag.java17.grammar.Java7Parser.CompilationUnitContext;
 
 public class Parser extends jplag.Parser implements JavaTokenConstants {
-	private Structure struct = new Structure();
+	private TokenList struct = new TokenList();
 	private String currentFile;
 
-	public jplag.Structure parse(File dir, String files[]) {
-		struct = new Structure();
+	public jplag.TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
 			getProgram().print(null, "Parsing file " + files[i] + "\n");

+ 3 - 3
jplag.frontend.java-1.7/src/test/java/jplag/java17/ParserTest.java

@@ -251,7 +251,7 @@ public class ParserTest {
 		// parse with old parser
 		jplag.java15.Parser oldParser = new jplag.java15.Parser(false);
 		oldParser.setProgram(new StrippedProgram());
-		jplag.Structure oldStruct = oldParser.parse(javaFile.getParentFile(), new String[] { javaFile.getName() });
+		jplag.TokenList oldStruct = oldParser.parse(javaFile.getParentFile(), new String[] { javaFile.getName() });
 
 		String oldTokens = buildTokenString(oldStruct, true);
 		return oldTokens;
@@ -268,7 +268,7 @@ public class ParserTest {
 	 * @param withDetails
 	 * @return
 	 */
-	private String buildTokenString(jplag.Structure oldStruct, boolean withDetails) {
+	private String buildTokenString(jplag.TokenList oldStruct, boolean withDetails) {
 		StringBuilder sb = new StringBuilder();
 		for (int i = 0; i < oldStruct.size(); i++) {
 			sb.append(jplag.java17.JavaToken.type2string(oldStruct.getToken(i).type));
@@ -288,7 +288,7 @@ public class ParserTest {
 		// parse with new parser
 		jplag.java17.Parser newParser = new Parser();
 		newParser.setProgram(new StrippedProgram());
-		jplag.Structure newStruct = newParser.parse(javaFile.getParentFile(), new String[] { javaFile.getName() });
+		jplag.TokenList newStruct = newParser.parse(javaFile.getParentFile(), new String[] { javaFile.getName() });
 
 		String newTokens = buildTokenString(newStruct, withDetails);
 		return newTokens;

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

@@ -3,7 +3,7 @@ package jplag.java19;
 import java.io.File;
 
 import jplag.ProgramI;
-import jplag.Structure;
+import jplag.TokenList;
 
 /**
  * Language for Java 9 and newer.
@@ -63,7 +63,7 @@ public class Language implements jplag.Language {
     }
 
     @Override
-    public Structure parse(File dir, String[] files) {
+    public TokenList parse(File dir, String[] files) {
         return this.parser.parse(dir, files);
     }
 

+ 3 - 3
jplag.frontend.java-1.9/src/main/java/jplag/java19/Parser.java

@@ -3,10 +3,10 @@ package jplag.java19;
 import java.io.File;
 
 public class Parser extends jplag.Parser {
-    private jplag.Structure struct;
+    private jplag.TokenList struct;
 
-    public jplag.Structure parse(File dir, String files[]) {
-        struct = new jplag.Structure();
+    public jplag.TokenList parse(File dir, String files[]) {
+        struct = new jplag.TokenList();
         errors = 0;
         File pathedFiles[] = new File[files.length];
         for (int i = 0; i < files.length; i++) {

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

@@ -40,7 +40,7 @@ public class Language implements jplag.Language {
     }
 
     @Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
         return this.parser.parse(dir, files);
     }
 

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

@@ -11,18 +11,18 @@ import org.antlr.v4.runtime.CommonTokenStream;
 import org.antlr.v4.runtime.tree.ParseTree;
 import org.antlr.v4.runtime.tree.ParseTreeWalker;
 
-import jplag.Structure;
+import jplag.TokenList;
 import jplag.python3.grammar.Python3Lexer;
 import jplag.python3.grammar.Python3Parser;
 import jplag.python3.grammar.Python3Parser.File_inputContext;
 
 public class Parser extends jplag.Parser implements Python3TokenConstants {
 
-    private Structure struct = new Structure();
+    private TokenList struct = new TokenList();
     private String currentFile;
 
-    public jplag.Structure parse(File dir, String files[]) {
-        struct = new Structure();
+    public jplag.TokenList parse(File dir, String files[]) {
+        struct = new TokenList();
         errors = 0;
         for (int i = 0; i < files.length; i++) {
             getProgram().print(null, "Parsing file " + files[i] + "\n");

+ 1 - 1
jplag.frontend.scheme/src/main/java/jplag/scheme/Language.java

@@ -56,7 +56,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 3 - 3
jplag.frontend.scheme/src/main/java/jplag/scheme/Parser.java

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

+ 1 - 1
jplag.frontend.text/src/main/java/jplag/text/Language.java

@@ -47,7 +47,7 @@ public class Language implements jplag.Language {
 	}
 
 	@Override
-    public jplag.Structure parse(File dir, String[] files) {
+    public jplag.TokenList parse(File dir, String[] files) {
 		return this.parser.parse(dir, files);
 	}
 

+ 5 - 5
jplag.frontend.text/src/main/java/jplag/text/Parser.java

@@ -9,7 +9,7 @@ import java.util.HashSet;
 
 import jplag.InputState;
 import jplag.ParserToken;
-import jplag.Structure;
+import jplag.TokenList;
 
 /**
  * @Changed by Emeric Kwemou 29.01.2005
@@ -19,7 +19,7 @@ public class Parser extends jplag.Parser implements jplag.TokenConstants {
 
 	protected TokenStructure tokenStructure = new TokenStructure();
 
-	private Structure struct;
+	private TokenList struct;
 
 	private String currentFile;
 
@@ -47,8 +47,8 @@ public class Parser extends jplag.Parser implements jplag.TokenConstants {
 		}
 	}
 
-	public jplag.Structure parse(File dir, String files[]) {
-		struct = new Structure();
+	public jplag.TokenList parse(File dir, String files[]) {
+		struct = new TokenList();
 		errors = 0;
 		for (int i = 0; i < files.length; i++) {
 			getProgram().print("", "Parsing file " + files[i] + "\n");
@@ -57,7 +57,7 @@ public class Parser extends jplag.Parser implements jplag.TokenConstants {
 			struct.addToken(new TextToken(FILE_END, files[i], this));
 		}
 
-		Structure tmp = struct;
+		TokenList tmp = struct;
 		struct = null;
 		this.parseEnd();
 		return tmp;

+ 5 - 5
jplag/src/main/java/jplag/GreedyStringTiling.java

@@ -4,7 +4,7 @@ import java.util.List;
 
 /**
  * This class implements the Greedy String Tiling algorithm as introduced by Michael Wise. However, it is very specific
- * to the classes {@link Structure}, {@link Token}, as well as {@link Matches} and {@link Match}. While is class was
+ * to the classes {@link TokenList}, {@link Token}, as well as {@link Matches} and {@link Match}. While is class was
  * reworked, it still contains some quirks from the initial version.
  * @see <a href=
  * "https://www.researchgate.net/publication/262763983_String_Similarity_via_Greedy_String_Tiling_and_Running_Karp-Rabin_Matching">
@@ -26,7 +26,7 @@ public class GreedyStringTiling implements TokenConstants {
      * @param hashLength is the hash length (condition: 1 < hashLength < 26)
      * @param makeTable determines if a simple hash table is created in the structure.
      */
-    public void createHashes(Structure tokenList, int hashLength, boolean makeTable) {
+    public void createHashes(TokenList tokenList, int hashLength, boolean makeTable) {
         // Here the upper boundary of the hash length is set.
         // It is determined by the number of bits of the 'int' data type and the number of tokens.
         if (hashLength < 1) {
@@ -122,8 +122,8 @@ public class GreedyStringTiling implements TokenConstants {
      */
     private final JPlagComparison compare(Submission firstSubmission, Submission secondSubmission, int minimalTokenMatch, boolean withBaseCode) {
         // first and second refer to the list of tokens of the first and second submission:
-        Structure first = firstSubmission.tokenList;
-        Structure second = secondSubmission.tokenList;
+        TokenList first = firstSubmission.tokenList;
+        TokenList second = secondSubmission.tokenList;
 
         // FILE_END used as pivot
 
@@ -203,7 +203,7 @@ public class GreedyStringTiling implements TokenConstants {
         return comparison;
     }
 
-    private void markTokens(Structure tokenList, boolean withBaseCode) {
+    private void markTokens(TokenList tokenList, boolean withBaseCode) {
         for (Token token : tokenList.allTokens()) {
             if (withBaseCode) {
                 token.marked = token.type == FILE_END || token.type == SEPARATOR_TOKEN;

+ 1 - 1
jplag/src/main/java/jplag/JPlagComparison.java

@@ -184,7 +184,7 @@ public class JPlagComparison implements Comparator<JPlagComparison> {
             return new String[] {};
         }
 
-        Structure tokenList = (j == 0 ? firstSubmission : secondSubmission).tokenList;
+        TokenList tokenList = (j == 0 ? firstSubmission : secondSubmission).tokenList;
         int i, h, starti, starth, count = 1;
 
         o1: for (i = 1; i < matches.size(); i++) {

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

@@ -39,7 +39,7 @@ public class Submission implements Comparable<Submission> {
     /**
      * List of tokens that have been parsed from the files this submission consists of.
      */
-    public Structure tokenList;
+    public TokenList tokenList;
 
     /**
      * True, if at least one error occurred while parsing this submission; false otherwise.

+ 6 - 6
jplag/src/main/java/jplag/reporting/Report.java

@@ -20,7 +20,7 @@ import jplag.ExitException;
 import jplag.JPlagComparison;
 import jplag.JPlagResult;
 import jplag.Match;
-import jplag.Structure;
+import jplag.TokenList;
 import jplag.Submission;
 import jplag.Token;
 
@@ -389,8 +389,8 @@ public class Report {
      */
     private void reportComparison(HTMLFile htmlFile, JPlagComparison comparison, int index) {
         Match match;
-        Structure tokensA = comparison.firstSubmission.tokenList;
-        Structure tokensB = comparison.secondSubmission.tokenList;
+        TokenList tokensA = comparison.firstSubmission.tokenList;
+        TokenList tokensB = comparison.secondSubmission.tokenList;
         // sort();
 
         htmlFile.println("<TABLE BORDER=\"1\" CELLSPACING=\"0\" BGCOLOR=\"#d0d0d0\">");
@@ -452,7 +452,7 @@ public class Report {
 
         String[][] text = sub.readFiles(files);
 
-        Structure tokens = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission).tokenList;
+        TokenList tokens = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission).tokenList;
         Match currentMatch;
         String hilf;
         int h;
@@ -556,7 +556,7 @@ public class Report {
         Submission sub = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission);
         String[] files = comparison.files(j);
         char[][] text = sub.readFilesChar(files);
-        Structure tokens = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission).tokenList;
+        TokenList tokens = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission).tokenList;
 
         // get index array with matches sorted in ascending order.
         int[] perm = comparison.sort_permutation(j);
@@ -629,7 +629,7 @@ public class Report {
         Submission sub = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission);
         String[] files = comparison.files(j);
         String[][] text = sub.readFiles(files);
-        Structure tokens = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission).tokenList;
+        TokenList tokens = (j == 0 ? comparison.firstSubmission : comparison.secondSubmission).tokenList;
 
         // Markup list:
         Comparator<MarkupText> comp = (mo1, mo2) -> {