11package util .parse
22
3-
3+ import incremental . _
44import com .github .javaparser .JavaParser
55import better .files ._
6- import com .github .javaparser .ast .{Node => ParseNode }
6+ import com .github .javaparser .ast .`type` .ClassOrInterfaceType
7+ import com .github .javaparser .ast .body .{ClassOrInterfaceDeclaration , ConstructorDeclaration , FieldDeclaration , MethodDeclaration }
8+ import com .github .javaparser .ast .expr ._
9+ import com .github .javaparser .ast .{Node => ParseNode , _ }
10+ import com .github .javaparser .ast .stmt ._
11+
12+ import scala .collection .immutable .Queue
713
814
915/**
@@ -15,11 +21,41 @@ object Parse extends App {
1521}
1622
1723
18- class MyVisitor extends NodeVisitor with FoldVisitor [Int ] with PrintlnVisitor {
19- def init (): Int = 0
24+ class MyVisitor extends NodeVisitor with FoldVisitor [Queue [Node .Node ]] with PrintlnVisitor {
25+ type Q = Queue [Node .Node ]
26+
27+ def init (): Q = Queue ()
2028
21- def fold (n : ParseNode , s : Int ): Int = {
22- println(s)
23- s + 1
29+ def fold (n : ParseNode , q : Q ): Q = n match {
30+ case im : ImportDeclaration =>
31+ q
32+ case c : ClassOrInterfaceDeclaration =>
33+ q
34+ case ctor : ConstructorDeclaration =>
35+ q
36+ case supr : ExplicitConstructorInvocationStmt =>
37+ q
38+ case fd : FieldDeclaration =>
39+ q
40+ case md : MethodDeclaration =>
41+ q
42+ case nu : ObjectCreationExpr =>
43+ q
44+ case ret : ReturnStmt =>
45+ q
46+ case point : FieldAccessExpr =>
47+ q
48+ case asgn : AssignExpr =>
49+ q
50+ case call : MethodCallExpr =>
51+ q
52+ case lam : LambdaExpr =>
53+ q
54+ case cast : CastExpr =>
55+ q
56+ case self : ThisExpr =>
57+ q
58+ case _ =>
59+ q
2460 }
2561}
0 commit comments