package ast
|
|
|
|
import "github.com/brettlangdon/gython/token"
|
|
|
|
type ListNode struct {
|
|
BaseNode
|
|
children []interface{}
|
|
}
|
|
|
|
func (node *ListNode) initListNode() {
|
|
node.children = make([]interface{}, 0)
|
|
}
|
|
|
|
func (node *ListNode) AppendToken(t *token.Token) {
|
|
node.children = append(node.children, t)
|
|
}
|
|
|
|
func (node *ListNode) AppendNode(n Node) {
|
|
node.children = append(node.children, n)
|
|
}
|
|
|
|
func (node *ListNode) Children() []interface{} {
|
|
return node.children
|
|
}
|
|
|
|
func (node *ListNode) Length() int {
|
|
return len(node.children)
|
|
}
|
|
|
|
func (node *ListNode) Repr() []interface{} {
|
|
out := node.BaseNode.Repr()
|
|
for _, child := range node.Children() {
|
|
switch child.(type) {
|
|
case Node:
|
|
out = append(out, child.(Node).Repr())
|
|
default:
|
|
out = append(out, child)
|
|
}
|
|
}
|
|
return out
|
|
}
|