code: func parseFieldDefinition(parser *Parser) (interface{}, error) {
  	start := parser.Token.Start
  	description, err := parseDescription(parser)
  	if err != nil {
  		return nil, err
  	}
  	name, err := parseName(parser)
  	if err != nil {
  		return nil, err
  	}
  	args, err := parseArgumentDefs(parser)
  	if err != nil {
  		return nil, err
  	}
  	_, err = expect(parser, lexer.COLON)
  	if err != nil {
  		return nil, err
  	}
  	ttype, err := parseType(parser)
  	if err != nil {
  		return nil, err
  	}
  	directives, err := parseDirectives(parser)
  	if err != nil {
  		return nil, err
  	}
  	return ast.NewFieldDefinition(&ast.FieldDefinition{
  		Name:        name,
  		Description: description,
  		Arguments:   args,
  		Type:        ttype,
  		Directives:  directives,
  		Loc:         loc(parser, start),
  	}), nil
  }
docs: /**
   * FieldDefinition : Description? Name ArgumentsDefinition? : Type Directives?
   */