src/GraphQL/BaseParser.php
<?php
/**
* This file is part of Phplrt package.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Railt\GraphQL;
use Phplrt\Lexer\Driver\NativeRegex;
use Phplrt\Lexer\LexerInterface;
use Phplrt\Parser\Grammar;
use Phplrt\Parser\GrammarInterface;
use Phplrt\Parser\Rule\Alternation;
use Phplrt\Parser\Rule\Concatenation;
use Phplrt\Parser\Rule\Repetition;
use Phplrt\Parser\Rule\Terminal;
/**
* --- DO NOT EDIT THIS FILE ---
*
* Class BaseParser has been auto-generated.
* Generated at: 22-05-2019 21:18:54
*
* --- DO NOT EDIT THIS FILE ---
*/
class BaseParser extends \Phplrt\Parser\Parser
{
public const T_AND = 'T_AND';
public const T_OR = 'T_OR';
public const T_PARENTHESIS_OPEN = 'T_PARENTHESIS_OPEN';
public const T_PARENTHESIS_CLOSE = 'T_PARENTHESIS_CLOSE';
public const T_BRACKET_OPEN = 'T_BRACKET_OPEN';
public const T_BRACKET_CLOSE = 'T_BRACKET_CLOSE';
public const T_BRACE_OPEN = 'T_BRACE_OPEN';
public const T_BRACE_CLOSE = 'T_BRACE_CLOSE';
public const T_NON_NULL = 'T_NON_NULL';
public const T_THREE_DOTS = 'T_THREE_DOTS';
public const T_EQUAL = 'T_EQUAL';
public const T_DIRECTIVE_AT = 'T_DIRECTIVE_AT';
public const T_COLON = 'T_COLON';
public const T_COMMA = 'T_COMMA';
public const T_HEX_NUMBER = 'T_HEX_NUMBER';
public const T_BIN_NUMBER = 'T_BIN_NUMBER';
public const T_NUMBER = 'T_NUMBER';
public const T_TRUE = 'T_TRUE';
public const T_FALSE = 'T_FALSE';
public const T_NULL = 'T_NULL';
public const T_BLOCK_STRING = 'T_BLOCK_STRING';
public const T_STRING = 'T_STRING';
public const T_TYPE = 'T_TYPE';
public const T_ENUM = 'T_ENUM';
public const T_UNION = 'T_UNION';
public const T_INTERFACE = 'T_INTERFACE';
public const T_SCHEMA = 'T_SCHEMA';
public const T_SCALAR = 'T_SCALAR';
public const T_DIRECTIVE = 'T_DIRECTIVE';
public const T_INPUT = 'T_INPUT';
public const T_QUERY = 'T_QUERY';
public const T_MUTATION = 'T_MUTATION';
public const T_SUBSCRIPTION = 'T_SUBSCRIPTION';
public const T_FRAGMENT = 'T_FRAGMENT';
public const T_EXTEND = 'T_EXTEND';
public const T_EXTENDS = 'T_EXTENDS';
public const T_IMPLEMENTS = 'T_IMPLEMENTS';
public const T_ON = 'T_ON';
public const T_PLUS = 'T_PLUS';
public const T_MINUS = 'T_MINUS';
public const T_DIV = 'T_DIV';
public const T_MUL = 'T_MUL';
public const T_VARIABLE = 'T_VARIABLE';
public const T_NAME = 'T_NAME';
public const T_COMMENT = 'T_COMMENT';
public const T_HTAB = 'T_HTAB';
public const T_LF = 'T_LF';
public const T_CR = 'T_CR';
public const T_WHITESPACE = 'T_WHITESPACE';
public const T_UTF32BE_BOM = 'T_UTF32BE_BOM';
public const T_UTF32LE_BOM = 'T_UTF32LE_BOM';
public const T_UTF16BE_BOM = 'T_UTF16BE_BOM';
public const T_UTF16LE_BOM = 'T_UTF16LE_BOM';
public const T_UTF8_BOM = 'T_UTF8_BOM';
public const T_UTF7_BOM = 'T_UTF7_BOM';
/**
* Lexical tokens list.
*
* @var string[]
*/
protected const LEXER_TOKENS = [
self::T_AND => '&',
self::T_OR => '\\|',
self::T_PARENTHESIS_OPEN => '\\(',
self::T_PARENTHESIS_CLOSE => '\\)',
self::T_BRACKET_OPEN => '\\[',
self::T_BRACKET_CLOSE => '\\]',
self::T_BRACE_OPEN => '{',
self::T_BRACE_CLOSE => '}',
self::T_NON_NULL => '!',
self::T_THREE_DOTS => '\\.\\.\\.',
self::T_EQUAL => '=',
self::T_DIRECTIVE_AT => '@',
self::T_COLON => ':',
self::T_COMMA => ',',
self::T_HEX_NUMBER => '\\-?0x([0-9a-fA-F]+)',
self::T_BIN_NUMBER => '\\-?0b([0-1]+)',
self::T_NUMBER => '\\-?(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][\\+\\-]?[0-9]+)?',
self::T_TRUE => '(?<=\\b)true\\b',
self::T_FALSE => '(?<=\\b)false\\b',
self::T_NULL => '(?<=\\b)null\\b',
self::T_BLOCK_STRING => '"""((?:\\\\"""|(?!""").)*)"""',
self::T_STRING => '"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"',
self::T_TYPE => '(?<=\\b)type\\b',
self::T_ENUM => '(?<=\\b)enum\\b',
self::T_UNION => '(?<=\\b)union\\b',
self::T_INTERFACE => '(?<=\\b)interface\\b',
self::T_SCHEMA => '(?<=\\b)schema\\b',
self::T_SCALAR => '(?<=\\b)scalar\\b',
self::T_DIRECTIVE => '(?<=\\b)directive\\b',
self::T_INPUT => '(?<=\\b)input\\b',
self::T_QUERY => '(?<=\\b)query\\b',
self::T_MUTATION => '(?<=\\b)mutation\\b',
self::T_SUBSCRIPTION => '(?<=\\b)subscription\\b',
self::T_FRAGMENT => '(?<=\\b)fragment\\b',
self::T_EXTEND => '(?<=\\b)extend\\b',
self::T_EXTENDS => '(?<=\\b)extends\\b',
self::T_IMPLEMENTS => '(?<=\\b)implements\\b',
self::T_ON => '(?<=\\b)on\\b',
self::T_PLUS => '\\\\+',
self::T_MINUS => '\\\\-',
self::T_DIV => '\\\\/',
self::T_MUL => '\\\\*',
self::T_VARIABLE => '\\$([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*)',
self::T_NAME => '[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*',
self::T_COMMENT => '#[^\\n]*',
self::T_HTAB => '\\x09',
self::T_LF => '\\x0A',
self::T_CR => '\\x0D',
self::T_WHITESPACE => '\\x20',
self::T_UTF32BE_BOM => '^\\x00\\x00\\xFE\\xFF',
self::T_UTF32LE_BOM => '^\\xFE\\xFF\\x00\\x00',
self::T_UTF16BE_BOM => '^\\xFE\\xFF',
self::T_UTF16LE_BOM => '^\\xFF\\xFE',
self::T_UTF8_BOM => '^\\xEF\\xBB\\xBF',
self::T_UTF7_BOM => '^\\x2B\\x2F\\x76\\x38\\x2B\\x2F\\x76\\x39\\x2B\\x2F\\x76\\x2B\\x2B\\x2F\\x76\\x2F',
];
/**
* List of skipped tokens.
*
* @var string[]
*/
protected const LEXER_SKIPPED_TOKENS = [
'T_COMMENT',
'T_HTAB',
'T_LF',
'T_CR',
'T_WHITESPACE',
'T_UTF32BE_BOM',
'T_UTF32LE_BOM',
'T_UTF16BE_BOM',
'T_UTF16LE_BOM',
'T_UTF8_BOM',
'T_UTF7_BOM',
];
/**
* List of rule delegates.
*
* @var string[]
*/
protected const PARSER_DELEGATES = [
'Name' => \Railt\GraphQL\AST\Common\Name::class,
'BooleanValue' => \Railt\GraphQL\AST\Value\BooleanValue::class,
'EnumValue' => \Railt\GraphQL\AST\Value\EnumValue::class,
'ListType' => \Railt\GraphQL\AST\TypeHint\ListType::class,
'NonNullType' => \Railt\GraphQL\AST\TypeHint\NonNullType::class,
'Type' => \Railt\GraphQL\AST\TypeHint\Type::class,
'ListValue' => \Railt\GraphQL\AST\Value\ListValue::class,
'NullValue' => \Railt\GraphQL\AST\Value\NullValue::class,
'NumberValue' => \Railt\GraphQL\AST\Value\NumberValue::class,
'ObjectValue' => \Railt\GraphQL\AST\Value\ObjectValue::class,
'StringValue' => \Railt\GraphQL\AST\Value\StringValue::class,
'Variable' => \Railt\GraphQL\AST\Value\VariableValue::class,
'TypeDefinitionImplements' => \Railt\GraphQL\AST\Common\ImplementInterfaces::class,
'Description' => \Railt\GraphQL\AST\Common\Description::class,
'DefaultValue' => \Railt\GraphQL\AST\Common\DefaultValue::class,
'TypeCondition' => \Railt\GraphQL\AST\Common\TypeCondition::class,
'Argument' => \Railt\GraphQL\AST\Executable\Argument::class,
'Directive' => \Railt\GraphQL\AST\Executable\Directive::class,
'Field' => \Railt\GraphQL\AST\Executable\Field::class,
'Alias' => \Railt\GraphQL\AST\Executable\Alias::class,
'FragmentSpread' => \Railt\GraphQL\AST\Executable\FragmentSpread::class,
'InlineFragment' => \Railt\GraphQL\AST\Executable\InlineFragment::class,
'QueryOperation' => \Railt\GraphQL\AST\Executable\Selection::class,
'MutationOperation' => \Railt\GraphQL\AST\Executable\Selection::class,
'SubscriptionOperation' => \Railt\GraphQL\AST\Executable\Selection::class,
'EnumExtension' => \Railt\GraphQL\AST\Extension\EnumExtensionNode::class,
'InputExtension' => \Railt\GraphQL\AST\Extension\InputExtensionNode::class,
'InterfaceExtension' => \Railt\GraphQL\AST\Extension\InterfaceExtensionNode::class,
'ObjectExtension' => \Railt\GraphQL\AST\Extension\ObjectExtensionNode::class,
'ScalarExtension' => \Railt\GraphQL\AST\Extension\ScalarExtensionNode::class,
'SchemaExtension' => \Railt\GraphQL\AST\Extension\SchemaExtensionNode::class,
'UnionExtension' => \Railt\GraphQL\AST\Extension\UnionExtensionNode::class,
'ArgumentDefinition' => \Railt\GraphQL\AST\Definition\ArgumentNode::class,
'DirectiveDefinition' => \Railt\GraphQL\AST\Definition\DirectiveNode::class,
'DirectiveLocation' => \Railt\GraphQL\AST\Definition\DirectiveLocationNode::class,
'EnumDefinition' => \Railt\GraphQL\AST\Definition\EnumNode::class,
'EnumValueDefinition' => \Railt\GraphQL\AST\Definition\EnumValueNode::class,
'FragmentDefinition' => \Railt\GraphQL\AST\Definition\FragmentNode::class,
'InputDefinition' => \Railt\GraphQL\AST\Definition\InputNode::class,
'InputFieldDefinition' => \Railt\GraphQL\AST\Definition\InputFieldNode::class,
'InterfaceDefinition' => \Railt\GraphQL\AST\Definition\InterfaceNode::class,
'ObjectDefinition' => \Railt\GraphQL\AST\Definition\ObjectNode::class,
'FieldDefinition' => \Railt\GraphQL\AST\Definition\FieldNode::class,
'ScalarDefinition' => \Railt\GraphQL\AST\Definition\ScalarNode::class,
'ScalarDefinitionExtends' => \Railt\GraphQL\AST\Common\ExtendTypes::class,
'SchemaDefinition' => \Railt\GraphQL\AST\Definition\SchemaNode::class,
'SchemaFieldDefinition' => \Railt\GraphQL\AST\Definition\SchemaFieldNode::class,
'UnionDefinition' => \Railt\GraphQL\AST\Definition\UnionNode::class,
'VariableDefinition' => \Railt\GraphQL\AST\Definition\VariableNode::class,
];
/**
* Parser root rule name.
*
* @var string
*/
protected const PARSER_ROOT_RULE = 'Document';
/**
* BaseParser constructor.
*/
public function __construct()
{
parent::__construct($this->createLexer(), $this->createGrammar());
}
/**
* @return LexerInterface
*/
protected function createLexer(): LexerInterface
{
return new NativeRegex(static::LEXER_TOKENS, static::LEXER_SKIPPED_TOKENS);
}
/**
* @return GrammarInterface
*/
protected function createGrammar(): GrammarInterface
{
return new Grammar($this->createGrammarRules(), static::PARSER_ROOT_RULE, static::PARSER_DELEGATES);
}
/**
* @return array|\Phplrt\Parser\Rule\Rule[]
*/
protected function createGrammarRules(): array
{
return [
new Concatenation(0, ['TypeSystemLanguage'], 'Document'),
new Concatenation(1, ['ExecutableLanguage'], null),
new Concatenation(2, [1], 'Document'),
(new Alternation('Document', [0, 2], null))->setDefaultId('Document'),
new Concatenation('TypeName', ['__typeName'], 'Name'),
new Concatenation('__typeName', ['__nameWithReserved'], null),
new Concatenation('NameWithReserved', ['__nameWithReserved'], 'Name'),
new Terminal(7, 'T_TRUE', true),
new Terminal(8, 'T_FALSE', true),
new Terminal(9, 'T_NULL', true),
new Alternation('__nameWithReserved', ['__nameWithoutValues', 7, 8, 9], null),
new Concatenation('NameWithoutReserved', ['__nameWithoutReserved'], 'Name'),
new Terminal('__nameWithoutReserved', 'T_NAME', true),
new Concatenation('NameWithoutValues', ['__nameWithoutValues'], 'Name'),
new Terminal(14, 'T_TYPE', true),
new Terminal(15, 'T_ENUM', true),
new Terminal(16, 'T_UNION', true),
new Terminal(17, 'T_INPUT_UNION', true),
new Terminal(18, 'T_INTERFACE', true),
new Terminal(19, 'T_SCHEMA', true),
new Terminal(20, 'T_SCALAR', true),
new Terminal(21, 'T_DIRECTIVE', true),
new Terminal(22, 'T_INPUT', true),
new Terminal(23, 'T_FRAGMENT', true),
new Terminal(24, 'T_EXTEND', true),
new Terminal(25, 'T_EXTENDS', true),
new Terminal(26, 'T_IMPLEMENTS', true),
new Terminal(27, 'T_ON', true),
new Terminal(28, 'T_QUERY', true),
new Terminal(29, 'T_MUTATION', true),
new Terminal(30, 'T_SUBSCRIPTION', true),
new Alternation('__nameWithoutValues', ['__nameWithoutReserved', 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30], null),
new Concatenation(32, ['TypeName'], null),
(new Concatenation('Name', [32], 'Name'))->setDefaultId('Name'),
new Terminal(34, 'T_FALSE', true),
new Concatenation(35, [34], 'BooleanValue'),
new Terminal(36, 'T_TRUE', true),
new Concatenation(37, [36], 'BooleanValue'),
(new Alternation('BooleanValue', [35, 37], null))->setDefaultId('BooleanValue'),
new Concatenation(39, ['NameWithoutValues'], null),
(new Concatenation('EnumValue', [39], 'EnumValue'))->setDefaultId('EnumValue'),
new Concatenation(41, ['Type'], null),
new Alternation('TypeHint', ['ListType', 'NonNullType', 41], null),
new Terminal(43, 'T_BRACKET_OPEN', false),
new Concatenation(44, ['NonNullType'], 'ListType'),
new Concatenation(45, ['Type'], 'ListType'),
new Alternation(46, [44, 45], null),
new Terminal(47, 'T_BRACKET_CLOSE', false),
(new Concatenation('ListType', [43, 46, 47], null))->setDefaultId('ListType'),
new Concatenation(49, ['ListType'], 'NonNullType'),
new Concatenation(50, ['Type'], 'NonNullType'),
new Alternation(51, [49, 50], null),
new Terminal(52, 'T_NON_NULL', false),
(new Concatenation('NonNullType', [51, 52], null))->setDefaultId('NonNullType'),
new Concatenation(54, ['TypeName'], null),
(new Concatenation('Type', [54], 'Type'))->setDefaultId('Type'),
new Terminal(56, 'T_BRACKET_OPEN', false),
new Repetition(57, 0, -1, '__listValue', null),
new Terminal(58, 'T_BRACKET_CLOSE', false),
(new Concatenation('ListValue', [56, 57, 58], 'ListValue'))->setDefaultId('ListValue'),
new Terminal(60, 'T_COMMA', false),
new Repetition(61, 0, 1, 60, null),
new Concatenation('__listValue', ['Value', 61], null),
new Terminal(63, 'T_NULL', false),
(new Concatenation('NullValue', [63], 'NullValue'))->setDefaultId('NullValue'),
new Terminal(65, 'T_NUMBER', true),
new Concatenation(66, [65], 'NumberValue'),
new Terminal(67, 'T_HEX_NUMBER', true),
new Concatenation(68, [67], 'NumberValue'),
new Terminal(69, 'T_BIN_NUMBER', true),
new Concatenation(70, [69], 'NumberValue'),
(new Alternation('NumberValue', [66, 68, 70], null))->setDefaultId('NumberValue'),
new Terminal(72, 'T_BRACE_OPEN', false),
new Repetition(73, 0, -1, 'ObjectField', null),
new Terminal(74, 'T_BRACE_CLOSE', false),
(new Concatenation('ObjectValue', [72, 73, 74], 'ObjectValue'))->setDefaultId('ObjectValue'),
new Terminal(76, 'T_COLON', false),
new Terminal(77, 'T_COMMA', false),
new Repetition(78, 0, 1, 77, null),
(new Concatenation('ObjectField', ['NameWithReserved', 76, 'Value', 78], 'ObjectField'))->setDefaultId('ObjectField'),
new Terminal(80, 'T_BLOCK_STRING', true),
new Concatenation(81, [80], 'StringValue'),
new Terminal(82, 'T_STRING', true),
new Concatenation(83, [82], 'StringValue'),
(new Alternation('StringValue', [81, 83], null))->setDefaultId('StringValue'),
new Terminal(85, 'T_VARIABLE', true),
(new Concatenation('Variable', [85], 'Variable'))->setDefaultId('Variable'),
new Concatenation(87, ['ObjectValue'], null),
new Alternation('Value', ['Variable', 'NumberValue', 'StringValue', 'BooleanValue', 'NullValue', 'EnumValue', 'ListValue', 87], null),
new Terminal(89, 'T_EXTENDS', false),
new Concatenation(90, ['TypeName'], null),
(new Concatenation('TypeDefinitionExtends', [89, 90], 'TypeDefinitionExtends'))->setDefaultId('TypeDefinitionExtends'),
new Terminal(92, 'T_IMPLEMENTS', false),
new Repetition(93, 0, 1, '__implementsDelimiter', null),
new Concatenation(94, ['__implementsDelimiter', 'TypeName'], 'TypeDefinitionImplements'),
new Repetition(95, 0, -1, 94, null),
(new Concatenation('TypeDefinitionImplements', [92, 93, 'TypeName', 95], null))->setDefaultId('TypeDefinitionImplements'),
new Terminal(97, 'T_COMMA', false),
new Terminal(98, 'T_AND', false),
new Alternation('__implementsDelimiter', [97, 98], null),
new Concatenation(100, ['StringValue'], null),
(new Concatenation('Description', [100], 'Description'))->setDefaultId('Description'),
new Terminal(102, 'T_EQUAL', false),
new Concatenation(103, ['Value'], null),
(new Concatenation('DefaultValue', [102, 103], 'DefaultValue'))->setDefaultId('DefaultValue'),
new Terminal(105, 'T_ON', false),
new Concatenation(106, ['TypeName'], null),
(new Concatenation('TypeCondition', [105, 106], 'TypeCondition'))->setDefaultId('TypeCondition'),
new Terminal(108, 'T_PARENTHESIS_OPEN', false),
new Repetition(109, 0, -1, '__argument', null),
new Terminal(110, 'T_PARENTHESIS_CLOSE', false),
new Concatenation('Arguments', [108, 109, 110], null),
new Terminal(112, 'T_COMMA', false),
new Repetition(113, 0, 1, 112, null),
new Concatenation('__argument', ['Argument', 113], null),
new Terminal(115, 'T_COLON', false),
new Concatenation(116, ['Value'], null),
(new Concatenation('Argument', ['NameWithReserved', 115, 116], 'Argument'))->setDefaultId('Argument'),
new Repetition('Directives', 1, -1, 'Directive', null),
new Terminal(119, 'T_DIRECTIVE_AT', false),
new Repetition(120, 0, 1, 'Arguments', null),
(new Concatenation('Directive', [119, 'TypeName', 120], 'Directive'))->setDefaultId('Directive'),
new Repetition(122, 0, 1, 'Alias', null),
new Repetition(123, 0, 1, 'Arguments', null),
new Repetition(124, 0, 1, 'Directives', null),
new Repetition(125, 0, 1, 'SelectionSet', null),
(new Concatenation('Field', [122, 'NameWithReserved', 123, 124, 125], 'Field'))->setDefaultId('Field'),
new Terminal(127, 'T_COLON', false),
(new Concatenation('Alias', ['NameWithReserved', 127], 'Alias'))->setDefaultId('Alias'),
new Terminal(129, 'T_THREE_DOTS', false),
new Repetition(130, 0, 1, 'Directives', null),
(new Concatenation('FragmentSpread', [129, 'NameWithReserved', 130], 'FragmentSpread'))->setDefaultId('FragmentSpread'),
new Terminal(132, 'T_THREE_DOTS', false),
new Repetition(133, 0, 1, 'TypeCondition', null),
new Repetition(134, 0, 1, 'Directives', null),
new Concatenation(135, ['SelectionSet'], null),
(new Concatenation('InlineFragment', [132, 133, 134, 135], 'InlineFragment'))->setDefaultId('InlineFragment'),
new Concatenation(137, ['SubscriptionOperation'], null),
new Alternation('OperationDefinition', ['QueryOperation', 'MutationOperation', 137], null),
new Terminal(139, 'T_QUERY', false),
new Repetition(140, 0, 1, 'NameWithReserved', null),
new Concatenation(141, [139, 140], 'QueryOperation'),
new Repetition(142, 0, 1, 141, null),
new Concatenation(143, ['__operationDefinitionBody'], null),
(new Concatenation('QueryOperation', [142, 143], null))->setDefaultId('QueryOperation'),
new Terminal(145, 'T_MUTATION', false),
new Repetition(146, 0, 1, 'NameWithReserved', null),
new Concatenation(147, ['__operationDefinitionBody'], null),
(new Concatenation('MutationOperation', [145, 146, 147], 'MutationOperation'))->setDefaultId('MutationOperation'),
new Terminal(149, 'T_SUBSCRIPTION', false),
new Repetition(150, 0, 1, 'NameWithReserved', null),
new Concatenation(151, ['__operationDefinitionBody'], null),
(new Concatenation('SubscriptionOperation', [149, 150, 151], 'SubscriptionOperation'))->setDefaultId('SubscriptionOperation'),
new Repetition(153, 0, 1, 'VariableDefinitions', null),
new Repetition(154, 0, 1, 'Directives', null),
new Concatenation(155, ['SelectionSet'], null),
new Concatenation('__operationDefinitionBody', [153, 154, 155], null),
new Terminal(157, 'T_BRACE_OPEN', false),
new Repetition(158, 0, -1, '__selection', null),
new Terminal(159, 'T_BRACE_CLOSE', false),
new Concatenation('SelectionSet', [157, 158, 159], null),
new Terminal(161, 'T_COMMA', false),
new Repetition(162, 0, 1, 161, null),
new Concatenation('__selection', ['Selection', 162], null),
new Concatenation(164, ['FragmentSpread'], null),
new Alternation('Selection', ['Field', 'InlineFragment', 164], null),
new Repetition(166, 0, 1, 'Description', null),
new Terminal(167, 'T_EXTEND', false),
new Concatenation(168, ['EnumDefinitionExceptDescription'], null),
(new Concatenation('EnumExtension', [166, 167, 168], 'EnumExtension'))->setDefaultId('EnumExtension'),
new Repetition(170, 0, 1, 'Description', null),
new Terminal(171, 'T_EXTEND', false),
new Concatenation(172, ['InputDefinitionExceptDescription'], null),
(new Concatenation('InputExtension', [170, 171, 172], 'InputExtension'))->setDefaultId('InputExtension'),
new Repetition(174, 0, 1, 'Description', null),
new Terminal(175, 'T_EXTEND', false),
new Concatenation(176, ['InterfaceDefinitionExceptDescription'], null),
(new Concatenation('InterfaceExtension', [174, 175, 176], 'InterfaceExtension'))->setDefaultId('InterfaceExtension'),
new Repetition(178, 0, 1, 'Description', null),
new Terminal(179, 'T_EXTEND', false),
new Concatenation(180, ['ObjectDefinitionExceptDescription'], null),
(new Concatenation('ObjectExtension', [178, 179, 180], 'ObjectExtension'))->setDefaultId('ObjectExtension'),
new Repetition(182, 0, 1, 'Description', null),
new Terminal(183, 'T_EXTEND', false),
new Concatenation(184, ['ScalarDefinitionExceptDescription'], null),
(new Concatenation('ScalarExtension', [182, 183, 184], 'ScalarExtension'))->setDefaultId('ScalarExtension'),
new Repetition(186, 0, 1, 'Description', null),
new Terminal(187, 'T_EXTEND', false),
new Concatenation(188, ['SchemaDefinitionExceptDescription'], null),
(new Concatenation('SchemaExtension', [186, 187, 188], 'SchemaExtension'))->setDefaultId('SchemaExtension'),
new Repetition(190, 0, 1, 'Description', null),
new Terminal(191, 'T_EXTEND', false),
new Concatenation(192, ['UnionDefinitionExceptDescription'], null),
(new Concatenation('UnionExtension', [190, 191, 192], 'UnionExtension'))->setDefaultId('UnionExtension'),
new Terminal(194, 'T_PARENTHESIS_OPEN', false),
new Repetition(195, 0, 1, '__argumentDefinitions', null),
new Terminal(196, 'T_PARENTHESIS_CLOSE', false),
new Concatenation('ArgumentDefinitions', [194, 195, 196], null),
new Repetition('__argumentDefinitions', 1, -1, 'ArgumentDefinition', null),
new Repetition(199, 0, 1, 'Description', null),
new Repetition(200, 0, 1, 'DefaultValue', null),
new Repetition(201, 0, -1, 'Directive', null),
new Terminal(202, 'T_COMMA', false),
new Repetition(203, 0, 1, 202, null),
(new Concatenation('ArgumentDefinition', [199, '__argumentDefinitionBody', 200, 201, 203], 'ArgumentDefinition'))->setDefaultId('ArgumentDefinition'),
new Terminal(205, 'T_COLON', false),
new Concatenation(206, ['TypeHint'], null),
new Concatenation('__argumentDefinitionBody', ['NameWithReserved', 205, 206], null),
new Repetition(208, 0, 1, 'Description', null),
new Concatenation(209, ['DirectiveDefinitionBody'], null),
(new Concatenation('DirectiveDefinition', [208, 'DirectiveDefinitionHead', 209], 'DirectiveDefinition'))->setDefaultId('DirectiveDefinition'),
new Terminal(211, 'T_DIRECTIVE', false),
new Terminal(212, 'T_DIRECTIVE_AT', false),
new Repetition(213, 0, 1, 'ArgumentDefinitions', null),
new Concatenation('DirectiveDefinitionHead', [211, 212, 'TypeName', 213], null),
new Terminal(215, 'T_ON', false),
new Concatenation(216, ['DirectiveLocations'], null),
new Concatenation('DirectiveDefinitionBody', [215, 216], null),
new Terminal(218, 'T_OR', false),
new Repetition(219, 0, 1, 218, null),
new Terminal(220, 'T_OR', false),
new Concatenation(221, [220, 'DirectiveLocation'], null),
new Repetition(222, 0, -1, 221, null),
new Concatenation('DirectiveLocations', [219, 'DirectiveLocation', 222], null),
new Concatenation(224, ['NameWithReserved'], null),
(new Concatenation('DirectiveLocation', [224], 'DirectiveLocation'))->setDefaultId('DirectiveLocation'),
new Repetition(226, 0, 1, 'Description', null),
new Concatenation(227, ['EnumDefinitionExceptDescription'], null),
(new Concatenation('EnumDefinition', [226, 227], 'EnumDefinition'))->setDefaultId('EnumDefinition'),
new Repetition(229, 0, 1, 'EnumDefinitionBody', null),
new Concatenation('EnumDefinitionExceptDescription', ['EnumDefinitionHead', 229], null),
new Terminal(231, 'T_ENUM', false),
new Repetition(232, 0, -1, 'Directive', null),
new Concatenation('EnumDefinitionHead', [231, 'TypeName', 232], null),
new Terminal(234, 'T_BRACE_OPEN', false),
new Repetition(235, 0, -1, 'EnumValueDefinition', null),
new Terminal(236, 'T_BRACE_CLOSE', false),
new Concatenation('EnumDefinitionBody', [234, 235, 236], null),
new Repetition(238, 0, 1, 'Description', null),
new Repetition(239, 0, 1, 'DefaultValue', null),
new Repetition(240, 0, -1, 'Directive', null),
new Terminal(241, 'T_COMMA', false),
new Repetition(242, 0, 1, 241, null),
(new Concatenation('EnumValueDefinition', [238, 'NameWithoutValues', 239, 240, 242], 'EnumValueDefinition'))->setDefaultId('EnumValueDefinition'),
new Terminal(244, 'T_FRAGMENT', false),
new Repetition(245, 0, 1, 'Directives', null),
new Concatenation(246, ['SelectionSet'], null),
(new Concatenation('FragmentDefinition', [244, 'NameWithReserved', 'TypeCondition', 245, 246], 'FragmentDefinition'))->setDefaultId('FragmentDefinition'),
new Repetition(248, 0, 1, 'Description', null),
new Concatenation(249, ['InputDefinitionExceptDescription'], null),
(new Concatenation('InputDefinition', [248, 249], 'InputDefinition'))->setDefaultId('InputDefinition'),
new Repetition(251, 0, 1, 'InputDefinitionBody', null),
new Concatenation('InputDefinitionExceptDescription', ['InputDefinitionHead', 251], null),
new Terminal(253, 'T_INPUT', false),
new Repetition(254, 0, -1, 'Directive', null),
new Concatenation('InputDefinitionHead', [253, 'TypeName', 254], null),
new Terminal(256, 'T_BRACE_OPEN', false),
new Repetition(257, 0, -1, 'InputFieldDefinition', null),
new Terminal(258, 'T_BRACE_CLOSE', false),
new Concatenation('InputDefinitionBody', [256, 257, 258], null),
new Repetition(260, 0, 1, 'Description', null),
new Repetition(261, 0, 1, 'DefaultValue', null),
new Repetition(262, 0, -1, 'Directive', null),
new Terminal(263, 'T_COMMA', false),
new Repetition(264, 0, 1, 263, null),
(new Concatenation('InputFieldDefinition', [260, '__inputFieldDefinitionBody', 261, 262, 264], 'InputFieldDefinition'))->setDefaultId('InputFieldDefinition'),
new Terminal(266, 'T_COLON', false),
new Concatenation(267, ['TypeHint'], null),
new Concatenation('__inputFieldDefinitionBody', ['NameWithReserved', 266, 267], null),
new Repetition(269, 0, 1, 'Description', null),
new Concatenation(270, ['InterfaceDefinitionExceptDescription'], null),
(new Concatenation('InterfaceDefinition', [269, 270], 'InterfaceDefinition'))->setDefaultId('InterfaceDefinition'),
new Repetition(272, 0, 1, 'InterfaceDefinitionBody', null),
new Concatenation('InterfaceDefinitionExceptDescription', ['InterfaceDefinitionHead', 272], null),
new Terminal(274, 'T_INTERFACE', false),
new Repetition(275, 0, 1, 'TypeDefinitionImplements', null),
new Repetition(276, 0, -1, 'Directive', null),
new Concatenation('InterfaceDefinitionHead', [274, 'TypeName', 275, 276], null),
new Terminal(278, 'T_BRACE_OPEN', false),
new Repetition(279, 0, -1, 'FieldDefinition', null),
new Terminal(280, 'T_BRACE_CLOSE', false),
new Concatenation('InterfaceDefinitionBody', [278, 279, 280], null),
new Repetition(282, 0, 1, 'Description', null),
new Concatenation(283, ['ObjectDefinitionExceptDescription'], null),
(new Concatenation('ObjectDefinition', [282, 283], 'ObjectDefinition'))->setDefaultId('ObjectDefinition'),
new Repetition(285, 0, 1, 'ObjectDefinitionBody', null),
new Concatenation('ObjectDefinitionExceptDescription', ['ObjectDefinitionHead', 285], null),
new Terminal(287, 'T_TYPE', false),
new Repetition(288, 0, 1, 'TypeDefinitionImplements', null),
new Repetition(289, 0, -1, 'Directive', null),
new Concatenation('ObjectDefinitionHead', [287, 'TypeName', 288, 289], null),
new Terminal(291, 'T_BRACE_OPEN', false),
new Repetition(292, 0, -1, 'FieldDefinition', null),
new Terminal(293, 'T_BRACE_CLOSE', false),
new Concatenation('ObjectDefinitionBody', [291, 292, 293], null),
new Repetition(295, 0, 1, 'Description', null),
new Repetition(296, 0, 1, 'ArgumentDefinitions', null),
new Terminal(297, 'T_COLON', false),
new Repetition(298, 0, -1, 'Directive', null),
new Terminal(299, 'T_COMMA', false),
new Repetition(300, 0, 1, 299, null),
(new Concatenation('FieldDefinition', [295, 'NameWithReserved', 296, 297, 'TypeHint', 298, 300], 'FieldDefinition'))->setDefaultId('FieldDefinition'),
new Repetition(302, 0, 1, 'Description', null),
new Concatenation(303, ['ScalarDefinitionExceptDescription'], null),
(new Concatenation('ScalarDefinition', [302, 303], 'ScalarDefinition'))->setDefaultId('ScalarDefinition'),
new Concatenation('ScalarDefinitionExceptDescription', ['ScalarDefinitionBody'], null),
new Terminal(306, 'T_SCALAR', false),
new Repetition(307, 0, -1, 'Directive', null),
new Repetition(308, 0, 1, 'ScalarDefinitionExtends', null),
new Concatenation('ScalarDefinitionBody', [306, 'TypeName', 307, 308], null),
new Terminal(310, 'T_EXTENDS', false),
new Concatenation(311, ['TypeName'], null),
(new Concatenation('ScalarDefinitionExtends', [310, 311], 'ScalarDefinitionExtends'))->setDefaultId('ScalarDefinitionExtends'),
new Repetition(313, 0, 1, 'Description', null),
new Concatenation(314, ['SchemaDefinitionExceptDescription'], null),
(new Concatenation('SchemaDefinition', [313, 314], 'SchemaDefinition'))->setDefaultId('SchemaDefinition'),
new Repetition(316, 0, 1, 'SchemaDefinitionBody', null),
new Concatenation('SchemaDefinitionExceptDescription', ['SchemaDefinitionHead', 316], null),
new Terminal(318, 'T_SCHEMA', false),
new Repetition(319, 0, 1, 'TypeName', null),
new Repetition(320, 0, -1, 'Directive', null),
new Concatenation('SchemaDefinitionHead', [318, 319, 320], null),
new Terminal(322, 'T_BRACE_OPEN', false),
new Terminal(323, 'T_COMMA', false),
new Repetition(324, 0, 1, 323, null),
new Concatenation(325, ['SchemaFieldDefinition', 324], null),
new Repetition(326, 0, -1, 325, null),
new Terminal(327, 'T_BRACE_CLOSE', false),
new Concatenation('SchemaDefinitionBody', [322, 326, 327], null),
new Repetition(329, 0, 1, 'Description', null),
new Repetition(330, 0, -1, 'Directive', null),
(new Concatenation('SchemaFieldDefinition', [329, '__schemaFieldName', '__schemaFieldBody', 330], 'SchemaFieldDefinition'))->setDefaultId('SchemaFieldDefinition'),
new Concatenation('__schemaFieldName', ['SchemaFieldName'], 'Name'),
new Terminal(333, 'T_QUERY', true),
new Terminal(334, 'T_MUTATION', true),
new Terminal(335, 'T_SUBSCRIPTION', true),
new Alternation('SchemaFieldName', [333, 334, 335], null),
new Terminal(337, 'T_COLON', false),
new Concatenation(338, ['Type'], null),
new Concatenation('__schemaFieldBody', [337, 338], null),
new Repetition(340, 0, 1, 'Description', null),
new Concatenation(341, ['UnionDefinitionExceptDescription'], null),
(new Concatenation('UnionDefinition', [340, 341], 'UnionDefinition'))->setDefaultId('UnionDefinition'),
new Repetition(343, 0, 1, 'UnionDefinitionBody', null),
new Concatenation('UnionDefinitionExceptDescription', ['UnionDefinitionHead', 343], null),
new Terminal(345, 'T_UNION', false),
new Repetition(346, 0, -1, 'Directive', null),
new Concatenation('UnionDefinitionHead', [345, 'TypeName', 346], null),
new Terminal(348, 'T_EQUAL', false),
new Repetition(349, 0, 1, 'UnionDefinitionTargets', null),
new Concatenation('UnionDefinitionBody', [348, 349], null),
new Terminal(351, 'T_OR', false),
new Repetition(352, 0, 1, 351, null),
new Terminal(353, 'T_OR', false),
new Concatenation(354, [353, 'TypeName'], 'UnionDefinitionTargets'),
new Repetition(355, 0, -1, 354, null),
(new Concatenation('UnionDefinitionTargets', [352, 'TypeName', 355], null))->setDefaultId('UnionDefinitionTargets'),
new Terminal(357, 'T_PARENTHESIS_OPEN', false),
new Repetition(358, 0, -1, '__variableDefinition', null),
new Terminal(359, 'T_PARENTHESIS_CLOSE', false),
new Concatenation('VariableDefinitions', [357, 358, 359], null),
new Terminal(361, 'T_COMMA', false),
new Repetition(362, 0, 1, 361, null),
new Concatenation('__variableDefinition', ['VariableDefinition', 362], null),
new Terminal(364, 'T_COLON', false),
new Repetition(365, 0, 1, 'DefaultValue', null),
(new Concatenation('VariableDefinition', ['Variable', 364, 'TypeHint', 365], 'VariableDefinition'))->setDefaultId('VariableDefinition'),
new Repetition('ExecutableLanguage', 0, -1, 'ExecutableDefinition', null),
new Concatenation(368, ['FragmentDefinition'], null),
new Alternation('ExecutableDefinition', ['OperationDefinition', 368], null),
new Repetition(370, 0, -1, 'TypeSystemHeader', null),
new Repetition(371, 0, -1, 'TypeSystemBody', null),
new Concatenation('TypeSystemLanguage', [370, 371], null),
new Concatenation('TypeSystemHeader', ['Directive'], null),
new Concatenation(374, ['TypeSystemExtension'], null),
new Alternation('TypeSystemBody', ['TypeSystemDefinition', 374], null),
new Concatenation(376, ['UnionExtension'], null),
new Alternation('TypeSystemExtension', ['EnumExtension', 'InputExtension', 'InterfaceExtension', 'ObjectExtension', 'ScalarExtension', 'SchemaExtension', 376], null),
new Concatenation(378, ['UnionDefinition'], null),
new Alternation('TypeSystemDefinition', ['DirectiveDefinition', 'SchemaDefinition', 'EnumDefinition', 'InputDefinition', 'InterfaceDefinition', 'ObjectDefinition', 'ScalarDefinition', 378], null),
];
}
}