public function PartialObjectExpression()
{
$this->match(Lexer::T_PARTIAL);
$partialFieldSet = array();
$identificationVariable = $this->IdentificationVariable();
$this->match(Lexer::T_DOT);
$this->match(Lexer::T_OPEN_CURLY_BRACE);
$this->match(Lexer::T_IDENTIFIER);
$partialFieldSet[] = $this->_lexer->token['value'];
while ($this->_lexer->isNextToken(Lexer::T_COMMA)) {
$this->match(Lexer::T_COMMA);
$this->match(Lexer::T_IDENTIFIER);
$partialFieldSet[] = $this->_lexer->token['value'];
}
$this->match(Lexer::T_CLOSE_CURLY_BRACE);
$partialObjectExpression = new AST\PartialObjectExpression($identificationVariable, $partialFieldSet);
// Defer PartialObjectExpression validation
$this->_deferredPartialObjectExpressions[] = array(
'expression' => $partialObjectExpression,
'nestingLevel' => $this->_nestingLevel,
'token' => $this->_lexer->token,
);
return $partialObjectExpression;
}