elvish/parse/node.go

43 lines
574 B
Go
Raw Normal View History

2016-01-25 02:04:15 +08:00
package parse
2016-02-08 06:23:16 +08:00
// Node represents a parse tree as well as an AST.
2016-01-25 02:04:15 +08:00
type Node interface {
n() *node
Parent() Node
Begin() int
End() int
SourceText() string
Children() []Node
}
type node struct {
parent Node
begin, end int
sourceText string
children []Node
}
func (n *node) n() *node {
return n
}
func (n *node) Parent() Node {
return n.parent
}
func (n *node) Begin() int {
return n.begin
}
func (n *node) End() int {
return n.end
}
func (n *node) SourceText() string {
return n.sourceText
}
func (n *node) Children() []Node {
return n.children
}