Exemple #1
0
        /// <summary>
        /// Parses a scalar type definition.
        /// <see cref="ScalarTypeDefinitionNode" />:
        /// Description?
        /// scalar Name Directives[isConstant=true]?
        /// </summary>
        /// <param name="context">The parser context.</param>
        private ScalarTypeDefinitionNode ParseScalarTypeDefinition(
            ParserContext context)
        {
            SyntaxToken     start       = context.Current;
            StringValueNode description = ParseDescription(context);

            context.ExpectScalarKeyword();
            NameNode             name       = ParseName(context);
            List <DirectiveNode> directives =
                ParseDirectives(context, true);
            Location location = context.CreateLocation(start);

            return(new ScalarTypeDefinitionNode
                   (
                       location,
                       name,
                       description,
                       directives
                   ));
        }
        private ScalarTypeExtensionNode ParseScalarTypeExtension(
            ParserContext context)
        {
            SyntaxToken start = context.Current;

            context.ExpectExtendKeyword();
            context.ExpectScalarKeyword();
            NameNode             name       = context.ParseName();
            List <DirectiveNode> directives =
                ParseDirectives(context, true);

            if (directives.Count == 0)
            {
                throw context.Unexpected(start);
            }
            Location location = context.CreateLocation(start);

            return(new ScalarTypeExtensionNode
                   (
                       location,
                       name,
                       directives
                   ));
        }