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)