func (t *ParseTree) Group(tokens ...Token) *ParseTree {
	for _, tok := range tokens {
		if subtree := t.Tokens[tok]; subtree != nil {
			t = subtree
			continue
		}
		if _, conflict := t.Handlers[tok]; conflict {
			panic(fmt.Sprintf("conflict for token %s", tok))
		}
		newT := &ParseTree{}
		if t.Tokens == nil {
			t.Tokens = make(map[Token]*ParseTree)
		}
		t.Tokens[tok] = newT
		t.Keys = append(t.Keys, tok.String())
		t = newT
	}
	return t
}
Group groups together a set of related handlers with a common token prefix.
package influxql
import (
	"fmt"
)
var Language = &ParseTree{}
type ParseTree struct {
	Handlers map[Token]func(*Parser) (Statement, error)
	Tokens   map[Token]*ParseTree
	Keys     []string
}
func (t *ParseTree) With(fn func(*ParseTree)) {
	fn(t)
}