/// <summary> /// Parses input value definitions. /// <see cref="InputValueDefinitionNode" />: /// Description? Name : Type DefaultValue? Directives[isConstant=true]? /// </summary> /// <param name="context">The parser context.</param> private InputValueDefinitionNode ParseInputValueDefinition( ParserContext context) { SyntaxToken start = context.Current; StringValueNode description = ParseDescription(context); NameNode name = ParseName(context); context.ExpectColon(); ITypeNode type = ParseTypeReference(context); IValueNode defaultValue = null; if (context.Skip(TokenKind.Equal)) { defaultValue = ParseConstantValue(context); } List <DirectiveNode> directives = ParseDirectives(context, true); Location location = context.CreateLocation(start); return(new InputValueDefinitionNode ( location, name, description, type, defaultValue, directives )); }
/// <summary> /// Parses a field. /// <see cref="FieldNode" />: /// Alias? : Name Arguments? Directives? SelectionSet? /// </summary> /// <param name="context">The parser context.</param> private static FieldNode ParseField(ParserContext context) { SyntaxToken start = context.Current; var hasAlias = context.Peek(TokenKind.Colon); NameNode alias = null; NameNode name = null; if (hasAlias) { alias = ParseName(context); context.ExpectColon(); name = ParseName(context); } else { name = ParseName(context); } List <ArgumentNode> arguments = ParseArguments(context, false); List <DirectiveNode> directives = ParseDirectives(context, false); SelectionSetNode selectionSet = context.Current.IsLeftBrace() ? ParseSelectionSet(context) : null; Location location = context.CreateLocation(start); return(new FieldNode ( location, name, alias, directives, arguments, selectionSet )); }
/// <summary> /// Parses a interface type or object type field definition. /// <see cref="FieldDefinitionNode" />: /// Description? /// Name ArgumentsDefinition? : Type Directives[isConstant=true]? /// </summary> /// <param name="context">The parser context.</param> private FieldDefinitionNode ParseFieldDefinition( ParserContext context) { SyntaxToken start = context.Current; StringValueNode description = ParseDescription(context); NameNode name = ParseName(context); List <InputValueDefinitionNode> arguments = ParseArgumentDefinitions(context); context.ExpectColon(); ITypeNode type = ParseTypeReference(context); List <DirectiveNode> directives = ParseDirectives(context, true); Location location = context.CreateLocation(start); return(new FieldDefinitionNode ( location, name, description, arguments, type, directives )); }
private ObjectFieldNode ParseObjectField(ParserContext context, bool isConstant) { SyntaxToken start = context.Current; NameNode name = ParseName(context); context.ExpectColon(); IValueNode value = ParseValueLiteral(context, isConstant); Location location = context.CreateLocation(start); return(new ObjectFieldNode ( location, name, value )); }
/// <summary> /// Parses an argument. /// <see cref="ArgumentNode" />: /// Name : Value /// </summary> /// <param name="context">The parser context.</param> private ArgumentNode ParseArgument(ParserContext context, Func <ParserContext, IValueNode> parseValue) { SyntaxToken start = context.Current; NameNode name = context.ParseName(); context.ExpectColon(); IValueNode value = parseValue(context); Location location = context.CreateLocation(start); return(new ArgumentNode ( location, name, value )); }
/// <summary> /// Parses an operation type definition. /// <see cref="OperationTypeDefinitionNode" />: /// OperationType : NamedType /// </summary> /// <param name="context">The parser context.</param> private OperationTypeDefinitionNode ParseOperationTypeDefinition( ParserContext context) { SyntaxToken start = context.Current; OperationType operation = ParseOperationType(context); context.ExpectColon(); NamedTypeNode type = ParseNamedType(context); Location location = context.CreateLocation(start); return(new OperationTypeDefinitionNode ( location, operation, type )); }
/// <summary> /// Parses a variable definition. /// <see cref="VariableDefinitionNode" />: /// $variable : Type = DefaultValue? /// </summary> /// <param name="context">The parser context.</param> private VariableDefinitionNode ParseVariableDefinition(ParserContext context) { SyntaxToken start = context.Current; VariableNode variable = ParseVariable(context); context.ExpectColon(); ITypeNode type = ParseTypeReference(context); IValueNode defaultValue = context.Skip(TokenKind.Equal) ? ParseValueLiteral(context, true) : null; Location location = context.CreateLocation(start); return(new VariableDefinitionNode ( location, variable, type, defaultValue )); }