func compileFilterSet( s string, pos int, parent *types.Filter) (int, error) { for pos < len(s) && s[pos] == '(' { child, newPos, err := compileFilter(s, pos+1) if err != nil { return pos, err } pos = newPos parent.Children = append(parent.Children, child) } if pos == len(s) { return pos, errUnexpectedEOF } return pos + 1, nil }