Doctrine\ORM\Query\Parser::SimpleSelectExpression PHP Метод

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

SimpleSelectExpression ::= StateFieldPathExpression | IdentificationVariable | ((AggregateExpression | "(" Subselect ")" | ScalarExpression) [["AS"] AliasResultVariable])
public SimpleSelectExpression ( ) : Doctrine\ORM\Query\AST\SimpleSelectExpression
Результат Doctrine\ORM\Query\AST\SimpleSelectExpression
    public function SimpleSelectExpression()
    {
        $peek = $this->_lexer->glimpse();

        if ($peek['value'] != '(' && $this->_lexer->lookahead['type'] === Lexer::T_IDENTIFIER) {
            // SingleValuedPathExpression | IdentificationVariable
            if ($peek['value'] == '.') {
                $expression = $this->StateFieldPathExpression();
            } else {
                $expression = $this->IdentificationVariable();
            }

            return new AST\SimpleSelectExpression($expression);
        } else if ($this->_lexer->lookahead['value'] == '(') {
            if ($peek['type'] == Lexer::T_SELECT) {
                // Subselect
                $this->match(Lexer::T_OPEN_PARENTHESIS);
                $expression = $this->Subselect();
                $this->match(Lexer::T_CLOSE_PARENTHESIS);
            } else {
                // Shortcut: ScalarExpression => SimpleArithmeticExpression
                $expression = $this->SimpleArithmeticExpression();
            }

            return new AST\SimpleSelectExpression($expression);
        }

        $this->_lexer->peek();
        $beyond = $this->_peekBeyondClosingParenthesis();

        if ($this->_isMathOperator($beyond)) {
            $expression = $this->ScalarExpression();
        } else if ($this->_isAggregateFunction($this->_lexer->lookahead['type'])) {
            $expression = $this->AggregateExpression();
        } else {
            $expression = $this->FunctionDeclaration();
        }

        $expr = new AST\SimpleSelectExpression($expression);

        if ($this->_lexer->isNextToken(Lexer::T_AS)) {
            $this->match(Lexer::T_AS);
        }

        if ($this->_lexer->isNextToken(Lexer::T_IDENTIFIER)) {
            $token = $this->_lexer->lookahead;
            $resultVariable = $this->AliasResultVariable();
            $expr->fieldIdentificationVariable = $resultVariable;

            // Include AliasResultVariable in query components.
            $this->_queryComponents[$resultVariable] = array(
                'resultvariable' => $expr,
                'nestingLevel'   => $this->_nestingLevel,
                'token'          => $token,
            );
        }

        return $expr;
    }
Parser