| 342 |      1 | #!/usr/bin/env amm
 | 
|  |      2 | 
 | 
|  |      3 | import $ivy.`org.scalameta::scalameta:4.3.20`
 | 
| 341 
Christian Urban <christian.urban@kcl.ac.uk> parents: diff
changeset |      4 | 
 | 
| 
Christian Urban <christian.urban@kcl.ac.uk> parents: diff
changeset |      5 | import scala.meta._
 | 
| 342 |      6 | import ammonite.ops._
 | 
| 341 
Christian Urban <christian.urban@kcl.ac.uk> parents: diff
changeset |      7 | 
 | 
| 342 |      8 | @main
 | 
|  |      9 | def main(s: String) = {
 | 
|  |     10 |   val file = read(pwd / RelPath(s))
 | 
|  |     11 |   val tree = file.parse[Source].get
 | 
|  |     12 |   val vrs = tree.collect {
 | 
|  |     13 |       case Defn.Var(_, x, _, _) => x.toString
 | 
|  |     14 |       case Term.Return(t) => t.toString 
 | 
|  |     15 |       }    
 | 
|  |     16 |   println(vrs.mkString("\n"))
 | 
|  |     17 | }
 | 
|  |     18 | 
 | 
|  |     19 | 
 | 
|  |     20 | /*
 | 
|  |     21 | q"val x = 2".traverse {
 | 
|  |     22 |   case node =>
 | 
|  |     23 |     println(s"${node.productPrefix}: $node")
 | 
|  |     24 | }
 | 
|  |     25 | */
 | 
|  |     26 | 
 | 
|  |     27 | //https://scalameta.org/docs/trees/guide.html#custom-traversals
 | 
|  |     28 | 
 | 
|  |     29 | 
 | 
|  |     30 | //https://geirsson.com/post/2016/02/scalameta/ |