Pinq\Parsing\PhpParser\AST::parseExpressionNode PHP Метод

parseExpressionNode() публичный Метод

public parseExpressionNode ( PhpParser\Node\Expr $node )
$node PhpParser\Node\Expr
    public function parseExpressionNode(Node\Expr $node)
    {
        switch (true) {
            case $mappedNode = $this->parseOperatorNode($node):
                return $mappedNode;
            case $node instanceof Node\Scalar && ($mappedNode = $this->parseScalarNode($node)):
                return $mappedNode;
            case $node instanceof Node\Expr\Variable:
                return Expression::variable($this->parseNameNode($node->name));
            case $node instanceof Node\Expr\Array_:
                return $this->parseArrayNode($node);
            case $node instanceof Node\Expr\FuncCall:
                return $this->parseFunctionCallNode($node);
            case $node instanceof Node\Expr\New_:
                return Expression::newExpression($this->parseNameNode($node->class), $this->parseNodes($node->args));
            case $node instanceof Node\Expr\MethodCall:
                return Expression::methodCall($this->parseNode($node->var), $this->parseNameNode($node->name), $this->parseNodes($node->args));
            case $node instanceof Node\Expr\PropertyFetch:
                return Expression::field($this->parseNode($node->var), $this->parseNameNode($node->name));
            case $node instanceof Node\Expr\ArrayDimFetch:
                return Expression::index($this->parseNode($node->var), $node->dim === null ? null : $this->parseNode($node->dim));
            case $node instanceof Node\Expr\ConstFetch:
                return Expression::constant($this->parseAbsoluteName($node->name));
            case $node instanceof Node\Expr\ClassConstFetch:
                return Expression::classConstant($this->parseNameNode($node->class), $node->name);
            case $node instanceof Node\Expr\StaticCall:
                return Expression::staticMethodCall($this->parseNameNode($node->class), $this->parseNameNode($node->name), $this->parseNodes($node->args));
            case $node instanceof Node\Expr\StaticPropertyFetch:
                return Expression::staticField($this->parseNameNode($node->class), $this->parseNameNode($node->name));
            case $node instanceof Node\Expr\Ternary:
                return $this->parseTernaryNode($node);
            case $node instanceof Node\Expr\Closure:
                return $this->parseClosureNode($node);
            case $node instanceof Node\Expr\Empty_:
                return Expression::emptyExpression($this->parseNode($node->expr));
            case $node instanceof Node\Expr\Isset_:
                return Expression::issetExpression($this->parseNodes($node->vars));
            default:
                throw new ASTException('Cannot parse AST with unknown expression node: %s', get_class($node));
        }
    }