Parses expressions.
This parser implements a "Precedence climbing" algorithm.
| Methods | ||
|---|---|---|
public
|
__construct(Parser $parser, Environment $env)
|
# |
public
|
parseExpression($precedence = 0, $allowArrow = false)
|
# |
private
|
parseArrow(): ArrowFunctionExpression|null
|
# |
private
|
getPrimary(): AbstractExpression
|
# |
private
|
parseConditionalExpression($expr): AbstractExpression
|
# |
private
|
isUnary(Token $token): bool
|
# |
private
|
isBinary(Token $token): bool
|
# |
public
|
parsePrimaryExpression()
|
# |
public
|
parseStringExpression()
|
# |
public
|
parseArrayExpression()
|
# |
public
|
parseHashExpression()
|
# |
public
|
parsePostfixExpression($node)
|
# |
public
|
getFunctionNode($name, $line)
|
# |
public
|
parseSubscriptExpression($node)
|
# |
public
|
parseFilterExpression($node)
|
# |
public
|
parseFilterExpressionRaw($node, $tag = null)
|
# |
public
|
parseArguments(bool $namedArguments = false, bool $definition = false, $allowArrow = false): Node
|
# |
public
|
parseAssignmentExpression()
|
# |
public
|
parseMultitargetExpression()
|
# |
private
|
parseNotTestExpression(Node $node): NotUnary
|
# |
private
|
parseTestExpression(Node $node): TestExpression
|
# |
private
|
getTest(int $line): array
|
# |
private
|
getTestNodeClass(TwigTest $test): string
|
# |
private
|
getFunctionNodeClass(string $name, int $line): string
|
# |
private
|
getFilterNodeClass(string $name, int $line): string
|
# |
private
|
checkConstantExpression(Node $node): bool
|
# |
| Constants | ||
|---|---|---|
public
|
OPERATOR_LEFT = 1
|
# |
public
|
OPERATOR_RIGHT = 2
|
# |
| Properties | |||
|---|---|---|---|
private
|
|
$parser
|
# |
private
|
|
$env
|
# |
private
|
array<string, array{precedence: int, class: class-string<AbstractUnary>}>
|
$unaryOperators
|
# |
private
|
array<string, array{precedence: int, class: class-string<AbstractBinary>, associativity: self::OPERATOR_*}>
|
$binaryOperators
|
# |