Я не уверен, что категорически говорю, что вам нужно писать плагин для использования ASTVisitor, но это самый простой способ. Найдите простой код плагина, который создает кнопку или что-то, что вы можете нажать и запустить запуск вашего кода. Существует пример плагина в среде разработки плагинов, который делает именно это (загрузите соответствующую версию Eclipse, если у вас ее нет).
Создание проекта плагина:
Для создания проекта плагин получил в свой пакет проводника и щелкните правой кнопкой мыши или откройте меню Файл. Выберите верхний элемент «новый ...», откроется подменю, в котором вы добавите «другое ...». Открывается диалоговое окно "new". Откройте папку «plug-in development» и выберите «plug-in project».
Нажмите рядом несколько раз, введите необходимую информацию, пока не дойдете до следующей страницы:
Здесь первый образец «Hello World» создает меню в своем 2-го уровня затмение. Запустите затмение 2-го уровня, перейдя в plugin.xml нового проекта, перейдите к обзору вкладок.
Вы увидите страницу, как это:
нажмите «запустить приложение» затмение, и другое затмение будет запущен с новым плагином и работает. Нажмите кнопку действия примера в этом затмении второго уровня, чтобы увидеть какое-то сладкое действие.
Теперь вы можете заменить код действия тем, что хотите. В этом случае создание и запуск операции посещения.
Чтобы создать ASTVisitor:
Создать класс, который расширяет ASTVisitor, так что вы можете добавить свой собственный код.
- preVisit (ASTNode) делает предзаказ обход AST
- postVisit (ASTNode) делает postorder обход АСТ
- посещения (...) инспектирует определенный узел
Добавьте что-нибудь подобное вашему гостю:
private void startVisit(IFile file) {
ICompilationUnit icu = JavaCore.createCompilationUnitFrom(file);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setSource(icu);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(this);
}
Теперь добавьте код вашей кнопки, нажмите действие, которое создает посетителя й называет эту функцию:
MyVisitor mv = new MyVisitor();
mv.startVisit(...);
получить IFile(здесь вы должны быть плагин или вы получите сообщение об ошибке вы сообщили):
ResourcesPlugin.getWorkspace().getRoot().getProject(...).getFile(...);
Замените соответствующие названия проектов и файлов (строки) для многоточия.
Теперь каждый раз, когда вы нажимаете кнопку, файл посещается, и введенный вами код будет выполнен в соответствующие моменты времени (очень просто, чтобы просто распечатать каждый ASTNode в pre или postvisit).
Но как мне создать IFile? Мне все еще нужно «IWorkspaceRoot root = ResourcesPlugin.getWorkspace(). GetRoot();» правильно? Но это сделает меня «Исключение в потоке» main «java.lang.IllegalStateException: Рабочая область закрыта». Нужно ли создавать проект плагина в eclipse для этого? В настоящее время я использую main для запуска. Как создать проект плагина? – yeeen