Jaki jest najlepszy sposób rekurencyjnego wyszukiwania elementu w scala 2.10 AST?Wyszukiwanie wewnątrz scala 2.10 ASTs
Drzewa mogą być wynikiem power.trees(code)
lub mirror.mkToolBox().parseExpr(code)
Edytuj. W wersji 2.10.0-RC1 parseExpr
zmieniono nazwę na parse
.
Konkretnym przypadkiem użycia, który mam, jest wyodrębnianie kodu metody z danego kodu klasy/obiektu według nazwy metody, , ale zakładam, że pytanie byłoby bardziej istotne dla innych, jeśli sformułowane w bardziej ogólny sposób .
Połączony kod jest dość przestarzały w porównaniu z pniem. Oto poprawne linki: 1) klasy AST drzewa: https://github.com/scala/scala/blob/2.10.x/src/library/scala/reflect/base/Trees.scala, 2) transformatory i traversers: https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606 –
Ups, thanks ... –
Oto przykład transformatora: https://github.com/scala/scala/blob/46d57d47e81c8794a9a3594e080576788cc92324/src/compiler/scala/reflect/reify/phases/Reshape.scala (kod zdecydowanie użyłby czyszczenia, ale jest zbyt miłym przykładem, aby go zignorować). Zwróć uwagę na części 'super.transform' i' copyAttrs'. –