parser->getExpressionParser()->parseExpression(); $stream = $this->parser->getStream(); if (!$template instanceof ConstantExpression) { throw new SyntaxError('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } $targets = []; if ($stream->nextIf('with')) { while (\true) { $name = $stream->expect( /* Token::NAME_TYPE */ 5 )->getValue(); $alias = $name; if ($stream->nextIf('as')) { $alias = $stream->expect( /* Token::NAME_TYPE */ 5 )->getValue(); } $targets[$name] = new ConstantExpression($alias, -1); if (!$stream->nextIf( /* Token::PUNCTUATION_TYPE */ 9, ',' )) { break; } } } $stream->expect( /* Token::BLOCK_END_TYPE */ 3 ); $this->parser->addTrait(new Node(['template' => $template, 'targets' => new Node($targets)])); return new Node(); } public function getTag() : string { return 'use'; } }