github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/ast/walk.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package ast
     6  
     7  // [Walk] によって遭遇したノードごとに Visitor の Visit メソッドが呼び出されます。
     8  // もし結果の visitor w が nil でない場合、[Walk] はノードの各子ノードを visitor w と共に訪問し、その後に w.Visit(nil) の呼び出しを行います。
     9  type Visitor interface {
    10  	Visit(node Node) (w Visitor)
    11  }
    12  
    13  // WalkはASTを深さ優先でトラバースします。最初にv.Visit(node)を呼び出します。nodeはnilであってはいけません。v.Visit(node)から返されるビジターwがnilでない場合、Walkはnodeのnilでない子要素ごとに再帰的にビジターwを用いて呼び出され、その後にw.Visit(nil)が呼び出されます。
    14  func Walk(v Visitor, node Node)
    15  
    16  // InspectはASTを深さ優先順で走査します:まずf(node)を呼び出します。nodeはnilであってはなりません。fがtrueを返す場合、Inspectはnodeの非nilな子のそれぞれに対して再帰的にfを呼び出し、その後にf(nil)を呼び出します。
    17  func Inspect(node Node, f func(Node) bool)