Browse Source

Rename Parser to ParserAdapter and ParserToken to AntlrParserToken.

Timur Sağlam 4 years ago
parent
commit
29f1005246

+ 15 - 21
jplag.frontend.text/src/main/antlr/text.g

@@ -1,34 +1,29 @@
-header
-{
-
+header {
 package de.jplag.text;
 package de.jplag.text;
-
 }
 }
 
 
 // tell ANTLR that we want to generate Java source code
 // tell ANTLR that we want to generate Java source code
-options
-{
+options {
   language="Java";
   language="Java";
 }
 }
 
 
 class TextParser extends Parser;
 class TextParser extends Parser;
-options
-{
+options {
   k = 2;			  // two token lookahead
   k = 2;			  // two token lookahead
   //  exportVocab=Text;	          // Call its vocabulary "Text"
   //  exportVocab=Text;	          // Call its vocabulary "Text"
   codeGenMakeSwitchThreshold = 2; // Some optimizations
   codeGenMakeSwitchThreshold = 2; // Some optimizations
   codeGenBitsetTestThreshold = 3;
   codeGenBitsetTestThreshold = 3;
   defaultErrorHandler = true;
   defaultErrorHandler = true;
   buildAST = false;
   buildAST = false;
-  ASTLabelType = "ParserToken";
+  ASTLabelType = "AntlrParserToken";
 }
 }
 
 
 {
 {
-  private de.jplag.text.Parser parser;
+    private de.jplag.text.ParserAdapter parser;
 
 
-  public void setParser(de.jplag.text.Parser parser) {
-      this.parser = parser;
-  }
+    public void setParserAdapter(de.jplag.text.ParserAdapter adapter) {
+        this.parser = adapter;
+    }
 }
 }
 
 
 file : ( w:WORD { parser.add(w); } | PUNCTUATION | SPECIALS )* EOF ;
 file : ( w:WORD { parser.add(w); } | PUNCTUATION | SPECIALS )* EOF ;
@@ -39,16 +34,15 @@ file : ( w:WORD { parser.add(w); } | PUNCTUATION | SPECIALS )* EOF ;
 
 
 {
 {
 import de.jplag.text.InputState;
 import de.jplag.text.InputState;
-import de.jplag.text.ParserToken;
+import de.jplag.text.AntlrParserToken;
 }
 }
 
 
 class TextLexer extends Lexer;
 class TextLexer extends Lexer;
-options
-{
-  //  exportVocab=Text;        // call the vocabulary "Text"
-  testLiterals = false;    // don't automatically test for literals
-  k = 2;                   // two characters of lookahead
-  charVocabulary = '\u0000'..'\u00FF';
+options {
+    //  exportVocab=Text;    // call the vocabulary "Text"
+    testLiterals = false;    // don't automatically test for literals
+    k = 2;                   // two characters of lookahead
+    charVocabulary = '\u0000'..'\u00FF';
 }
 }
 
 
 {
 {
@@ -70,7 +64,7 @@ options
     }
     }
 
 
     protected Token makeToken(int t) {
     protected Token makeToken(int t) {
-        ParserToken token = (ParserToken) super.makeToken(t);
+        AntlrParserToken token = (AntlrParserToken) super.makeToken(t);
         token.setColumn(((InputState) inputState).getTokenColumnIndex());
         token.setColumn(((InputState) inputState).getTokenColumnIndex());
         return token;
         return token;
     }
     }

+ 5 - 2
jplag.frontend.text/src/main/java/de/jplag/text/ParserToken.java → jplag.frontend.text/src/main/java/de/jplag/text/AntlrParserToken.java

@@ -2,7 +2,10 @@ package de.jplag.text;
 
 
 import antlr.Token;
 import antlr.Token;
 
 
