function ExpressionParser::parseSequenceExpression
1 call to ExpressionParser::parseSequenceExpression()
- ExpressionParser::parseArrayExpression in vendor/
twig/ twig/ src/ ExpressionParser.php
File
-
vendor/
twig/ twig/ src/ ExpressionParser.php, line 412
Class
- ExpressionParser
- Parses expressions.
Namespace
TwigCode
public function parseSequenceExpression() {
$stream = $this->parser
->getStream();
$stream->expect(Token::PUNCTUATION_TYPE, '[', 'A sequence element was expected');
$node = new ArrayExpression([], $stream->getCurrent()
->getLine());
$first = true;
while (!$stream->test(Token::PUNCTUATION_TYPE, ']')) {
if (!$first) {
$stream->expect(Token::PUNCTUATION_TYPE, ',', 'A sequence element must be followed by a comma');
// trailing ,?
if ($stream->test(Token::PUNCTUATION_TYPE, ']')) {
break;
}
}
$first = false;
if ($stream->nextIf(Token::SPREAD_TYPE)) {
$expr = $this->parseExpression();
$expr->setAttribute('spread', true);
$node->addElement($expr);
}
else {
$node->addElement($this->parseExpression());
}
}
$stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened sequence is not properly closed');
return $node;
}