PHPSA\Compiler\Expression\Operators\Arithmetical\Pow::compile PHP Method

compile() protected method

{expr} ** {expr}
protected compile ( PhpParser\Node\Expr\BinaryOp\Pow $expr, Context $context ) : CompiledExpression
$expr PhpParser\Node\Expr\BinaryOp\Pow
$context PHPSA\Context
return PHPSA\CompiledExpression
    protected function compile($expr, Context $context)
    {
        $left = $context->getExpressionCompiler()->compile($expr->left);
        $right = $context->getExpressionCompiler()->compile($expr->right);
        switch ($left->getType()) {
            case CompiledExpression::INTEGER:
            case CompiledExpression::DOUBLE:
            case CompiledExpression::BOOLEAN:
                switch ($right->getType()) {
                    case CompiledExpression::INTEGER:
                    case CompiledExpression::DOUBLE:
                    case CompiledExpression::BOOLEAN:
                        return CompiledExpression::fromZvalValue(pow($left->getValue(), $right->getValue()));
                }
        }
        return new CompiledExpression();
    }