summaryrefslogtreecommitdiff
path: root/cmd/linked_token_list.go
blob: c8c876f5e63d68d4c6eb5f55fc0c872108f810e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package cmd

type LinkedTokenList struct {
	head, tail *Token
}

func (lts *LinkedTokenList) AddToken(content string) {
	newToken := &Token{
		content: content,
		prev:    nil,
		next:    nil,
	}

	if lts.head == nil {
		lts.head = newToken
		lts.tail = newToken
	} else {
		newToken.SetPreviousToken(lts.tail)
		lts.tail.SetNextToken(newToken)
		lts.tail = newToken
	}
}

func SliceToLinkedTokenSlice(slice []string, tokenSlice *LinkedTokenList) {
	for _, item := range slice {
		tokenSlice.AddToken(item)
	}
}