📄 javatokenizer.java
字号:
/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html*/package net.sourceforge.pmd.cpd;import net.sourceforge.pmd.TargetJDK1_4;import net.sourceforge.pmd.ast.JavaParserTokenManager;import net.sourceforge.pmd.ast.Token;import java.io.StringReader;public class JavaTokenizer implements Tokenizer { public void tokenize(SourceCode tokens, Tokens tokenEntries) { StringBuffer sb = tokens.getCodeBuffer(); /* I'm doing a sort of State pattern thing here where this goes into "discarding" mode when it hits an import or package keyword and goes back into "accumulate mode when it hits a semicolon. This could probably be turned into some objects. */ JavaParserTokenManager tokenMgr = new TargetJDK1_4().createJavaParserTokenManager(new StringReader(sb.toString())); Token currToken = tokenMgr.getNextToken(); boolean discarding = false; while (currToken.image != "") { if (currToken.image.equals("import") || currToken.image.equals("package")) { discarding = true; currToken = tokenMgr.getNextToken(); continue; } if (discarding && currToken.image.equals(";")) { discarding = false; } if (discarding) { currToken = tokenMgr.getNextToken(); continue; } if (!currToken.image.equals(";")) { tokenEntries.add(new TokenEntry(currToken.image, tokens.getFileName(), currToken.beginLine)); } currToken = tokenMgr.getNextToken(); } tokenEntries.add(TokenEntry.getEOF()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -