code: func ScanTokens(data []byte, it func([]byte) bool) bool {
  	lexer := &Scanner{data: data}
  
  	var ok bool
  	for lexer.Next() {
  		switch lexer.Type() {
  		case ItemToken:
  			ok = true
  			if !it(lexer.Bytes()) {
  				return true
  			}
  		case ItemSeparator:
  			if !isComma(lexer.Bytes()) {
  				return false
  			}
  		default:
  			return false
  		}
  	}
  
  	return ok && !lexer.err
  }
docs: // ScanTokens parses data in this form:
  //
  // list = 1#token
  //
  // It returns false if data is malformed.