github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/ast/commentmap.go (about) 1 // Copyright 2012 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 import ( 8 "github.com/shogo82148/std/go/token" 9 ) 10 11 // CommentMapはASTノードをそのノードに関連付けられたコメントグループのリストにマップします。 12 // 関連付けについては、[NewCommentMap] の説明を参照してください。 13 type CommentMap map[Node][]*CommentGroup 14 15 // NewCommentMapは、コメントリストのコメントグループをASTのノードと関連付けて新しいコメントマップを作成します。 16 // コメントグループgは、ノードnと関連付けられます。以下の条件を満たす場合です: 17 // - gは、nの終了する行と同じ行で開始します。 18 // - gは、nの直後の行で始まり、gと次のノードの間に少なくとも1つの空行がある場合。 19 // - gは、nよりも前に開始され、前のルールを介してnの前のノードに関連付けられていない場合。 20 // 21 // NewCommentMapは、コメントグループを「最大の」ノードに関連付けようとします。たとえば、コメントが代入文の後に続く行コメントの場合、コメントは代入文全体ではなく、代入文の最後のオペランドに関連づけられます。 22 func NewCommentMap(fset *token.FileSet, node Node, comments []*CommentGroup) CommentMap 23 24 // Updateはコメントマップ内の古いノードを新しいノードで置き換え、新しいノードを返します。 25 // 古いノードに関連付けられていたコメントは、新しいノードに関連付けられます。 26 func (cmap CommentMap) Update(old, new Node) Node 27 28 // Filterはnodeによって指定されたASTに対応するノードが存在する場合、cmapのエントリのみで構成される新しいコメントマップを返します。 29 func (cmap CommentMap) Filter(node Node) CommentMap 30 31 // Commentsはコメントマップ内のコメントグループのリストを返します。 32 // 結果はソースの順にソートされます。 33 func (cmap CommentMap) Comments() []*CommentGroup 34 35 func (cmap CommentMap) String() string