All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sourceforge.pmd.lang.plsql.cpd.PLSQLCpdLexer Maven / Gradle / Ivy

There is a newer version: 7.7.0
Show newest version
/*
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
 */

package net.sourceforge.pmd.lang.plsql.cpd;

import net.sourceforge.pmd.cpd.CpdLanguageProperties;
import net.sourceforge.pmd.cpd.impl.JavaccCpdLexer;
import net.sourceforge.pmd.lang.LanguagePropertyBundle;
import net.sourceforge.pmd.lang.TokenManager;
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken;
import net.sourceforge.pmd.lang.document.TextDocument;
import net.sourceforge.pmd.lang.plsql.ast.InternalApiBridge;
import net.sourceforge.pmd.lang.plsql.ast.PLSQLTokenKinds;

/**
 * 

Note: This class has been called PLSQLTokenizer in PMD 6

. */ public class PLSQLCpdLexer extends JavaccCpdLexer { private final boolean ignoreIdentifiers; private final boolean ignoreLiterals; public PLSQLCpdLexer(LanguagePropertyBundle properties) { /* * The Tokenizer is derived from PLDoc, in which comments are very * important When looking for duplication, we are probably not * interested in comment variation, so we shall default ignoreComments * to true */ ignoreIdentifiers = properties.getProperty(CpdLanguageProperties.CPD_ANONYMIZE_IDENTIFIERS); ignoreLiterals = properties.getProperty(CpdLanguageProperties.CPD_ANONYMIZE_LITERALS); } @Override protected String getImage(JavaccToken plsqlToken) { String image; if (ignoreIdentifiers && plsqlToken.kind == PLSQLTokenKinds.IDENTIFIER) { image = ""; } else if (ignoreLiterals && (plsqlToken.kind == PLSQLTokenKinds.UNSIGNED_NUMERIC_LITERAL || plsqlToken.kind == PLSQLTokenKinds.FLOAT_LITERAL || plsqlToken.kind == PLSQLTokenKinds.INTEGER_LITERAL || plsqlToken.kind == PLSQLTokenKinds.CHARACTER_LITERAL || plsqlToken.kind == PLSQLTokenKinds.STRING_LITERAL || plsqlToken.kind == PLSQLTokenKinds.QUOTED_LITERAL)) { // the token kind is preserved image = PLSQLTokenKinds.describe(plsqlToken.kind); } else { image = plsqlToken.getImage(); } return image; } @Override protected TokenManager makeLexerImpl(TextDocument doc) { return InternalApiBridge.newTokenManager(doc); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy