code: func parseDirective(parser *Parser) (*ast.Directive, error) {
  	var (
  		err  error
  		name *ast.Name
  		args []*ast.Argument
  	)
  	start := parser.Token.Start
  	if _, err = expect(parser, lexer.AT); err != nil {
  		return nil, err
  	}
  	if name, err = parseName(parser); err != nil {
  		return nil, err
  	}
  	if args, err = parseArguments(parser); err != nil {
  		return nil, err
  	}
  	return ast.NewDirective(&ast.Directive{
  		Name:      name,
  		Arguments: args,
  		Loc:       loc(parser, start),
  	}), nil
  }
docs: /**
   * Directive : @ Name Arguments?
   */