func (s *Sentence) Parse() (root *Parse, count int, err error) {
	if s.RawParse == "" {
		return nil, 0, fmt.Errorf("No parse data. (Did you enable 'parse' annotator?)")
	}
	tokens := make(map[int]*Token, len(s.Tokens)+1)
	for i := 0; i < len(s.Tokens); i++ {
		index := s.Tokens[i].Index
		tokens[index] = &s.Tokens[i]
	}
	replacer := strings.NewReplacer("\n", "", "\t", "")
	rawParse := replacer.Replace(strings.Trim(s.RawParse, " \r\n\t"))
	decoder := parseDecoder{
		rawParse:   rawParse,
		parseIndex: 0,
		tokenIndex: s.Tokens[0].Index,
		tokens:     tokens,
	}
	root, _, err = decoder.Decode(0)
	return root, decoder.parseIndex, err
}
Parse generats go's struct based result of Parse and returns the first Parse.
package document
import (
	"fmt"
	"strings"
)
type Sentences []Sentence
type Sentence struct {
	RawParse                     string       `json:"parse"`
	Dependencies                 []Dependency `json:"basicDependencies"`
	EnhancedPlusPlusDependencies []Dependency `json:"enhancedPlusPlusDependencies"`
	Tokens                       Tokens       `json:"tokens"`
}
type Parse struct {
	Index int
	Text  string
	Pos   string
	Token *Token
	Parent   *Parse
	Children []*Parse
}