2009-09-03 1 views
1

Я изучаю, как сделать ASTVisitor для проекта, поэтому я начал использовать Eclipse, у которого есть полный API для этого.ASTVisitor in Eclipse

Я скачал упакованном Пример проекта с этого сайта: http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation_AST/index.html

Но я понял, что эти коды не имеют основной метод(), но я могу запустить программу! Кто-нибудь знает почему? [qn 1]

Однако коды, кажется, слишком скомпилированы для работы, и инструкции по выполнению sth basic не очень понятны.

Так я и продолжал смотреть на это: http://www.vogella.de/articles/EclipsePreferences/article.html

Каждый знает, как я могу написать основной метод для вызова выполнения (ExecutionEvent событие)? - предоставить примерный фрагмент кода? [qn 2] Я не знаю, как использовать ExecutionEvent ...

Я продолжал получать «Исключение в потоке» main «java.lang.IllegalStateException: Workspace is closed». даже если я удалю параметр для Execution Event (также нужно удалить часть extends) или использовать часть кода в моей основной. Похоже, что это связано с «ResourcesPlugin» в «IWorkspaceRoot root = ResourcesPlugin.getWorkspace(). GetRoot();». Кто-нибудь знает почему? [qn 3]

Спасибо!

ответ

3

Я не уверен, что категорически говорю, что вам нужно писать плагин для использования ASTVisitor, но это самый простой способ. Найдите простой код плагина, который создает кнопку или что-то, что вы можете нажать и запустить запуск вашего кода. Существует пример плагина в среде разработки плагинов, который делает именно это (загрузите соответствующую версию Eclipse, если у вас ее нет).

Создание проекта плагина:

Для создания проекта плагин получил в свой пакет проводника и щелкните правой кнопкой мыши или откройте меню Файл. Выберите верхний элемент «новый ...», откроется подменю, в котором вы добавите «другое ...». Открывается диалоговое окно "new". Откройте папку «plug-in development» и выберите «plug-in project».

alt text

Нажмите рядом несколько раз, введите необходимую информацию, пока не дойдете до следующей страницы:

alt text

Здесь первый образец «Hello World» создает меню в своем 2-го уровня затмение. Запустите затмение 2-го уровня, перейдя в plugin.xml нового проекта, перейдите к обзору вкладок.

Вы увидите страницу, как это:

alt text

нажмите «запустить приложение» затмение, и другое затмение будет запущен с новым плагином и работает. Нажмите кнопку действия примера в этом затмении второго уровня, чтобы увидеть какое-то сладкое действие.

Теперь вы можете заменить код действия тем, что хотите. В этом случае создание и запуск операции посещения.

Чтобы создать 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).

+0

Но как мне создать IFile? Мне все еще нужно «IWorkspaceRoot root = ResourcesPlugin.getWorkspace(). GetRoot();» правильно? Но это сделает меня «Исключение в потоке» main «java.lang.IllegalStateException: Рабочая область закрыта». Нужно ли создавать проект плагина в eclipse для этого? В настоящее время я использую main для запуска. Как создать проект плагина? – yeeen

1

Ваш проект должен быть проектом плагина Eclipse, а не простым Java-проектом с использованием метода main().

Вот предложение: взгляните на инструмент AST View. Это инструмент, предназначенный для проверки AST. Работайте с источником, запускайте его, отлаживайте, ставьте точки останова, изменяйте код, смотрите, как он работает.

Также убедитесь, что у вас есть все источники JDT. Существует много примеров ASTVisitors (просто не используйте внутренние методы).

+0

Я знаю, что это было много лет спустя, но мне было трудно найти правильные узлы для посещения пользовательского Java-валидатора (подумайте «правильно используя пользовательскую структуру»). Я потратил несколько часов на проб и ошибок с отладчиком, пытаясь найти нужные узлы для посещения и что с этим делать. Этот плагин сделал это, чтобы я мог сделать то же самое в представлении Eclipse и потратить часть времени. Большое спасибо за указание на это. – 2013-10-31 20:16:09

 Смежные вопросы

  • Нет связанных вопросов^_^