Wie kann man rekursiv nach einem Element in scala 2.10 ASTs suchen?Suchen in scala 2.10 ASTs
Die Bäume könnten eine Folge der power.trees(code)
oder mirror.mkToolBox().parseExpr(code)
bearbeiten sein. In 2.10.0-RC1 wurde parseExpr
in parse
umbenannt. Der konkrete Anwendungsfall, den ich habe, ist das Extrahieren des Codes einer Methode aus einem gegebenen Klassen-/Objektcode nach Methodenname, , aber ich nehme an, dass die Frage relevanter für andere wäre, wenn sie allgemeiner formuliert wäre .
Der verknüpfte Code ist im Vergleich zur Amtsleitung ziemlich veraltet. Hier sind die richtigen Links: 1) Baum AST-Klassen: https://github.com/scala/scala/blob/2.10.x/src/library/scala/reflect/base/Trees.scala, 2) Transformatoren und Schiebebühnen: https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606 –
Hoppla, danke ... –
Hier ist ein Beispiel für einen Transformator: https://github.com/scala/scala/blob/46d57d47e81c8794a9a3594e080576788cc92324/src/compiler/scala/reflect/reigy/phases/Reshape.scala (der Code würde definitiv eine Bereinigung verwenden, aber es ist zu nett von einem Beispiel, um es zu ignorieren). Beachten Sie die Teile "super.transform" und "copyAttrs". –