text: #!/usr/bin/env python
  # Copyright 2019-present, GraphQL Foundation
  #
  # This source code is licensed under the MIT license found in the
  # LICENSE file in the root directory of this source tree.
  
  from ctypes import *
  from GraphQLParser import *
  
  def print_field(field, unused):
    field_name = GraphQLAstField_get_name(field)
    field_name_value = GraphQLAstName_get_value(field_name)
    print('field : ' + field_name_value)
    return 0
  
  def main():
    error = POINTER(c_char)()
    ast = graphql_parse_string('query myquery { myfield }', byref(error))
    field_visitor_callbacks = GraphQLAstVisitorCallbacks(visit_field = visit_field_func(print_field))
    graphql_node_visit(ast, pointer(field_visitor_callbacks), None)
  
    graphql_node_free(ast)
  
    ast = graphql_parse_string('query errorQuery on oops { myfield }', byref(error))
    print('Example error:', string_at(error))
    graphql_error_free(error)
    if ast:
      print('BUG: we should have got a null AST back, but we got:', ast)
  
  if __name__ == '__main__':
    main()
  