public ISourceRange findIdentifier(ICompilationUnit theCU, int offset, int length) throws JavaModelException {
return findTokenOfType(theCU, ITerminalSymbols.TokenNameIdentifier, offset, length);
}
public ISourceRange findTokenOfType(ICompilationUnit theCU, int tokenType, int offset, int length) throws JavaModelException {
IScanner scanner = ToolFactory.createScanner(false, false, false, false);
scanner.setSource(theCU.getSource().toCharArray());
scanner.resetTo(offset, offset + length);
int token;
try {
while ((token = scanner.getNextToken()) != ITerminalSymbols.TokenNameEOF) {
if (token == tokenType) {
return new SourceRange(scanner.getCurrentTokenStartPosition(),
scanner.getCurrentTokenEndPosition() + 1 - scanner.getCurrentTokenStartPosition());
}
}
} catch (InvalidInputException e) {
throw new RuntimeException("Error finding token: "+e.getMessage(), e);
}