123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980 |
- var grammar = {
- Name: {
- token: 'Name'
- },
- String: {
- token: 'String'
- },
- BlockString: {
- token: 'BlockString'
- },
- Document: {
- listOfType: 'Definition'
- },
- Definition: {
- peek: [{
- ifCondition: {
- token: 'Name',
- oneOf: ['query', 'mutation', 'subscription']
- },
- expect: 'OperationDefinition'
- }, {
- ifCondition: {
- token: 'Name',
- ofValue: 'fragment'
- },
- expect: 'FragmentDefinition'
- }, {
- ifCondition: {
- token: 'Name',
- oneOf: ['schema', 'scalar', 'type', 'interface', 'union', 'enum', 'input', 'directive']
- },
- expect: 'TypeSystemDefinition'
- }, {
- ifCondition: {
- token: 'Name',
- ofValue: 'extend'
- },
- expect: 'TypeSystemExtension'
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'OperationDefinition'
- }, {
- ifCondition: 'String',
- expect: 'TypeSystemDefinition'
- }, {
- ifCondition: 'BlockString',
- expect: 'TypeSystemDefinition'
- }]
- },
- OperationDefinition: {
- peek: [{
- ifCondition: {
- token: '{'
- },
- expect: 'SelectionSet'
- }, {
- ifCondition: {
- token: 'Name',
- oneOf: ['query', 'mutation', 'subscription']
- },
- expect: ['OperationType', {
- token: 'Name',
- optional: true,
- tokenName: 'OperationName',
- definitionName: true
- }, {
- ofType: 'VariableDefinitions',
- optional: true
- }, {
- ofType: 'Directives',
- optional: true
- }, 'SelectionSet']
- }]
- },
- OperationType: {
- ofType: 'OperationTypeName'
- },
- OperationTypeName: {
- token: 'Name',
- oneOf: ['query', 'mutation', 'subscription'],
- definitionName: true
- },
- SelectionSet: [{
- token: '{'
- }, {
- listOfType: 'Selection'
- }, {
- token: '}'
- }],
- Selection: {
- peek: [{
- ifCondition: {
- token: '...'
- },
- expect: 'Fragment'
- }, {
- ifCondition: {
- token: 'Name'
- },
- expect: 'Field'
- }]
- },
- Field: [{
- ofType: 'Alias',
- optional: true,
- eatNextOnFail: true,
- definitionName: true
- }, {
- token: 'Name',
- tokenName: 'FieldName',
- definitionName: true
- }, {
- ofType: 'Arguments',
- optional: true
- }, {
- ofType: 'Directives',
- optional: true
- }, {
- ofType: 'SelectionSet',
- optional: true
- }],
- Arguments: [{
- token: '('
- }, {
- listOfType: 'Argument'
- }, {
- token: ')'
- }],
- Argument: [{
- token: 'Name',
- tokenName: 'ArgumentName',
- definitionName: true
- }, {
- token: ':'
- }, 'Value'],
- Alias: [{
- token: 'Name',
- tokenName: 'AliasName',
- definitionName: true
- }, {
- token: ':'
- }],
- Fragment: [{
- token: '...'
- }, {
- peek: [{
- ifCondition: 'FragmentName',
- expect: 'FragmentSpread'
- }, {
- ifCondition: {
- token: 'Name',
- ofValue: 'on'
- },
- expect: 'InlineFragment'
- }, {
- ifCondition: {
- token: '@'
- },
- expect: 'InlineFragment'
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'InlineFragment'
- }]
- }],
- FragmentSpread: ['FragmentName', {
- ofType: 'Directives',
- optional: true
- }],
- FragmentDefinition: [{
- token: 'Name',
- ofValue: 'fragment',
- tokenName: 'FragmentDefinitionKeyword'
- }, 'FragmentName', 'TypeCondition', {
- ofType: 'Directives',
- optional: true
- }, 'SelectionSet'],
- FragmentName: {
- token: 'Name',
- butNot: {
- token: 'Name',
- ofValue: 'on'
- },
- definitionName: true
- },
- TypeCondition: [{
- token: 'Name',
- ofValue: 'on',
- tokenName: 'OnKeyword'
- }, 'TypeName'],
- InlineFragment: [{
- ofType: 'TypeCondition',
- optional: true
- }, {
- ofType: 'Directives',
- optional: true
- }, 'SelectionSet'],
- Value: {
- peek: [{
- ifCondition: {
- token: '$'
- },
- expect: 'Variable'
- }, {
- ifCondition: 'IntValue',
- expect: {
- ofType: 'IntValue',
- tokenName: 'NumberValue'
- }
- }, {
- ifCondition: 'FloatValue',
- expect: {
- ofType: 'FloatValue',
- tokenName: 'NumberValue'
- }
- }, {
- ifCondition: 'BooleanValue',
- expect: {
- ofType: 'BooleanValue',
- tokenName: 'BooleanValue'
- }
- }, {
- ifCondition: 'EnumValue',
- expect: {
- ofType: 'EnumValue',
- tokenName: 'EnumValue'
- }
- }, {
- ifCondition: 'String',
- expect: {
- ofType: 'String',
- tokenName: 'StringValue'
- }
- }, {
- ifCondition: 'BlockString',
- expect: {
- ofType: 'BlockString',
- tokenName: 'StringValue'
- }
- }, {
- ifCondition: 'NullValue',
- expect: {
- ofType: 'NullValue',
- tokenName: 'NullValue'
- }
- }, {
- ifCondition: {
- token: '['
- },
- expect: 'ListValue'
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'ObjectValue'
- }]
- },
- ConstValue: {
- peek: [{
- ifCondition: 'IntValue',
- expect: {
- ofType: 'IntValue'
- }
- }, {
- ifCondition: 'FloatValue',
- expect: {
- ofType: 'FloatValue'
- }
- }, {
- ifCondition: 'BooleanValue',
- expect: 'BooleanValue'
- }, {
- ifCondition: 'EnumValue',
- expect: 'EnumValue'
- }, {
- ifCondition: 'String',
- expect: {
- ofType: 'String',
- tokenName: 'StringValue'
- }
- }, {
- ifCondition: 'BlockString',
- expect: {
- token: 'BlockString',
- tokenName: 'StringValue'
- }
- }, {
- ifCondition: 'NullValue',
- expect: 'NullValue'
- }, {
- ifCondition: {
- token: '['
- },
- expect: 'ConstListValue'
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'ObjectValue'
- }]
- },
- IntValue: {
- token: 'Int'
- },
- FloatValue: {
- token: 'Float'
- },
- StringValue: {
- peek: [{
- ifCondition: {
- token: 'String'
- },
- expect: {
- token: 'String',
- tokenName: 'StringValue'
- }
- }, {
- ifCondition: {
- token: 'BlockString'
- },
- expect: {
- token: 'BlockString',
- tokenName: 'StringValue'
- }
- }]
- },
- BooleanValue: {
- token: 'Name',
- oneOf: ['true', 'false'],
- tokenName: 'BooleanValue'
- },
- NullValue: {
- token: 'Name',
- ofValue: 'null',
- tokenName: 'NullValue'
- },
- EnumValue: {
- token: 'Name',
- butNot: {
- token: 'Name',
- oneOf: ['null', 'true', 'false']
- },
- tokenName: 'EnumValue'
- },
- ListValue: [{
- token: '['
- }, {
- listOfType: 'Value',
- optional: true
- }, {
- token: ']'
- }],
- ConstListValue: [{
- token: '['
- }, {
- listOfType: 'ConstValue',
- optional: true
- }, {
- token: ']'
- }],
- ObjectValue: [{
- token: '{'
- }, {
- listOfType: 'ObjectField',
- optional: true
- }, {
- token: '}'
- }],
- ObjectField: [{
- token: 'Name',
- tokenName: 'ObjectFieldName'
- }, {
- token: ':'
- }, {
- ofType: 'ConstValue'
- }],
- Variable: [{
- token: '$',
- tokenName: 'VariableName'
- }, {
- token: 'Name',
- tokenName: 'VariableName'
- }],
- VariableDefinitions: [{
- token: '('
- }, {
- listOfType: 'VariableDefinition'
- }, {
- token: ')'
- }],
- VariableDefinition: ['Variable', {
- token: ':'
- }, 'Type', {
- ofType: 'DefaultValue',
- optional: true
- }],
- DefaultValue: [{
- token: '='
- }, 'ConstValue'],
- TypeName: {
- token: 'Name',
- tokenName: 'TypeName',
- typeName: true
- },
- Type: {
- peek: [{
- ifCondition: {
- token: 'Name'
- },
- expect: ['TypeName', {
- token: '!',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '['
- },
- expect: 'ListType'
- }]
- },
- ListType: [{
- token: '['
- }, {
- listOfType: 'Type'
- }, {
- token: ']'
- }, {
- token: '!',
- optional: true
- }],
- Directives: {
- listOfType: 'Directive'
- },
- Directive: [{
- token: '@',
- tokenName: 'DirectiveName'
- }, {
- token: 'Name',
- tokenName: 'DirectiveName'
- }, {
- ofType: 'Arguments',
- optional: true
- }],
- TypeSystemDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- peek: [{
- ifCondition: {
- target: 'Name',
- ofValue: 'schema'
- },
- expect: 'SchemaDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'scalar'
- },
- expect: 'ScalarTypeDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'type'
- },
- expect: 'ObjectTypeDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'interface'
- },
- expect: 'InterfaceTypeDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'union'
- },
- expect: 'UnionTypeDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'enum'
- },
- expect: 'EnumTypeDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'input'
- },
- expect: 'InputObjectTypeDefinition'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'directive'
- },
- expect: 'DirectiveDefinition'
- }]
- }],
- TypeSystemExtension: {
- peek: [{
- ifCondition: {
- target: 'Name',
- ofValue: 'schema'
- },
- expect: 'SchemaExtension'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'scalar'
- },
- expect: 'ScalarTypeExtension'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'type'
- },
- expect: 'ObjectTypeExtension'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'interface'
- },
- expect: 'InterfaceTypeExtension'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'union'
- },
- expect: 'UnionTypeExtension'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'enum'
- },
- expect: 'EnumTypeExtension'
- }, {
- ifCondition: {
- target: 'Name',
- ofValue: 'input'
- },
- expect: 'InputObjectTypeExtension'
- }]
- },
- SchemaDefinition: [{
- token: 'Name',
- ofValue: 'schema',
- tokenName: 'SchemaDefinitionKeyword'
- }, {
- ofType: 'Directives',
- optional: true
- }, {
- token: '{'
- }, {
- listOfType: 'RootOperationTypeDefinition'
- }, {
- token: '}'
- }],
- RootOperationTypeDefinition: ['OperationType', {
- token: ':'
- }, {
- token: 'Name',
- tokenName: 'OperationTypeDefinitionName'
- }],
- SchemaExtension: [{
- token: 'Name',
- ofValue: 'extend'
- }, {
- token: 'Name',
- ofValue: 'schema'
- }, 'Name', {
- peek: [{
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: [{
- token: '{'
- }, {
- listOfType: 'RootOperationTypeDefinition'
- }, {
- token: '}'
- }],
- optional: true
- }]
- }, {
- ifCondition: {
- token: '{'
- },
- expect: [{
- token: '{'
- }, {
- listOfType: 'RootOperationTypeDefinition'
- }, {
- token: '}'
- }]
- }]
- }],
- Description: 'StringValue',
- ScalarTypeDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'scalar',
- tokenName: 'ScalarDefinitionKeyword'
- }, 'TypeName', {
- ofType: 'Directives',
- optional: true
- }],
- ScalarTypeExtension: [{
- token: 'Name',
- ofValue: 'extend',
- tokenName: 'ExtendDefinitionKeyword'
- }, {
- token: 'Name',
- ofValue: 'scalar',
- tokenName: 'ScalarDefinitionKeyword'
- }, 'TypeName', 'Directives'],
- ObjectTypeDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'type',
- tokenName: 'TypeDefinitionKeyword'
- }, 'TypeName', {
- ofType: 'ImplementsInterfaces',
- optional: true
- }, {
- ofType: 'Directives',
- optional: true
- }, {
- ofType: 'FieldsDefinition',
- optional: true
- }],
- ImplementsInterfaces: [{
- token: 'Name',
- ofValue: 'implements',
- tokenName: 'ImplementsKeyword'
- }, {
- token: '&',
- optional: true
- }, 'TypeName', {
- listOfType: 'ImplementsAdditionalInterfaceName',
- optional: true
- }],
- ImplementsAdditionalInterfaceName: [{
- token: '&'
- }, 'TypeName'],
- FieldsDefinition: [{
- token: '{'
- }, {
- listOfType: 'FieldDefinition'
- }, {
- token: '}'
- }],
- FieldDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- tokenName: 'AliasName',
- definitionName: true
- }, {
- ofType: 'ArgumentsDefinition',
- optional: true
- }, {
- token: ':'
- }, 'Type', {
- ofType: 'Directives',
- optional: true
- }],
- ArgumentsDefinition: [{
- token: '('
- }, {
- listOfType: 'InputValueDefinition'
- }, {
- token: ')'
- }],
- InputValueDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- tokenName: 'ArgumentName'
- }, {
- token: ':'
- }, 'Type', {
- ofType: 'DefaultValue',
- optional: true
- }, {
- ofType: 'Directives',
- optional: true
- }],
- ObjectTypeExtension: [{
- token: 'Name',
- ofValue: 'extend',
- tokenName: 'ExtendDefinitionKeyword'
- }, {
- token: 'Name',
- ofValue: 'type',
- tokenName: 'TypeDefinitionKeyword'
- }, 'TypeName', {
- peek: [{
- ifCondition: {
- token: 'Name',
- ofValue: 'interface'
- },
- expect: ['ImplementsInterfaces', {
- peek: [{
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: 'FieldsDefinition',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'FieldsDefinition'
- }],
- optional: true
- }]
- }, {
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: 'FieldsDefinition',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'FieldsDefinition'
- }]
- }],
- InterfaceTypeDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'interface',
- tokenName: 'InterfaceDefinitionKeyword'
- }, 'TypeName', {
- ofType: 'Directives',
- optional: true
- }, {
- ofType: 'FieldsDefinition',
- optional: true
- }],
- InterfaceTypeExtension: [{
- token: 'Name',
- ofValue: 'extend',
- tokenName: 'ExtendDefinitionKeyword'
- }, {
- token: 'Name',
- ofValue: 'interface',
- tokenName: 'InterfaceDefinitionKeyword'
- }, 'TypeName', {
- peek: [{
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: 'FieldsDefinition',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'FieldsDefinition'
- }]
- }],
- UnionTypeDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'union',
- tokenName: 'UnionDefinitionKeyword'
- }, 'TypeName', {
- ofType: 'Directives',
- optional: true
- }, {
- ofType: 'UnionMemberTypes',
- optional: true
- }],
- UnionMemberTypes: [{
- token: '='
- }, {
- token: '|',
- optional: true
- }, 'Name', {
- listOfType: 'UnionMemberAdditionalTypeName',
- optional: true
- }],
- UnionMemberAdditionalTypeName: [{
- token: '|'
- }, 'TypeName'],
- UnionTypeExtension: [{
- token: 'Name',
- ofValue: 'extend',
- tokenName: 'ExtendDefinitionKeyword'
- }, {
- token: 'Name',
- ofValue: 'union',
- tokenName: 'UnionDefinitionKeyword'
- }, 'TypeName', {
- peek: [{
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: 'UnionMemberTypes',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '='
- },
- expect: 'UnionMemberTypes'
- }]
- }],
- EnumTypeDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'enum',
- tokenName: 'EnumDefinitionKeyword'
- }, 'TypeName', {
- ofType: 'Directives',
- optional: true
- }, {
- ofType: 'EnumValuesDefinition',
- optional: true
- }],
- EnumValuesDefinition: [{
- token: '{'
- }, {
- listOfType: 'EnumValueDefinition'
- }, {
- token: '}'
- }],
- EnumValueDefinition: [{
- ofType: 'Description',
- optional: true
- }, 'EnumValue', {
- ofType: 'Directives',
- optional: true
- }],
- EnumTypeExtension: [{
- token: 'Name',
- ofValue: 'extend',
- tokenName: 'ExtendDefinitionKeyword'
- }, {
- token: 'Name',
- ofValue: 'enum',
- tokenName: 'EnumDefinitionKeyword'
- }, 'TypeName', {
- peek: [{
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: 'EnumValuesDefinition',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'EnumValuesDefinition'
- }]
- }],
- InputObjectTypeDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'input',
- tokenName: 'InputDefinitionKeyword'
- }, 'TypeName', {
- ofType: 'Directives',
- optional: true
- }, {
- ofType: 'InputFieldsDefinition',
- optional: true
- }],
- InputFieldsDefinition: [{
- token: '{'
- }, {
- listOfType: 'InputValueDefinition'
- }, {
- token: '}'
- }],
- InputObjectTypeExtension: [{
- token: 'Name',
- ofValue: 'extend',
- tokenName: 'ExtendDefinitionKeyword'
- }, {
- token: 'Name',
- ofValue: 'input',
- tokenName: 'InputDefinitionKeyword'
- }, 'TypeName', {
- peek: [{
- ifCondition: {
- token: '@'
- },
- expect: ['Directives', {
- ofType: 'InputFieldsDefinition',
- optional: true
- }]
- }, {
- ifCondition: {
- token: '{'
- },
- expect: 'InputFieldsDefinition'
- }]
- }],
- DirectiveDefinition: [{
- ofType: 'Description',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'directive',
- tokenName: 'DirectiveDefinitionKeyword'
- }, {
- token: '@',
- tokenName: 'DirectiveName'
- }, {
- token: 'Name',
- tokenName: 'DirectiveName'
- }, {
- ofType: 'ArgumentsDefinition',
- optional: true
- }, {
- token: 'Name',
- ofValue: 'on',
- tokenName: 'OnKeyword'
- }, 'DirectiveLocations'],
- DirectiveLocations: [{
- token: '|',
- optional: true
- }, 'DirectiveLocation', {
- listOfType: 'DirectiveLocationAdditionalName',
- optional: true
- }],
- DirectiveLocationAdditionalName: [{
- token: '|'
- }, 'DirectiveLocation'],
- DirectiveLocation: {
- peek: [{
- ifCondition: 'ExecutableDirectiveLocation',
- expect: 'ExecutableDirectiveLocation'
- }, {
- ifCondition: 'TypeSystemDirectiveLocation',
- expect: 'TypeSystemDirectiveLocation'
- }]
- },
- ExecutableDirectiveLocation: {
- token: 'Name',
- oneOf: ['QUERY', 'MUTATION', 'SUBSCRIPTION', 'FIELD', 'FRAGMENT_DEFINITION', 'FRAGMENT_SPREAD', 'INLINE_FRAGMENT'],
- tokenName: 'EnumValue'
- },
- TypeSystemDirectiveLocation: {
- token: 'Name',
- oneOf: ['SCHEMA', 'SCALAR', 'OBJECT', 'FIELD_DEFINITION', 'ARGUMENT_DEFINITION', 'INTERFACE', 'UNION', 'ENUM', 'ENUM_VALUE', 'INPUT_OBJECT', 'INPUT_FIELD_DEFINITION'],
- tokenName: 'EnumValue'
- } // FIXME: enforce proper typing
- };
- export default grammar;
|