function ExpressionParser::parseConditionalExpression
1 call to ExpressionParser::parseConditionalExpression()
- ExpressionParser::parseExpression in vendor/
twig/ twig/ src/ ExpressionParser.php
File
-
vendor/
twig/ twig/ src/ ExpressionParser.php, line 269
Class
- ExpressionParser
- Parses expressions.
Namespace
TwigCode
private function parseConditionalExpression($expr) : AbstractExpression {
while ($this->parser
->getStream()
->nextIf(Token::PUNCTUATION_TYPE, '?')) {
if (!$this->parser
->getStream()
->nextIf(Token::PUNCTUATION_TYPE, ':')) {
$expr2 = $this->parseExpression();
if ($this->parser
->getStream()
->nextIf(Token::PUNCTUATION_TYPE, ':')) {
// Ternary operator (expr ? expr2 : expr3)
$expr3 = $this->parseExpression();
}
else {
// Ternary without else (expr ? expr2)
$expr3 = new ConstantExpression('', $this->parser
->getCurrentToken()
->getLine());
}
}
else {
// Ternary without then (expr ?: expr3)
$expr2 = $expr;
$expr3 = $this->parseExpression();
}
$expr = new ConditionalExpression($expr, $expr2, $expr3, $this->parser
->getCurrentToken()
->getLine());
}
return $expr;
}