Frage

Ich brauche den AST für die aktuelle Auswahl im Java-Editor fo Eclipse zu bekommen. Grundsätzlich mag ich den ausgewählten Java-Code in einer anderen Form konvertieren (vielleicht eine andere Sprache oder XML etc ..). Also ich denke, ich brauche das AST für die Auswahl zu bekommen. Derzeit bin ich in der Lage, die Auswahl als einfacher Text zu erhalten. Gibt es einen Ausweg für ein solches Problem? Danke schon !!

War es hilfreich?

Lösung

Es gibt eine Reihe von praktischen Tools für JDT Plugin-Entwickler, vor allem die AST Sehen Sie die so ziemlich das tut, was Sie suchen. Also, alles, was Sie tun müssen, ist, den Code für AST-Ansicht zu packen und überprüfen, wie es gemacht wird.

Das Plugin kann aus der folgenden Update-Site installiert werden: http: // www. eclipse.org/jdt/ui/update-site

JDT ASTView

Verwenden Sie das Plug-Spion (lesen Sie mehr darüber in dieser Artikel ) startet in die Ansicht Klassen zu graben.

Sie reisen in weniger trivial (und oft ohne Papiere) Bereichen JDT, die Entwicklung von Code Fähigkeiten Graben wird erheblich die Leistung verbessern.

Andere Tipps

Der folgende Code liefert Ihnen den AST-Knoten des aktuellen ausgewählten Code aus dem CompilationUnitEditor.

        ITextEditor editor = (ITextEditor) HandlerUtil.getActiveEditor(event);
        ITextSelection sel  = (ITextSelection) editor.getSelectionProvider().getSelection();
        ITypeRoot typeRoot = JavaUI.getEditorInputTypeRoot(editor.getEditorInput());
        ICompilationUnit icu = (ICompilationUnit) typeRoot.getAdapter(ICompilationUnit.class);
        CompilationUnit cu = parse(icu);
        NodeFinder finder = new NodeFinder(cu, sel.getOffset(), sel.getLength());
        ASTNode node = finder.getCoveringNode();

Die JavaUI ist der Einstiegspunkt in der JDT UI-Plugin.

Verwenden Sie die Methode org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.getActiveEditorJavaInput(). Das gibt das Java-Element in dem aktuellen aktiven Editor bearbeitet. Der Rückgabetyp ist org.eclipse.jdt.core.IJavaElement, aber wenn es eine Java-Datei ist, die bearbeitet ist, wird das Laufzeittyp org.eclipse.jdt.core.ICompilationUnit werden.

den AST zu erhalten, das heißt, die org.eclipse.jdt.core.dom.CompilationUnit, können Sie den folgenden Code verwenden:

public static CompilationUnit getCompilationUnit(ICompilationUnit icu,
        IProgressMonitor monitor) {
    final ASTParser parser = ASTParser.newParser(AST.JLS3);
    parser.setSource(icu);
    parser.setResolveBindings(true);
    final CompilationUnit ret = (CompilationUnit) parser.createAST(monitor);
    return ret;
}

Beachten Sie, dass dies für Java ist> = 5. Für frühere Versionen müssen Sie das Argument wechseln ASTParser.newParser().

Ich weiß, dass diese Frage beantwortet wurde, aber ich wollte Licht auf der EditorUtility Klasse vergießen, die hier ganz nützlich ist.

IIRC, jeder Knoten in dem Eclipse-AST enthält einen Offset. Alles, was Sie tun müssen, ist die Offsets für den Teil des Codes interessiert Sie sind zu berechnen, in dem AST dann gehen die Knoten innerhalb dieser Offsets zu wählen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top