github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/ast/doc_test.go (about)

     1  package ast_test
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/madlambda/nash/ast"
     7  	"github.com/madlambda/nash/token"
     8  )
     9  
    10  func Example_AssignmentNode() {
    11  	one := ast.NewNameNode(token.NewFileInfo(1, 0), "one", nil)
    12  	two := ast.NewNameNode(token.NewFileInfo(1, 4), "two", nil)
    13  	value1 := ast.NewStringExpr(token.NewFileInfo(1, 8), "1", true)
    14  	value2 := ast.NewStringExpr(token.NewFileInfo(1, 10), "2", true)
    15  	assign := ast.NewAssignNode(token.NewFileInfo(1, 0),
    16  		[]*ast.NameNode{one, two},
    17  		[]ast.Expr{value1, value2},
    18  	)
    19  
    20  	fmt.Printf("%s", assign)
    21  
    22  	// Output: one, two = "1", "2"
    23  }
    24  
    25  func Example_AssignmentNode_Single() {
    26  	operatingSystems := ast.NewNameNode(token.NewFileInfo(1, 0), "operatingSystems", nil)
    27  	values := []ast.Expr{
    28  		ast.NewStringExpr(token.NewFileInfo(1, 19), "plan9 from bell labs", true),
    29  		ast.NewStringExpr(token.NewFileInfo(2, 19), "unix", true),
    30  		ast.NewStringExpr(token.NewFileInfo(3, 19), "linux", true),
    31  		ast.NewStringExpr(token.NewFileInfo(4, 19), "oberon", true),
    32  		ast.NewStringExpr(token.NewFileInfo(5, 19), "windows", true),
    33  	}
    34  
    35  	list := ast.NewListExpr(token.NewFileInfo(0, 18), values)
    36  	assign := ast.NewSingleAssignNode(token.NewFileInfo(1, 0),
    37  		operatingSystems,
    38  		list,
    39  	)
    40  
    41  	fmt.Printf("%s", assign)
    42  
    43  	// Output: operatingSystems = (
    44  	// 	"plan9 from bell labs"
    45  	// 	"unix"
    46  	// 	"linux"
    47  	// 	"oberon"
    48  	// 	"windows"
    49  	// )
    50  }