github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/parser/interface.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  // このファイルには、パーサーを呼び出すためのエクスポートされたエントリーポイントが含まれています。
     6  
     7  package parser
     8  
     9  import (
    10  	"github.com/shogo82148/std/go/ast"
    11  	"github.com/shogo82148/std/go/token"
    12  	"github.com/shogo82148/std/io/fs"
    13  )
    14  
    15  // モード値はフラグのセット(または0)です。
    16  // これらはソースコードの解析量やその他のオプションの
    17  // パーサー機能を制御します。
    18  type Mode uint
    19  
    20  const (
    21  	PackageClauseOnly Mode = 1 << iota
    22  	ImportsOnly
    23  	ParseComments
    24  	Trace
    25  	DeclarationErrors
    26  	SpuriousErrors
    27  	SkipObjectResolution
    28  	AllErrors = SpuriousErrors
    29  )
    30  
    31  // ParseFileは、単一のGoソースファイルのソースコードを解析し、対応する [ast.File] ノードを返します。
    32  // ソースコードは、ソースファイルのファイル名またはsrcパラメーターを介して提供できます。
    33  //
    34  // src != nilの場合、ParseFileはsrcからソースを解析し、ファイル名は位置情報を記録するときにのみ使用されます。
    35  // srcパラメーターの引数の型は、string、[]byte、または [io.Reader] である必要があります。
    36  // src == nilの場合、ParseFileはfilenameで指定されたファイルを解析します。
    37  //
    38  // modeパラメーターは、解析されるソーステキストの量とその他のオプションのパーサー機能を制御します。
    39  // [SkipObjectResolution] モードビットが設定されている場合(推奨)、解析のオブジェクト解決フェーズがスキップされ、
    40  // File.Scope、File.Unresolved、およびすべてのIdent.Objフィールドがnilになります。
    41  // これらのフィールドは非推奨です。詳細については、 [ast.Object] を参照してください。
    42  //
    43  // 位置情報は、nilであってはならないファイルセットfsetに記録されます。
    44  //
    45  // ソースを読み込めなかった場合、返されるASTはnilであり、エラーは特定の失敗を示します。
    46  // ソースが読み込まれたが、構文エラーが見つかった場合、結果は部分的なAST([ast.Bad]*ノードがエラーの断片を表す)です。
    47  // 複数のエラーは、ソース位置でソートされたscanner.ErrorListを介して返されます。
    48  func ParseFile(fset *token.FileSet, filename string, src any, mode Mode) (f *ast.File, err error)
    49  
    50  // ParseDirは、指定されたパスのディレクトリ内で拡張子が".go"で終わるすべてのファイルに対して [ParseFile] を呼び出し、
    51  // 見つかったすべてのパッケージ名->パッケージASTのマップを返します。
    52  //
    53  // もしfilter != nilなら、フィルタを通過する [fs.FileInfo] エントリを持つ(かつ".go"で終わる)ファイルのみを考慮します。
    54  // モードビットは [ParseFile] に変更なしで渡されます。
    55  // 位置情報はfsetに記録されますが、これはnilであってはなりません。
    56  //
    57  // ディレクトリが読み込めなかった場合、nilのマップと対応するエラーが返されます。
    58  // パースエラーが発生した場合、非nilで不完全なマップと最初に遭遇したエラーが返されます。
    59  func ParseDir(fset *token.FileSet, path string, filter func(fs.FileInfo) bool, mode Mode) (pkgs map[string]*ast.Package, first error)
    60  
    61  // ParseExprFromは式を解析するための便利な関数です。
    62  // 引数の意味は [ParseFile] と同じですが、ソースは有効なGo(型または値)の式である必要があります。具体的には、fsetはnilであってはなりません。
    63  //
    64  // ソースが読み取れなかった場合、返されるASTはnilであり、エラーは特定の失敗を示します。ソースは読み取られたが構文エラーが見つかった場合、結果は部分的なAST([ast.Bad]*ノードが誤ったソースコードの断片を表す)です。複数のエラーは、ソースの位置でソートされたscanner.ErrorListを介して返されます。
    65  func ParseExprFrom(fset *token.FileSet, filename string, src any, mode Mode) (expr ast.Expr, err error)
    66  
    67  // ParseExprは式xのASTを取得するための便利関数です。
    68  // ASTに記録される位置情報は未定義です。エラーメッセージで使用されるファイル名は空の文字列です。
    69  //
    70  // 文法エラーが見つかった場合、結果は部分的なASTです([ast.Bad]*ノードがエラーの断片を表します)。複数のエラーはソース位置でソートされたscanner.ErrorListを介して返されます。
    71  func ParseExpr(x string) (ast.Expr, error)