PR Review

This commit is contained in:
Tomi De Lucca
2018-08-19 03:56:07 -03:00
parent 1812880c47
commit 1796d2a7a5
2 changed files with 10 additions and 14 deletions

View File

@ -19,16 +19,7 @@ import net.sourceforge.pmd.lang.ast.TokenMgrError;
*/ */
public abstract class AntlrTokenizer implements Tokenizer { public abstract class AntlrTokenizer implements Tokenizer {
private final Lexer lexer; protected abstract Lexer getLexerForSource(final CharStream charStream);
/**
* Constructor.
*
* @param lexer lexer.
*/
public AntlrTokenizer(final Lexer lexer) {
this.lexer = lexer;
}
@Override @Override
public void tokenize(final SourceCode sourceCode, final Tokens tokenEntries) { public void tokenize(final SourceCode sourceCode, final Tokens tokenEntries) {
@ -36,11 +27,12 @@ public abstract class AntlrTokenizer implements Tokenizer {
try { try {
final CharStream charStream = CharStreams.fromString(buffer.toString()); final CharStream charStream = CharStreams.fromString(buffer.toString());
lexer.reset();
lexer.setInputStream(charStream); Lexer lexer = getLexerForSource(charStream);
lexer.removeErrorListeners(); lexer.removeErrorListeners();
lexer.addErrorListener(new ErrorHandler()); lexer.addErrorListener(new ErrorHandler());
Token token = lexer.nextToken(); Token token = lexer.nextToken();
while (token.getType() != Token.EOF) { while (token.getType() != Token.EOF) {

View File

@ -5,13 +5,17 @@
package net.sourceforge.pmd.cpd; package net.sourceforge.pmd.cpd;
import net.sourceforge.pmd.lang.swift.antlr4.SwiftLexer; import net.sourceforge.pmd.lang.swift.antlr4.SwiftLexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Lexer;
/** /**
* SwiftTokenizer * SwiftTokenizer
*/ */
public class SwiftTokenizer extends AntlrTokenizer { public class SwiftTokenizer extends AntlrTokenizer {
public SwiftTokenizer() {
super(new SwiftLexer(null)); @Override
protected Lexer getLexerForSource(final CharStream charStream) {
return new SwiftLexer(charStream);
} }
} }