code: function ruleset(toks, i, n, handler) {
      // toks[s:e] are the selector tokens including internal whitespace.
      var s = i, e = selector(toks, i, n, true);
      if (e < 0) {
        // Skip malformed content per selector calling convention.
        e = ~e;
        // Make sure we skip at least one token.
        return e === s ? e+1 : e;
      }
      var tok = toks[e];
      if (tok !== '{') {
        // Make sure we skip at least one token.
        return e === s ? e+1 : e;
      }
      i = e+1;  // Skip over '{'
      // Don't include any trailing space in the selector slice.
      if (e > s && toks[e-1] === ' ') { --e; }
      if (handler['startRuleset']) {
        handler['startRuleset'](toks.slice(s, e));
      }
      while (i < n) {
        tok = toks[i];
        if (tok === '}') {
          ++i;
          break;
        }
        if (tok === ' ') {
          i = i+1;
        } else {
          i = declaration(toks, i, n, handler);
        }
      }
      if (handler['endRuleset']) {
        handler['endRuleset']();
      }
      return i;
    }
docs: ruleset    : selector? '{' S* declaration? [ ';' S* declaration? ]* '}' S*;