Я использую этот javaparser https://github.com/javaparser/javaparser, чтобы разобрать много исходных кодов java для некоторых пользователей github, чтобы сделать из них некоторую статистику (это для университетского проекта). Все, кажется, работает хорошо, но в какой-то момент, определенный исходный код выдает эту ошибку:javaparser - Лексическая ошибка: <EOF> after: ""
Exception in thread "main" com.github.javaparser.TokenMgrError: Lexical error at line 6, column 2. Encountered: <EOF> after : ""
Это то, что написано в этом файле:
public class Test {
/**<caret>
public void foo() {
}
}
Это, как я разобрать файл:
...
new NodeIterator(new NodeIterator.NodeHandler() {
@Override
public boolean handle(Node node) {
...
};
}).explore(JavaParser.parse(file));
...
Это класс NodeIterator:
public class NodeIterator {
public interface NodeHandler {
boolean handle(Node node);
}
private NodeHandler nodeHandler;
public NodeIterator(NodeHandler nodeHandler) {
this.nodeHandler = nodeHandler;
}
public void explore(Node node) {
if (nodeHandler.handle(node)) {
for (Node child : node.getChildrenNodes()) {
explore(child);
}
}
}
}
Я понял проблему, но эта проблема останавливает весь синтаксический анализ. У меня есть много файлов для синтаксического анализа внутри a, поэтому как я могу сделать, чтобы синтаксический анализ других файлов? Или есть инструмент для проверить, есть ли java-файл «хорошо написанный» перед его разоблачением?
Итак, есть ли способ проверить, если файл я разборе хорошо написано или пропустить ошибку и продолжает анализировать? –
Не похоже, что эта библиотека имеет возможности восстановления после ошибки синтаксического анализа маркера и в любом случае попадает в конец файла, в то время как токенизация трудно восстановить. Лучше всего либо игнорировать остальную часть файла, либо полный файл. –
Моя проблема заключается в том, что я разбираю много файлов, и каждая из этих ошибок блокирует весь синтаксический анализ, так что вы знаете, как продолжать анализировать остальные файлы или, может быть, инструмент, чтобы проверить, хорошо ли написан файл? или нет? –