private function parseInterfaceTypeDefinition()
    {
        $start       = $this->lexer->token;
        $description = $this->parseDescription();
        $this->expectKeyword('interface');
        $name       = $this->parseName();
        $directives = $this->parseDirectives(true);
        $fields     = $this->parseFieldsDefinition();

        return new InterfaceTypeDefinitionNode([
            'name'        => $name,
            'directives'  => $directives,
            'fields'      => $fields,
            'loc'         => $this->loc($start),
            'description' => $description,
        ]);
    }
private function parseInterfaceTypeDefinition()
    {
        $start       = $this->lexer->token;
        $description = $this->parseDescription();
        $this->expectKeyword('interface');
        $name       = $this->parseName();
        $directives = $this->parseDirectives(true);
        $fields     = $this->parseFieldsDefinition();

        return new InterfaceTypeDefinitionNode([
            'name'        => $name,
            'directives'  => $directives,
            'fields'      => $fields,
            'loc'         => $this->loc($start),
            'description' => $description,
        ]);
    }
private function parseInterfaceTypeDefinition ( ) { $ start = $ this -> lexer -> token ; $ description = $ this -> parseDescription ( ) ; $ this -> expectKeyword ( 'interface' ) ; $ name = $ this -> parseName ( ) ; $ directives = $ this -> parseDirectives ( true ) ; $ fields = $ this -> parseFieldsDefinition ( ) ; return new InterfaceTypeDefinitionNode ( [ 'name' => $ name , 'directives' => $ directives , 'fields' => $ fields , 'loc' => $ this -> loc ( $ start ) , 'description' => $ description , ] ) ; }
@return InterfaceTypeDefinitionNode

@throws SyntaxError
@return InterfaceTypeDefinitionNode