-public class ParserToken extends Token {
+/**
+ * Token of the ANTLR grammar, needs to be converted into a JPlag token by the parser adapter.
+ */
+public class AntlrParserToken extends Token {
     /**
     /**
      * This variable holds the line number of the current token.
      * This variable holds the line number of the current token.
      */
      */
@@ -23,7 +26,7 @@ public class ParserToken extends Token {
      */
      */
     private int id = -1;
     private int id = -1;
 
 
-    public ParserToken() {
+    public AntlrParserToken() {
         super();
         super();
     }
     }
 
 

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

@@ -6,10 +6,10 @@ import de.jplag.TokenList;
 
 
 public class Language implements de.jplag.Language {
 public class Language implements de.jplag.Language {
 
 
-    private final Parser parser;
+    private final ParserAdapter parserAdapter;
 
 
     public Language() {
     public Language() {
-        parser = new Parser();
+        parserAdapter = new ParserAdapter();
     }
     }
 
 
     @Override
     @Override
@@ -19,7 +19,7 @@ public class Language implements de.jplag.Language {
 
 
     @Override
     @Override
     public String getName() {
     public String getName() {
-        return "Text Parser";
+        return "Text ParserAdapter";
     }
     }
 
 
     @Override
     @Override
@@ -34,12 +34,12 @@ public class Language implements de.jplag.Language {
 
 
     @Override
     @Override
     public TokenList parse(File dir, String[] files) {
     public TokenList parse(File dir, String[] files) {
-        return this.parser.parse(dir, files);
+        return parserAdapter.parse(dir, files);
     }
     }
 
 
     @Override
     @Override
     public boolean hasErrors() {
     public boolean hasErrors() {
-        return this.parser.hasErrors();
+        return parserAdapter.hasErrors();
     }
     }
 
 
     @Override
     @Override

+ 11 - 17
jplag.frontend.text/src/main/java/de/jplag/text/Parser.java → jplag.frontend.text/src/main/java/de/jplag/text/ParserAdapter.java

@@ -3,6 +3,7 @@ package de.jplag.text;
 import java.io.File;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileInputStream;
 import java.util.Hashtable;
 import java.util.Hashtable;
+import java.util.Map;
 
 
 import antlr.Token;
 import antlr.Token;
 
 
@@ -10,24 +11,14 @@ import de.jplag.AbstractParser;
 import de.jplag.TokenConstants;
 import de.jplag.TokenConstants;
 import de.jplag.TokenList;
 import de.jplag.TokenList;
 
 
-public class Parser extends AbstractParser {
+public class ParserAdapter extends AbstractParser {
 
 
-    private final Hashtable<String, Integer> tokenTypes = new Hashtable<>();
-    protected int serial = 1; // 0 is FILE_END token, SEPARATOR is not used as there are no methods.
+    private final Map<String, Integer> tokenTypes = new Hashtable<>();
+    private int serial = 1; // 0 is FILE_END token, SEPARATOR is not used as there are no methods.
 
 
     private TokenList tokens;
     private TokenList tokens;
-
     private String currentFile;
     private String currentFile;
 
 
-    private boolean runOut = false;
-
-    /**
-     * Creates the parser.
-     */
-    public Parser() {
-        super();
-    }
-
     public TokenList parse(File directory, String[] files) {
     public TokenList parse(File directory, String[] files) {
         tokens = new TokenList();
         tokens = new TokenList();
         errors = 0;
         errors = 0;
@@ -41,15 +32,18 @@ public class Parser extends AbstractParser {
         return tokens;
         return tokens;
     }
     }
 
 
+    /**
+     * Converts a ANTLR token into a JPlag token and adds it to the token list.
+     * @param token is the ANTLR token to convert.
+     */
     public void add(Token token) {
     public void add(Token token) {
-        if (token instanceof ParserToken parserToken) {
+        if (token instanceof AntlrParserToken parserToken) {
             String text = token.getText();
             String text = token.getText();
             int type = getTokenType(text);
             int type = getTokenType(text);
             tokens.addToken(new TextToken(text, type, currentFile, parserToken));
             tokens.addToken(new TextToken(text, type, currentFile, parserToken));
         } else {
         } else {
             throw new IllegalArgumentException("Illegal token implementation: " + token);
             throw new IllegalArgumentException("Illegal token implementation: " + token);
         }
         }
-
     }
     }
 
 
     private boolean parseFile(File directory, String file) {
     private boolean parseFile(File directory, String file) {
@@ -60,12 +54,12 @@ public class Parser extends AbstractParser {
             inputState = new InputState(inputStream);
             inputState = new InputState(inputStream);
             TextLexer lexer = new TextLexer(inputState);
             TextLexer lexer = new TextLexer(inputState);
             lexer.setFilename(file);
             lexer.setFilename(file);
-            lexer.setTokenObjectClass("de.jplag.text.ParserToken");
+            lexer.setTokenObjectClass("de.jplag.text.AntlrParserToken");
 
 
             // Create a parser that reads from the scanner
             // Create a parser that reads from the scanner
             TextParser parser = new TextParser(lexer);
             TextParser parser = new TextParser(lexer);
             parser.setFilename(file);
             parser.setFilename(file);
-            parser.setParser(this);
+            parser.setParserAdapter(this);
 
 
             // start parsing at the compilationUnit rule
             // start parsing at the compilationUnit rule
             parser.file();
             parser.file();

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

@@ -10,7 +10,7 @@ public class TextToken extends Token {
         super(type, file, -1, -1, -1);
         super(type, file, -1, -1, -1);
     }
     }
 
 
-    public TextToken(String text, int type, String file, ParserToken parserToken) {
+    public TextToken(String text, int type, String file, AntlrParserToken parserToken) {
         super(type, file, parserToken.getLine(), parserToken.getColumn(), parserToken.getLength());
         super(type, file, parserToken.getLine(), parserToken.getColumn(), parserToken.getLength());
         this.text = text.toLowerCase();
         this.text = text.toLowerCase();
     }
     }