function CSSRuleset() { try { $selectors = new CSSSelectors(); $sel = $this->CSSSelector(); if (!$sel) { $this->error('Selector expected'); } $selectors->add($sel); while ($this->isValNext(DELIM, ',')) { $this->whiteSpace(); $selectors->add($this->CSSSelector()); } $this->expect(LCBR, 'Selector should end here and rule is expected'); } catch (CSSParseError $e) { $this->skipUpTo(LCBR); $this->nextToken(); $this->skipUpTo(RCBR); $this->nextToken(); $this->whiteSpace(); return false; } try { $declarations = $this->CSSDeclarations(RCBR); if (!$this->isEof()) { $this->expect(RCBR, 'Block of declarations should end here'); $this->whiteSpace(); } return new CSSRuleset($selectors, $declarations); } catch (CSSParseError $e) { $this->skipUpTo(RCBR); $this->nextToken(); $this->whiteSpace(); return false; } }