Submit
Path:
~
/
/
proc
/
self
/
root
/
proc
/
self
/
root
/
opt
/
cpguard
/
app
/
vendor
/
twig
/
twig
/
src
/
ExpressionParser
/
Prefix
/
File Content:
GroupingExpressionParser.php
<?php /* * This file is part of Twig. * * (c) Fabien Potencier * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Twig\ExpressionParser\Prefix; use Twig\Error\SyntaxError; use Twig\ExpressionParser\AbstractExpressionParser; use Twig\ExpressionParser\ExpressionParserDescriptionInterface; use Twig\ExpressionParser\PrefixExpressionParserInterface; use Twig\Node\Expression\AbstractExpression; use Twig\Node\Expression\ListExpression; use Twig\Node\Expression\Variable\ContextVariable; use Twig\Parser; use Twig\Token; /** * @internal */ final class GroupingExpressionParser extends AbstractExpressionParser implements PrefixExpressionParserInterface, ExpressionParserDescriptionInterface { public function parse(Parser $parser, Token $token): AbstractExpression { $stream = $parser->getStream(); $expr = $parser->parseExpression($this->getPrecedence()); if ($stream->nextIf(Token::PUNCTUATION_TYPE, ')')) { if (!$stream->test(Token::OPERATOR_TYPE, '=>')) { return $expr->setExplicitParentheses(); } return new ListExpression([$expr], $token->getLine()); } // determine if we are parsing an arrow function arguments if (!$stream->test(Token::PUNCTUATION_TYPE, ',')) { $stream->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); } $names = [$expr]; while (true) { if ($stream->nextIf(Token::PUNCTUATION_TYPE, ')')) { break; } $stream->expect(Token::PUNCTUATION_TYPE, ','); $token = $stream->expect(Token::NAME_TYPE); $names[] = new ContextVariable($token->getValue(), $token->getLine()); } if (!$stream->test(Token::OPERATOR_TYPE, '=>')) { throw new SyntaxError('A list of variables must be followed by an arrow.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); } return new ListExpression($names, $token->getLine()); } public function getName(): string { return '('; } public function getDescription(): string { return 'Explicit group expression (a)'; } public function getPrecedence(): int { return 0; } }
Submit
FILE
FOLDER
Name
Size
Permission
Action
GroupingExpressionParser.php
2396 bytes
0644
LiteralExpressionParser.php
9018 bytes
0644
UnaryOperatorExpressionParser.php
1804 bytes
0644
N4ST4R_ID | Naxtarrr