/* Discards the rule til end of stylesheet, since no matching bracket can be found */ /*p{ foo:bar; foo{;bar("baz)};"; baz:boo } h1{}*/ EOS; $timer = new Benchmark_Timer(); //$nb_iterations = 1; $timer->start(); $source = new Source\String($css); $timer->setMarker(sprintf("Source init: %s", $source->getEncoding())); $lexer = new Css\Lexer(); $lexer->setSource($source); $timer->setMarker("Lexer init"); //$token = $lexer->nextToken(); //while ($token->type !== Css\Lexer::T_EOF) { //echo $lexer->getLiteral($token) . PHP_EOL; //$token = $lexer->nextToken(); //} //echo $lexer->getLiteral($token) . PHP_EOL; //$timer->setMarker("Tokenization end"); $parser = new Css\Parser($lexer); $parser->setStrict(false); $stylesheet = $parser->parseStyleSheet(); $timer->setMarker("Parsing end"); foreach ($parser->errors as $error) { echo "Start: " . $lexer->getLiteral($error['start']) . "\n"; echo "End: " . $lexer->getLiteral($error['end']) . "\n"; } var_dump($stylesheet->getCssText()); //printf("Memory: %s\n", memory_get_usage(true)); //printf("Memory peak: %s\n", memory_get_peak_usage(true)); //echo $timer->getOutput();