function parseTypeSystemDefinition()
{
if ($this->peek(Token::NAME)) {
switch ($this->lexer->token->value) {
case 'schema':
return $this->parseSchemaDefinition();
case 'scalar':
return $this->parseScalarTypeDefinition();
case 'type':
return $this->parseObjectTypeDefinition();
case 'interface':
return $this->parseInterfaceTypeDefinition();
case 'union':
return $this->parseUnionTypeDefinition();
case 'enum':
return $this->parseEnumTypeDefinition();
case 'input':
return $this->parseInputObjectTypeDefinition();
case 'extend':
return $this->parseTypeExtensionDefinition();
case 'directive':
return $this->parseDirectiveDefinition();
}
}
throw $this->unexpected();
}