func Insert(parent *Node, children ...*Node)
type Kind int
const ( KindNothing Kind = iota KindPattern KindList KindRange KindText KindAny KindSuper KindSingle KindAnyOf )
func (k Kind) String() string
type Lexer interface { Next() lexer.Token }
type List struct { Not bool Chars string }
type Node struct { Parent *Node Children []*Node Value interface{} Kind Kind }
func NewNode(k Kind, v interface{}, ch ...*Node) *Node
func Parse(lexer Lexer) (*Node, error)
func (a *Node) Equal(b *Node) bool
func (a *Node) String() string
type Range struct { Not bool Lo, Hi rune }
type Text struct { Text string }