1*04fd306cSNickeau<?php 2*04fd306cSNickeau/** 3*04fd306cSNickeau * The string parser collects all string character tokens until a string end token is found. 4*04fd306cSNickeau * 5*04fd306cSNickeau * @license http://www.opensource.org/licenses/mit-license.php The MIT License 6*04fd306cSNickeau * @copyright Copyright 2010-2014 PhpCss Team 7*04fd306cSNickeau */ 8*04fd306cSNickeau 9*04fd306cSNickeaunamespace PhpCss\Parser { 10*04fd306cSNickeau 11*04fd306cSNickeau use PhpCss; 12*04fd306cSNickeau use PhpCss\Scanner; 13*04fd306cSNickeau 14*04fd306cSNickeau /** 15*04fd306cSNickeau * The string parser collects all string character tokens until a string end token is found. 16*04fd306cSNickeau */ 17*04fd306cSNickeau class Text extends PhpCss\Parser { 18*04fd306cSNickeau 19*04fd306cSNickeau /** 20*04fd306cSNickeau * @throws PhpCss\Exception\ParserException 21*04fd306cSNickeau */ 22*04fd306cSNickeau public function parse(): PhpCss\Ast\Node { 23*04fd306cSNickeau $string = ''; 24*04fd306cSNickeau while (TRUE) { 25*04fd306cSNickeau $token = $this->read( 26*04fd306cSNickeau [ 27*04fd306cSNickeau Scanner\Token::STRING_CHARACTERS, 28*04fd306cSNickeau Scanner\Token::STRING_ESCAPED_CHARACTER, 29*04fd306cSNickeau Scanner\Token::SINGLEQUOTE_STRING_END, 30*04fd306cSNickeau Scanner\Token::DOUBLEQUOTE_STRING_END, 31*04fd306cSNickeau ] 32*04fd306cSNickeau ); 33*04fd306cSNickeau switch ($token->type) { 34*04fd306cSNickeau case Scanner\Token::STRING_CHARACTERS : 35*04fd306cSNickeau $string .= $token->content; 36*04fd306cSNickeau break; 37*04fd306cSNickeau case Scanner\Token::STRING_ESCAPED_CHARACTER : 38*04fd306cSNickeau $string .= substr($token->content, 1); 39*04fd306cSNickeau break; 40*04fd306cSNickeau case Scanner\Token::SINGLEQUOTE_STRING_END : 41*04fd306cSNickeau case Scanner\Token::DOUBLEQUOTE_STRING_END : 42*04fd306cSNickeau return new PhpCss\Ast\Value\Literal($string); 43*04fd306cSNickeau } 44*04fd306cSNickeau } 45*04fd306cSNickeau } 46*04fd306cSNickeau } 47*04fd306cSNickeau} 48