Scala 2.10 AST'lerde bir eleman için ardışık olarak arama yapmanın en iyi yolu nedir?Scala İçinde Arama 2.10 ASTs
ağaç power.trees(code)
veya mirror.mkToolBox().parseExpr(code)
Edit bir sonucu olabilir. 2.10.0-RC1'de parseExpr
, parse
olarak yeniden adlandırılmıştır.
Elimde kullandığım somut kullanım durumu, bir yöntem/yöntem koduyla bir yöntem kodunu, yöntem adına göre ( ) ayıklamaktaysa da, daha genel bir şekilde formüle edilirse sorunun başkaları için daha uygun olacağını varsayalım. .
Bağlantılı kod, gövde ile karşılaştırıldığında oldukça eskidir. İşte doğru bağlantılar: 1) ağaç AST sınıfları: https://github.com/scala/scala/blob/2.10.x/src/library/scala/reflect/base/Trees.scala, 2) transformatörler ve traverserler: https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606 –
Oops, teşekkürler ... –
Burada bir transformatör örneği: https://github.com/scala/scala/blob/46d57d47e81c8794a9a3594e080576788cc92324/src/compiler/scala/reflect/reify/phases/Reshape.scala (kod kesinlikle bir temizleme kullanır, ancak bunu görmezden gelmek çok güzel). 'Super.transform' ve' copyAttrs' parçalarını not edin. –