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)