code: func tokenize(s string) []string {
  	/*
  		TODO: Properly detect if the string starts with a ( and ends with a )
  		and that those two form a matching pair.
  
  		Eg: (foo) -> true; (foo)(bar) -> false;
  	*/
  	if s[0] == '(' && s[len(s)-1] == ')' {
  		s = s[1 : len(s)-1]
  	}
  	ret := []string{}
  	for chunk := range split(s) {
  		if len(chunk) != 0 {
  			if chunk[0] == '(' && chunk[len(chunk)-1] == ')' {
  				ret = append(ret, chunk)
  			} else {
  				for _, token := range pat.FindAllStringSubmatch(chunk, -1) {
  					ret = append(ret, token[0])
  				}
  			}
  		} else {
  			fmt.Printf("Empty chunk in string '%s'\n", s)
  		}
  	}
  	return ret
  }
docs: // Tokenizes a string into a list of strings, tokens grouped by parenthesis are
  // not split! If the string starts with ( and ends in ), those are stripped.