¿Cuál es la mejor forma de buscar recursivamente un elemento en scala 2.10 ASTs?Búsqueda dentro de scala 2.10 ASTs
Los árboles podrían ser el resultado de power.trees(code)
o mirror.mkToolBox().parseExpr(code)
Editar. En 2.10.0-RC1 parseExpr
se ha cambiado el nombre a parse
.
El caso de uso concreto que tengo es extraer el código de un método de un código de clase/objeto dado por nombre de método, pero supongo que la pregunta sería más relevante para otros si se formula de una manera más genérica .
El código vinculado es bastante obsoleto en comparación con el enlace troncal. Aquí están los enlaces correctos: 1) árbol clases AST: https://github.com/scala/scala/blob/2.10.x/src/library/scala/reflect/base/Trees.scala, 2) transformadores y travelling: https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606 –
Vaya, gracias ... –
Aquí hay un ejemplo de un transformador: https://github.com/scala/scala/blob/46d57d47e81c8794a9a3594e080576788cc92324/src/compiler/scala/reflect/reify/phases/Reshape.scala (el código definitivamente usaría una limpieza, pero es demasiado lindo como para ignorarlo). Tenga en cuenta las partes 'super.transform' y' copyAttrs'. –