Cleanup
This commit is contained in:
@ -26,10 +26,10 @@ public abstract class JavaCCTokenizer implements Tokenizer {
|
||||
@SuppressWarnings("PMD.CloseResource")
|
||||
protected TokenManager<JavaccToken> getLexerForSource(SourceCode sourceCode) throws IOException, MalformedSourceException {
|
||||
TextDocument textDocument = TextDocument.create(CpdCompat.cpdCompat(sourceCode));
|
||||
return makeLexerImpl(CharStream.create(textDocument, newTokenDoc()));
|
||||
return makeLexerImpl(CharStream.create(textDocument, tokenBehavior()));
|
||||
}
|
||||
|
||||
protected TokenDocumentBehavior newTokenDoc() {
|
||||
protected TokenDocumentBehavior tokenBehavior() {
|
||||
return TokenDocumentBehavior.DEFAULT;
|
||||
}
|
||||
|
||||
|
@ -11,6 +11,7 @@ import java.util.function.Function;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import net.sourceforge.pmd.cpd.internal.JavaCCTokenizer;
|
||||
import net.sourceforge.pmd.lang.ast.impl.TokenDocument;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.io.EscapeTranslator;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.io.MalformedSourceException;
|
||||
@ -18,12 +19,14 @@ import net.sourceforge.pmd.util.document.TextDocument;
|
||||
|
||||
/**
|
||||
* Token document for Javacc implementations. This is a helper object
|
||||
* for generated token managers.
|
||||
* for generated token managers. Note: the extension point is a custom
|
||||
* implementation of {@link TokenDocumentBehavior}, see {@link JjtreeParserAdapter#tokenBehavior()},
|
||||
* {@link JavaCCTokenizer#tokenBehavior()}
|
||||
*/
|
||||
public class JavaccTokenDocument extends TokenDocument<JavaccToken> {
|
||||
public final class JavaccTokenDocument extends TokenDocument<JavaccToken> {
|
||||
|
||||
private final TokenDocumentBehavior behavior;
|
||||
final StringPool stringPool = new StringPool();
|
||||
private final StringPool stringPool = new StringPool();
|
||||
|
||||
private JavaccToken first;
|
||||
|
||||
@ -143,28 +146,10 @@ public class JavaccTokenDocument extends TokenDocument<JavaccToken> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the lexer should accumulate the image of MORE
|
||||
* tokens into the StringBuilder jjimage. This is useless in our
|
||||
* current implementations. The default returns false, which makes
|
||||
* {@link CharStream#appendSuffix(StringBuilder, int)} a noop.
|
||||
*/
|
||||
public boolean useMarkSuffix() {
|
||||
boolean useMarkSuffix() {
|
||||
return behavior.useMarkSuffix();
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate the escapes of the source document. The default implementation
|
||||
* does not perform any escaping.
|
||||
*
|
||||
* @param text Source doc
|
||||
*
|
||||
* @see EscapeTranslator
|
||||
*/
|
||||
protected TextDocument translate(TextDocument text) throws MalformedSourceException {
|
||||
return behavior.translate(text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Open the document. This is only meant to be used by a Javacc-generated
|
||||
* parser.
|
||||
@ -193,26 +178,18 @@ public class JavaccTokenDocument extends TokenDocument<JavaccToken> {
|
||||
return first.next;
|
||||
}
|
||||
|
||||
final String computeImage(JavaccToken t) {
|
||||
String computeImage(JavaccToken t) {
|
||||
CharSequence imageCs = t.getImageCs();
|
||||
if (imageCs instanceof String) {
|
||||
return (String) imageCs;
|
||||
}
|
||||
return stringPool.toString(imageCs, isImagePooled(t));
|
||||
}
|
||||
|
||||
protected boolean isImagePooled(JavaccToken t) {
|
||||
return behavior.isImagePooled(t);
|
||||
return stringPool.toString(imageCs, behavior.isImagePooled(t));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string that describes the token kind.
|
||||
*
|
||||
* @param kind Kind of token
|
||||
*
|
||||
* @return A descriptive string
|
||||
* @see TokenDocumentBehavior#describeKind(int)
|
||||
*/
|
||||
public final @NonNull String describeKind(int kind) {
|
||||
public @NonNull String describeKind(int kind) {
|
||||
return behavior.describeKind(kind);
|
||||
}
|
||||
|
||||
|
@ -113,6 +113,7 @@ public abstract class EscapeTranslator implements AutoCloseable {
|
||||
return startOffsetInclusive;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
this.bufpos = -1;
|
||||
this.input = null;
|
||||
|
@ -59,7 +59,7 @@ public class CPPTokenizer extends JavaCCTokenizer {
|
||||
|
||||
|
||||
@Override
|
||||
protected TokenDocumentBehavior newTokenDoc() {
|
||||
protected TokenDocumentBehavior tokenBehavior() {
|
||||
return new TokenDocumentBehavior(CppTokenKinds.TOKEN_NAMES) {
|
||||
|
||||
@Override
|
||||
|
@ -21,7 +21,7 @@ public class CppCharStreamTest {
|
||||
@NonNull
|
||||
public CharStream charStreamFor(String source) throws IOException {
|
||||
TextDocument textDoc = TextDocument.readOnlyString(source, TextFile.UNKNOWN_FILENAME, CpdCompat.dummyVersion());
|
||||
return CharStream.create(new CPPTokenizer().newTokenDoc(textDoc));
|
||||
return CharStream.create(textDoc, new CPPTokenizer().tokenBehavior());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -44,7 +44,7 @@ public class JavaTokenizer extends JavaCCTokenizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaccTokenDocument.TokenDocumentBehavior newTokenDoc() {
|
||||
protected JavaccTokenDocument.TokenDocumentBehavior tokenBehavior() {
|
||||
return InternalApiBridge.javaTokenDoc();
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@ public class JSPTokenizer extends JavaCCTokenizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaccTokenDocument.TokenDocumentBehavior newTokenDoc() {
|
||||
protected JavaccTokenDocument.TokenDocumentBehavior tokenBehavior() {
|
||||
return JspParser.getTokenBehavior();
|
||||
}
|
||||
|
||||
|
@ -1,179 +0,0 @@
|
||||
<project name="pmd" default="alljavacc" basedir="../../">
|
||||
|
||||
<property name="javacc-home.path" value="target/lib" />
|
||||
|
||||
<target name="alljavacc"
|
||||
description="Generates all JavaCC aspects within PMD"
|
||||
depends="checkUpToDate,init,plsqljjtree,cleanup" />
|
||||
|
||||
<target name="checkUpToDate">
|
||||
<uptodate property="javaccBuildNotRequired" targetfile="${target}/last-generated-timestamp">
|
||||
<srcfiles dir="etc/grammar" includes="*.jj*"/>
|
||||
</uptodate>
|
||||
<echo message="up to date check: javaccBuildNotRequired=${javaccBuildNotRequired}"/>
|
||||
</target>
|
||||
|
||||
<target name="init" unless="javaccBuildNotRequired">
|
||||
<mkdir dir="${javacc-home.path}" />
|
||||
<copy file="${javacc.jar}" tofile="${javacc-home.path}/javacc.jar" />
|
||||
|
||||
<mkdir dir="${target}"/>
|
||||
<touch file="${target}/last-generated-timestamp"/>
|
||||
</target>
|
||||
|
||||
<target name="cleanup">
|
||||
<delete dir="${javacc-home.path}" />
|
||||
</target>
|
||||
|
||||
<target name="plsqljjtree" description="Generates the PlSQL parser and AST source files" unless="javaccBuildNotRequired">
|
||||
<delete dir="${target}/net/sourceforge/pmd/lang/plsql/ast" />
|
||||
<mkdir dir="${target}/net/sourceforge/pmd/lang/plsql/ast" />
|
||||
<jjtree target="etc/grammar/PldocAST.jjt"
|
||||
outputdirectory="${target}/net/sourceforge/pmd/lang/plsql/ast"
|
||||
javacchome="${javacc-home.path}" />
|
||||
<!-- Ensure generated using CharStream interface -->
|
||||
<javacc static="false"
|
||||
target="${target}/net/sourceforge/pmd/lang/plsql/ast/PldocAST.jj"
|
||||
outputdirectory="${target}/net/sourceforge/pmd/lang/plsql/ast"
|
||||
javacchome="${javacc-home.path}" />
|
||||
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/SimpleNode.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/Node.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/CharStream.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/TokenMgrError.java" />
|
||||
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTArguments.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTComparisonCondition.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTCompoundCondition.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTDatatype.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTExtractExpression.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTFetchStatement.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTFormalParameter.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTIfStatement.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTInnerCrossJoinClause.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTInput.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTMethodDeclaration.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTMethodDeclarator.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTName.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTOuterJoinClause.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTOuterJoinType.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTInlineConstraint.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTOutOfLineConstraint.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTPackageBody.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTPackageSpecification.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTQueryBlock.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTPrimaryPrefix.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTPrimarySuffix.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTProgramUnit.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTRegexpLikeCondition.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTSelectIntoStatement.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTSelectStatement.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTSqlStatement.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTStringLiteral.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTSubqueryOperation.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTTriggerTimingPointSection.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTTriggerUnit.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTTypeMethod.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTTypeSpecification.java" />
|
||||
<delete file="${target}/net/sourceforge/pmd/lang/plsql/ast/ASTVariableOrConstantDeclaratorId.java" />
|
||||
|
||||
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/PLSQLParserVisitor.java"
|
||||
token="SimpleNode"
|
||||
value="PLSQLNode" />
|
||||
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/PLSQLParserTokenManager.java"
|
||||
token="class PLSQLParserTokenManager"
|
||||
value="class PLSQLParserTokenManager extends net.sourceforge.pmd.lang.ast.impl.javacc.AbstractTokenManager" />
|
||||
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/JJTPLSQLParserState.java">
|
||||
<replacetoken>public class</replacetoken>
|
||||
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.Node;
|
||||
|
||||
public class]]></replacevalue>
|
||||
</replace>
|
||||
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/ParseException.java"
|
||||
token="extends Exception"
|
||||
value="extends net.sourceforge.pmd.lang.ast.ParseException" />
|
||||
|
||||
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/Token.java">
|
||||
<replacetoken>public class Token implements java.io.Serializable</replacetoken>
|
||||
<replacevalue><![CDATA[import net.sourceforge.pmd.lang.ast.GenericToken;
|
||||
|
||||
public class Token implements GenericToken, java.io.Serializable]]></replacevalue>
|
||||
</replace>
|
||||
|
||||
<!--Add implementation methods of GenericToken-->
|
||||
<replace file="${target}/net/sourceforge/pmd/lang/plsql/ast/Token.java">
|
||||
<replacetoken>public Token specialToken;</replacetoken>
|
||||
<replacevalue><![CDATA[public Token specialToken;
|
||||
|
||||
@Override
|
||||
public GenericToken getNext() {
|
||||
return next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GenericToken getPreviousComment() {
|
||||
return specialToken;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBeginLine() {
|
||||
return beginLine;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndLine() {
|
||||
return endLine;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBeginColumn() {
|
||||
return beginColumn;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndColumn() {
|
||||
return endColumn;
|
||||
}
|
||||
|
||||
]]></replacevalue>
|
||||
</replace>
|
||||
|
||||
|
||||
<replaceregexp>
|
||||
<regexp pattern="public (?:class|interface)" />
|
||||
<substitution expression="@Deprecated${line.separator}@net.sourceforge.pmd.annotation.InternalApi${line.separator}\0" />
|
||||
<fileset dir="${target}/net/sourceforge/pmd/lang/plsql/ast">
|
||||
<exclude name="AST*.java" />
|
||||
<exclude name="ParseException.java" />
|
||||
<exclude name="*ParserVisitor.java"/>
|
||||
</fileset>
|
||||
</replaceregexp>
|
||||
|
||||
<replaceregexp>
|
||||
<regexp pattern="(?m)\*/\s+(public class ParseException )" />
|
||||
<substitution expression="*${line.separator} * @deprecated Use superclass {@link net.sourceforge.pmd.lang.ast.ParseException}${line.separator} */${line.separator}@Deprecated${line.separator}@net.sourceforge.pmd.annotation.InternalApi${line.separator}\1" />
|
||||
<fileset file="${target}/net/sourceforge/pmd/lang/plsql/ast/ParseException.java"/>
|
||||
</replaceregexp>
|
||||
|
||||
<!-- deprecate/internalize AST constructors -->
|
||||
<replaceregexp>
|
||||
<regexp pattern=" public AST\w+\(int id\) \{" />
|
||||
<substitution expression=" @Deprecated${line.separator} @net.sourceforge.pmd.annotation.InternalApi${line.separator}\0" />
|
||||
<fileset dir="${target}/net/sourceforge/pmd/lang/plsql/ast">
|
||||
<include name="AST*.java" />
|
||||
</fileset>
|
||||
</replaceregexp>
|
||||
<replaceregexp>
|
||||
<regexp pattern=" public AST\w+\(PLSQLParser p, int id\) \{" />
|
||||
<substitution expression=" @Deprecated${line.separator} @net.sourceforge.pmd.annotation.InternalApi${line.separator}\0" />
|
||||
<fileset dir="${target}/net/sourceforge/pmd/lang/plsql/ast">
|
||||
<include name="AST*.java" />
|
||||
</fileset>
|
||||
</replaceregexp>
|
||||
</target>
|
||||
</project>
|
@ -4,13 +4,10 @@
|
||||
|
||||
package net.sourceforge.pmd.lang.plsql.ast;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import net.sourceforge.pmd.lang.ast.ParseException;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument.TokenDocumentBehavior;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter;
|
||||
import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream;
|
||||
|
||||
public class PLSQLParser extends JjtreeParserAdapter<ASTInput> {
|
||||
|
||||
|
@ -32,7 +32,7 @@ public class PythonTokenizer extends JavaCCTokenizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JavaccTokenDocument.TokenDocumentBehavior newTokenDoc() {
|
||||
protected JavaccTokenDocument.TokenDocumentBehavior tokenBehavior() {
|
||||
return TOKEN_BEHAVIOR;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ public class VfTokenizer extends JavaCCTokenizer {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TokenDocumentBehavior newTokenDoc() {
|
||||
protected TokenDocumentBehavior tokenBehavior() {
|
||||
return new JavaccTokenDocument.TokenDocumentBehavior(VfTokenKinds.TOKEN_NAMES,
|
||||
EscapeTranslator.translatorFor(JavaEscapeTranslator::new));
|
||||
}
|
||||
|
Reference in New Issue
Block a user