github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/parser/example_test.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 parser_test
     6  
     7  import (
     8  	"github.com/shogo82148/std/fmt"
     9  	"github.com/shogo82148/std/go/parser"
    10  	"github.com/shogo82148/std/go/token"
    11  )
    12  
    13  func ExampleParseFile() {
    14  	fset := token.NewFileSet() // positionsはfsetに対して相対的な位置にあります。
    15  
    16  	src := `package foo
    17  
    18  import (
    19  	"fmt"
    20  	"time"
    21  )
    22  
    23  func bar() {
    24  	fmt.Println(time.Now())
    25  }`
    26  
    27  	// インポートの処理をした後にsrcをパースしますが、それ以降の処理を停止します。
    28  	f, err := parser.ParseFile(fset, "", src, parser.ImportsOnly)
    29  	if err != nil {
    30  		fmt.Println(err)
    31  		return
    32  	}
    33  
    34  	// ファイルのASTからインポートを出力する。
    35  	for _, s := range f.Imports {
    36  		fmt.Println(s.Path.Value)
    37  	}
    38  
    39  	// 出力:
    40  	//
    41  	// "fmt"
    42  	// "time"
    43  }