code: func (parser *Parser) parseQualifiedRule() (*css.Rule, error) {
  	result := css.NewRule(css.QualifiedRule)
  
  	for parser.tokenParsable() {
  		if parser.tokenChar("{") {
  			if result.Prelude == "" {
  				errMsg := fmt.Sprintf("Unexpected { character: %s", parser.nextToken().String())
  				return result, errors.New(errMsg)
  			}
  
  			// parse declarations block
  			declarations, err := parser.ParseDeclarations()
  			if err != nil {
  				return result, err
  			}
  
  			result.Declarations = declarations
  
  			// finished
  			break
  		} else {
  			// parse prelude
  			prelude, err := parser.parsePrelude()
  			if err != nil {
  				return result, err
  			}
  
  			result.Prelude = prelude
  		}
  	}
  
  	result.Selectors = strings.Split(result.Prelude, ",")
  	for i, sel := range result.Selectors {
  		result.Selectors[i] = strings.TrimSpace(sel)
  	}
  
  	// log.Printf("[parsed] Rule: %s", result.String())
  
  	return result, parser.err()
  }
docs: // Parse a Qualified Rule