[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[jdt-core-dev] Infinite loop in scanner
|
(since bugzilla is down)
The following snippet does not complete. Problem is located in Scanner,
looping for ever since never getting beyond EOF_POSITION
(Integer.MAX_VALUE).
import java.io.*;
import org.eclipse.jdt.core.compiler.InvalidInputException;
import org.eclipse.jdt.internal.compiler.parser.Scanner;
import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
import org.eclipse.jdt.internal.compiler.util.Util;
public class Scan {
public static void main(String[] args) {
try{
char[] content = Util.getFileCharContent(new File(
"d:/eclipse/workspaces/dev3.1/plugins/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java"
), null);
Scanner scanner = new Scanner();
scanner.setSource(content);
long start = System.currentTimeMillis();
int tokenCount = 0;
for (int i = 0; i < 800; i++ ) {
// scanner.resetTo(0, content.length);
scanner.resetTo(0, Integer.MAX_VALUE);
tokenize: while (true) {
int token = scanner.getNextToken();
switch (token) {
case TerminalTokens.TokenNameEOF :
break tokenize;
}
tokenCount++;
}
}
long duration = System.currentTimeMillis() - start;
System.out.print(tokenCount + " tokens read in " + duration + "
ms");
System.out.println(", " + ((tokenCount / duration) / 1000.00) +
" Mtokens/s");
} catch(InvalidInputException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
}
}