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