private function parseVariableDefinition()
    {
        $start = $this->lexer->token;
        $var   = $this->parseVariable();

        $this->expect(Token::COLON);
        $type = $this->parseTypeReference();

        return new VariableDefinitionNode([
            'variable'     => $var,
            'type'         => $type,
            'defaultValue' =>
                ($this->skip(Token::EQUALS) ? $this->parseValueLiteral(true) : null),
            'loc'          => $this->loc($start),
        ]);
    }
private function parseVariableDefinition()
    {
        $start = $this->lexer->token;
        $var   = $this->parseVariable();

        $this->expect(Token::COLON);
        $type = $this->parseTypeReference();

        return new VariableDefinitionNode([
            'variable'     => $var,
            'type'         => $type,
            'defaultValue' =>
                ($this->skip(Token::EQUALS) ? $this->parseValueLiteral(true) : null),
            'loc'          => $this->loc($start),
        ]);
    }
private function parseVariableDefinition ( ) { $ start = $ this -> lexer -> token ; $ var = $ this -> parseVariable ( ) ; $ this -> expect ( Token :: COLON ) ; $ type = $ this -> parseTypeReference ( ) ; return new VariableDefinitionNode ( [ 'variable' => $ var , 'type' => $ type , 'defaultValue' => ( $ this -> skip ( Token :: EQUALS ) ? $ this -> parseValueLiteral ( true ) : null ) , 'loc' => $ this -> loc ( $ start ) , ] ) ; }
@return VariableDefinitionNode

@throws SyntaxError
@return VariableDefinitionNode