code: def parse_directive_definition(lexer: Lexer) -> DirectiveDefinitionNode:
      
      start = lexer.token
      description = parse_description(lexer)
      expect_keyword(lexer, "directive")
      expect_token(lexer, TokenKind.AT)
      name = parse_name(lexer)
      args = parse_argument_defs(lexer)
      expect_keyword(lexer, "on")
      locations = parse_directive_locations(lexer)
      return DirectiveDefinitionNode(
          description=description,
          name=name,
          arguments=args,
          locations=locations,
          loc=loc(lexer, start),
      )
docs: InputObjectTypeExtension