github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/ast/print.go (about) 1 // Copyright 2010 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 // このファイルにはASTの出力サポートが含まれています。 6 7 package ast 8 9 import ( 10 "github.com/shogo82148/std/go/token" 11 "github.com/shogo82148/std/io" 12 "github.com/shogo82148/std/reflect" 13 ) 14 15 // 出力を制御するために、[Fprint] にFieldFilterを指定することができます。 16 type FieldFilter func(name string, value reflect.Value) bool 17 18 // NotNilFilterは、nilでないフィールド値に対してtrueを返します。 19 // それ以外の場合はfalseを返します。 20 func NotNilFilter(_ string, v reflect.Value) bool 21 22 // FprintはASTノードxから始まる(サブ)ツリーをwに出力します。 23 // もしfset != nilなら、位置情報はそのファイルセットに対して相対的に解釈されます。 24 // それ以外の場合は位置は整数値(ファイルセット固有のオフセット)として表示されます。 25 // 26 // 非nilの [FieldFilter] fが提供された場合、出力を制御するために使用されます: 27 // f(fieldname, fieldvalue)がtrueを返す構造体フィールドだけが出力されます。 28 // それ以外のものは出力からフィルタリングされます。エクスポートされていない構造体フィールドは常に出力されません。 29 func Fprint(w io.Writer, fset *token.FileSet, x any, f FieldFilter) error 30 31 // Print関数は、nilのフィールドをスキップしてxを標準出力に出力します。 32 // Print(fset, x)は、Fprint(os.Stdout, fset, x, NotNilFilter)と同じです。 33 func Print(fset *token.FileSet, x any) error