github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/format/example_test.go (about)

     1  // Copyright 2018 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 format_test
     6  
     7  import (
     8  	"github.com/shogo82148/std/bytes"
     9  	"github.com/shogo82148/std/fmt"
    10  	"github.com/shogo82148/std/go/format"
    11  	"github.com/shogo82148/std/go/parser"
    12  	"github.com/shogo82148/std/go/token"
    13  	"github.com/shogo82148/std/log"
    14  )
    15  
    16  func ExampleNode() {
    17  	const expr = "(6+2*3)/4"
    18  
    19  	// parser.ParseExprは引数を解析し、対応するast.Nodeを返します。
    20  	node, err := parser.ParseExpr(expr)
    21  	if err != nil {
    22  		log.Fatal(err)
    23  	}
    24  
    25  	// ノード用のFileSetを作成します。ノードは実際のソースファイルから
    26  	// 来ないため、fsetは空になります。
    27  	fset := token.NewFileSet()
    28  
    29  	var buf bytes.Buffer
    30  	err = format.Node(&buf, fset, node)
    31  	if err != nil {
    32  		log.Fatal(err)
    33  	}
    34  
    35  	fmt.Println(buf.String())
    36  
    37  	// Output: (6 + 2*3) / 4
    38  }