line.append('\t');
line.append(typeOfIdentifier);
line.append(identifier);
- // line.append("\to"); // Offset
- // line.append(fScanner.getCurrentTokenStartPosition());
}
/**
System.out.println(fScanner.toStringAction(fToken));
}
return;
- // } catch (InvalidInputException e) {
- // // ignore errors
- // // e.printStackTrace();
- // }
- // fToken = TokenNameERROR;
}
+ private void skipComments()
+ {
+ try {
+ getNextToken();
+ while (fToken == TokenNameCOMMENT_BLOCK || fToken == TokenNameCOMMENT_PHPDOC) {
+ getNextToken();
+ }
+ } catch (InvalidInputException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+
private void parseDeclarations(char[] parent, StringBuffer buf,
boolean goBack) {
char[] ident;
boolean hasModifiers = false;
int phpdocOffset = -1;
int phpdocLength = -1;
+
try {
while (fToken != TokenNameEOF && fToken != TokenNameERROR) {
phpdocOffset = -1;
}
}
if (fToken == TokenNamefunction) {
- getNextToken();
+ skipComments();
if (fToken == TokenNameAND) {
getNextToken();
}
phpdocOffset, phpdocLength);
}
}
- getNextToken();
+ skipComments();
parseDeclarations(null, buf, true);
}
} else if (fToken == TokenNameclass
|| fToken == TokenNameinterface) {
- getNextToken();
+ skipComments();
if (fToken == TokenNameIdentifier) {
ident = fScanner.getCurrentIdentifierSource();
addIdentifierInformation('c', ident, buf,
phpdocOffset, phpdocLength);
- getNextToken();
+ skipComments();
if (fToken == TokenNameextends) {
- getNextToken();
+ skipComments();
while (fToken == TokenNameIdentifier) {
ident = fScanner
.getCurrentIdentifierSource();
// extends ident
addIdentifierInformation('e', ident, buf);
- getNextToken();
- if (fToken == TokenNameCOMMA) {
- getNextToken();
+ skipComments();
+ if (fToken == TokenNameCOMMA) {
+ skipComments();
}
}
}
if (fToken == TokenNameimplements) {
- getNextToken();
+ skipComments();
while (fToken == TokenNameIdentifier) {
ident = fScanner
.getCurrentIdentifierSource();
// implements ident
addIdentifierInformation('e', ident, buf);
- getNextToken();
+ skipComments();
if (fToken == TokenNameCOMMA) {
- getNextToken();
+ skipComments();
+// getNextToken();
}
}
}
|| fToken == TokenNamepublic
|| fToken == TokenNameprotected
|| fToken == TokenNameprivate) {
- getNextToken();
+ skipComments();
}
while (fToken == TokenNameVariable) {
ident = fScanner.getCurrentIdentifierSource();
ident.length - 1);
addClassVariableInformation('v', classVariable,
buf, phpdocOffset, phpdocLength);
- getNextToken();
+ skipComments();
if (fToken == TokenNameCOMMA) {
- getNextToken();
+ skipComments();
}
}
} else if (!hasModifiers && fToken == TokenNameIdentifier) {
// TODO Auto-generated catch block
e.printStackTrace();
}
+
}
synchronized public void parseIdentifiers(char[] charArray,
StringBuffer buf) {
char[] ident;
String identifier;
- int counter = 0;
boolean hasModifiers = false;
int phpdocOffset = -1;
int phpdocLength = -1;
fScanner.setSource(charArray);
fScanner.setPHPMode(false);
fToken = TokenNameEOF;
+
try {
getNextToken();
while (fToken != TokenNameEOF) { // && fToken !=
- // TokenNameERROR) {
+ // TokenNameERROR) {
phpdocOffset = -1;
hasModifiers = false;
- if (fToken == TokenNameCOMMENT_PHPDOC) {
+ switch (fToken) {
+ case TokenNameCOMMENT_PHPDOC:
phpdocOffset = fScanner.getCurrentTokenStartPosition();
phpdocLength = fScanner.getCurrentTokenEndPosition()
- fScanner.getCurrentTokenStartPosition() + 1;
if (fToken == TokenNameEOF || fToken == TokenNameERROR) {
break;
}
- }
- if (fToken == TokenNamefunction) {
- getNextToken();
+ break;
+
+ case TokenNamefunction:
+ skipComments();
if (fToken == TokenNameAND) {
getNextToken();
}
ident = fScanner.getCurrentIdentifierSource();
addIdentifierInformation('f', ident, buf,
phpdocOffset, phpdocLength);
- getNextToken();
+ skipComments();
+ if (fToken == TokenNameLPAREN) {
+ skipComments();
+ do {
+ if (fToken == TokenNameVariable) {
+ ident = fScanner.getCurrentIdentifierSource();
+ addIdentifierInformation('v', ident, buf,
+ phpdocOffset, phpdocLength);
+ skipComments();
+ if (fToken == TokenNameCOMMA) {
+ skipComments();
+ }
+ }
+/* skipComments();
+ if (fToken == TokenNameCOMMA) {
+ skipComments();
+ }*/
+ } while (fToken != TokenNameRPAREN );
+ }
parseDeclarations(null, buf, true);
}
- } else if (fToken == TokenNameclass
- || fToken == TokenNameinterface) {
- getNextToken();
+ break;
+
+ case TokenNameclass:
+ case TokenNameinterface:
+ skipComments();
if (fToken == TokenNameIdentifier) {
ident = fScanner.getCurrentIdentifierSource();
addIdentifierInformation('c', ident, buf,
phpdocOffset, phpdocLength);
- getNextToken();
+ skipComments();
if (fToken == TokenNameextends) {
- getNextToken();
+ skipComments();
while (fToken == TokenNameIdentifier) {
ident = fScanner
.getCurrentIdentifierSource();
// extends ident
addIdentifierInformation('e', ident, buf);
- getNextToken();
+ skipComments();
if (fToken == TokenNameCOMMA) {
- getNextToken();
+ skipComments();
}
}
}
if (fToken == TokenNameimplements) {
- getNextToken();
+ skipComments();
while (fToken == TokenNameIdentifier) {
ident = fScanner
.getCurrentIdentifierSource();
// implements ident
addIdentifierInformation('e', ident, buf);
- getNextToken();
+ skipComments();
if (fToken == TokenNameCOMMA) {
- getNextToken();
+ skipComments();
}
}
}
}
parseDeclarations(ident, buf, true);
}
- } else if (fToken == TokenNameVariable) {
+ break;
+
+ case TokenNameVariable:
// global variable
ident = fScanner.getCurrentIdentifierSource();
addIdentifierInformation('g', ident, buf, phpdocOffset,
phpdocLength);
getNextToken();
- } else if (!hasModifiers && fToken == TokenNameIdentifier) {
- ident = fScanner.getCurrentIdentifierSource();
- getNextToken();
- if (ident.length == 6 && ident[0] == 'd'
- && ident[1] == 'e' && ident[2] == 'f'
- && ident[3] == 'i' && ident[4] == 'n'
- && ident[5] == 'e') {
- if (fToken == TokenNameLPAREN) {
- getNextToken();
- if (fToken == TokenNameStringDoubleQuote) {
- ident = fScanner
- .getCurrentStringLiteralSource();
- addIdentifierInformation('d', ident, buf,
- phpdocOffset, phpdocLength);
- getNextToken();
- } else if (fToken == TokenNameStringSingleQuote) {
- ident = fScanner
- .getCurrentStringLiteralSource();
- addIdentifierInformation('d', ident, buf,
- phpdocOffset, phpdocLength);
- getNextToken();
- }
- }
- }
- } else {
+ break;
+
+ default:
getNextToken();
}
+
}
} catch (InvalidInputException e) {
// ignore errors
}
}
}
-
+
class StringComparator implements Comparator {
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
*
*/
public void addFile(IFile fileToParse) {
- // InputStream iStream;
LineCreator lineCreator = createLineCreator();
try {
addInputStream(new BufferedInputStream(fileToParse.getContents()),
fileToParse.getProjectRelativePath().toString(),
- lineCreator);
+ lineCreator, fileToParse.getCharset());
} catch (CoreException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
* @throws CoreException
*/
public void addInputStream(InputStream stream, String filePath,
- LineCreator lineCreator) throws CoreException {
+ LineCreator lineCreator, String charset) throws CoreException {
try {
StringBuffer lineBuffer = new StringBuffer();
lineBuffer.append(filePath);
- int lineLength = lineBuffer.length();
lineCreator.parseIdentifiers(Util.getInputStreamAsCharArray(stream,
- -1, null), lineBuffer);
- // if (lineLength != lineBuffer.length()) {
- // always add the file for Open Include Action
+ -1, charset), lineBuffer);
addLine(lineBuffer.toString());
- // }
} catch (IOException e) {
e.printStackTrace();
} finally {
stream.close();
}
} catch (IOException e) {
+ // do nothing
}
}
}