graphql 1.12.12 → 2.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of graphql might be problematic. Click here for more details.

Files changed (392) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/core.rb +3 -8
  3. data/lib/generators/graphql/enum_generator.rb +4 -10
  4. data/lib/generators/graphql/field_extractor.rb +31 -0
  5. data/lib/generators/graphql/input_generator.rb +50 -0
  6. data/lib/generators/graphql/install/mutation_root_generator.rb +34 -0
  7. data/lib/generators/graphql/{templates → install/templates}/base_mutation.erb +2 -0
  8. data/lib/generators/graphql/{templates → install/templates}/mutation_type.erb +2 -0
  9. data/lib/generators/graphql/install_generator.rb +14 -4
  10. data/lib/generators/graphql/interface_generator.rb +7 -7
  11. data/lib/generators/graphql/mutation_create_generator.rb +22 -0
  12. data/lib/generators/graphql/mutation_delete_generator.rb +22 -0
  13. data/lib/generators/graphql/mutation_generator.rb +5 -30
  14. data/lib/generators/graphql/mutation_update_generator.rb +22 -0
  15. data/lib/generators/graphql/object_generator.rb +10 -38
  16. data/lib/generators/graphql/orm_mutations_base.rb +40 -0
  17. data/lib/generators/graphql/relay.rb +23 -12
  18. data/lib/generators/graphql/scalar_generator.rb +4 -2
  19. data/lib/generators/graphql/templates/base_argument.erb +2 -0
  20. data/lib/generators/graphql/templates/base_connection.erb +2 -0
  21. data/lib/generators/graphql/templates/base_edge.erb +2 -0
  22. data/lib/generators/graphql/templates/base_enum.erb +2 -0
  23. data/lib/generators/graphql/templates/base_field.erb +2 -0
  24. data/lib/generators/graphql/templates/base_input_object.erb +2 -0
  25. data/lib/generators/graphql/templates/base_interface.erb +2 -0
  26. data/lib/generators/graphql/templates/base_object.erb +2 -0
  27. data/lib/generators/graphql/templates/base_resolver.erb +6 -0
  28. data/lib/generators/graphql/templates/base_scalar.erb +2 -0
  29. data/lib/generators/graphql/templates/base_union.erb +2 -0
  30. data/lib/generators/graphql/templates/enum.erb +5 -1
  31. data/lib/generators/graphql/templates/graphql_controller.erb +2 -0
  32. data/lib/generators/graphql/templates/input.erb +9 -0
  33. data/lib/generators/graphql/templates/interface.erb +4 -2
  34. data/lib/generators/graphql/templates/loader.erb +2 -0
  35. data/lib/generators/graphql/templates/mutation.erb +3 -1
  36. data/lib/generators/graphql/templates/mutation_create.erb +20 -0
  37. data/lib/generators/graphql/templates/mutation_delete.erb +20 -0
  38. data/lib/generators/graphql/templates/mutation_update.erb +21 -0
  39. data/lib/generators/graphql/templates/node_type.erb +2 -0
  40. data/lib/generators/graphql/templates/object.erb +4 -2
  41. data/lib/generators/graphql/templates/query_type.erb +2 -0
  42. data/lib/generators/graphql/templates/scalar.erb +3 -1
  43. data/lib/generators/graphql/templates/schema.erb +19 -2
  44. data/lib/generators/graphql/templates/union.erb +4 -2
  45. data/lib/generators/graphql/type_generator.rb +46 -10
  46. data/lib/generators/graphql/union_generator.rb +5 -5
  47. data/lib/graphql/analysis/ast/analyzer.rb +7 -0
  48. data/lib/graphql/analysis/ast/field_usage.rb +55 -1
  49. data/lib/graphql/analysis/ast/max_query_complexity.rb +0 -1
  50. data/lib/graphql/analysis/ast/query_complexity.rb +88 -140
  51. data/lib/graphql/analysis/ast/query_depth.rb +7 -3
  52. data/lib/graphql/analysis/ast/visitor.rb +50 -42
  53. data/lib/graphql/analysis/ast.rb +26 -23
  54. data/lib/graphql/analysis.rb +0 -7
  55. data/lib/graphql/backtrace/table.rb +4 -22
  56. data/lib/graphql/backtrace/trace.rb +93 -0
  57. data/lib/graphql/backtrace/tracer.rb +8 -6
  58. data/lib/graphql/backtrace.rb +3 -8
  59. data/lib/graphql/coercion_error.rb +1 -9
  60. data/lib/graphql/dataloader/async_dataloader.rb +85 -0
  61. data/lib/graphql/dataloader/null_dataloader.rb +3 -1
  62. data/lib/graphql/dataloader/request.rb +5 -0
  63. data/lib/graphql/dataloader/source.rb +120 -31
  64. data/lib/graphql/dataloader.rb +168 -142
  65. data/lib/graphql/date_encoding_error.rb +16 -0
  66. data/lib/graphql/dig.rb +1 -1
  67. data/lib/graphql/duration_encoding_error.rb +16 -0
  68. data/lib/graphql/execution/errors.rb +12 -81
  69. data/lib/graphql/execution/interpreter/arguments.rb +2 -2
  70. data/lib/graphql/execution/interpreter/arguments_cache.rb +36 -34
  71. data/lib/graphql/execution/interpreter/resolve.rb +32 -2
  72. data/lib/graphql/execution/interpreter/runtime/graphql_result.rb +170 -0
  73. data/lib/graphql/execution/interpreter/runtime.rb +414 -341
  74. data/lib/graphql/execution/interpreter.rb +122 -80
  75. data/lib/graphql/execution/lazy.rb +11 -21
  76. data/lib/graphql/execution/lookahead.rb +125 -54
  77. data/lib/graphql/execution/multiplex.rb +4 -172
  78. data/lib/graphql/execution.rb +11 -4
  79. data/lib/graphql/integer_encoding_error.rb +18 -2
  80. data/lib/graphql/introspection/directive_location_enum.rb +2 -2
  81. data/lib/graphql/introspection/directive_type.rb +5 -3
  82. data/lib/graphql/introspection/dynamic_fields.rb +3 -8
  83. data/lib/graphql/introspection/entry_points.rb +11 -18
  84. data/lib/graphql/introspection/enum_value_type.rb +2 -2
  85. data/lib/graphql/introspection/field_type.rb +3 -3
  86. data/lib/graphql/introspection/input_value_type.rb +10 -4
  87. data/lib/graphql/introspection/schema_type.rb +12 -5
  88. data/lib/graphql/introspection/type_type.rb +25 -12
  89. data/lib/graphql/introspection.rb +6 -2
  90. data/lib/graphql/language/block_string.rb +37 -25
  91. data/lib/graphql/language/definition_slice.rb +1 -1
  92. data/lib/graphql/language/document_from_schema_definition.rb +78 -65
  93. data/lib/graphql/language/lexer.rb +345 -1467
  94. data/lib/graphql/language/nodes.rb +145 -91
  95. data/lib/graphql/language/parser.rb +701 -1921
  96. data/lib/graphql/language/printer.rb +351 -155
  97. data/lib/graphql/language/sanitized_printer.rb +25 -27
  98. data/lib/graphql/language/static_visitor.rb +167 -0
  99. data/lib/graphql/language/token.rb +0 -4
  100. data/lib/graphql/language/visitor.rb +188 -141
  101. data/lib/graphql/language.rb +1 -0
  102. data/lib/graphql/load_application_object_failed_error.rb +5 -1
  103. data/lib/graphql/name_validator.rb +0 -4
  104. data/lib/graphql/pagination/active_record_relation_connection.rb +37 -8
  105. data/lib/graphql/pagination/array_connection.rb +8 -6
  106. data/lib/graphql/pagination/connection.rb +61 -7
  107. data/lib/graphql/pagination/connections.rb +22 -23
  108. data/lib/graphql/pagination/mongoid_relation_connection.rb +1 -2
  109. data/lib/graphql/pagination/relation_connection.rb +60 -28
  110. data/lib/graphql/query/context/scoped_context.rb +101 -0
  111. data/lib/graphql/query/context.rb +109 -189
  112. data/lib/graphql/query/input_validation_result.rb +10 -1
  113. data/lib/graphql/query/null_context.rb +14 -29
  114. data/lib/graphql/query/validation_pipeline.rb +15 -39
  115. data/lib/graphql/query/variable_validation_error.rb +2 -2
  116. data/lib/graphql/query/variables.rb +35 -17
  117. data/lib/graphql/query.rb +78 -65
  118. data/lib/graphql/railtie.rb +8 -109
  119. data/lib/graphql/rake_task/validate.rb +1 -1
  120. data/lib/graphql/rake_task.rb +30 -11
  121. data/lib/graphql/relay/range_add.rb +9 -16
  122. data/lib/graphql/relay.rb +0 -15
  123. data/lib/graphql/rubocop/graphql/base_cop.rb +36 -0
  124. data/lib/graphql/rubocop/graphql/default_null_true.rb +43 -0
  125. data/lib/graphql/rubocop/graphql/default_required_true.rb +43 -0
  126. data/lib/graphql/rubocop.rb +4 -0
  127. data/lib/graphql/schema/addition.rb +78 -45
  128. data/lib/graphql/schema/always_visible.rb +10 -0
  129. data/lib/graphql/schema/argument.rb +134 -80
  130. data/lib/graphql/schema/base_64_encoder.rb +3 -5
  131. data/lib/graphql/schema/build_from_definition.rb +60 -38
  132. data/lib/graphql/schema/directive/feature.rb +1 -1
  133. data/lib/graphql/schema/directive/flagged.rb +2 -2
  134. data/lib/graphql/schema/directive/include.rb +1 -1
  135. data/lib/graphql/schema/directive/one_of.rb +24 -0
  136. data/lib/graphql/schema/directive/skip.rb +1 -1
  137. data/lib/graphql/schema/directive/specified_by.rb +14 -0
  138. data/lib/graphql/schema/directive/transform.rb +2 -2
  139. data/lib/graphql/schema/directive.rb +33 -21
  140. data/lib/graphql/schema/enum.rb +93 -46
  141. data/lib/graphql/schema/enum_value.rb +4 -21
  142. data/lib/graphql/schema/field/connection_extension.rb +6 -16
  143. data/lib/graphql/schema/field/scope_extension.rb +8 -1
  144. data/lib/graphql/schema/field.rb +432 -337
  145. data/lib/graphql/schema/field_extension.rb +86 -2
  146. data/lib/graphql/schema/find_inherited_value.rb +3 -7
  147. data/lib/graphql/schema/finder.rb +5 -5
  148. data/lib/graphql/schema/has_single_input_argument.rb +156 -0
  149. data/lib/graphql/schema/input_object.rb +88 -90
  150. data/lib/graphql/schema/interface.rb +19 -59
  151. data/lib/graphql/schema/introspection_system.rb +6 -9
  152. data/lib/graphql/schema/late_bound_type.rb +8 -2
  153. data/lib/graphql/schema/list.rb +18 -7
  154. data/lib/graphql/schema/loader.rb +3 -3
  155. data/lib/graphql/schema/member/base_dsl_methods.rb +18 -19
  156. data/lib/graphql/schema/member/build_type.rb +16 -13
  157. data/lib/graphql/schema/member/has_arguments.rb +288 -84
  158. data/lib/graphql/schema/member/has_ast_node.rb +12 -0
  159. data/lib/graphql/schema/member/has_deprecation_reason.rb +3 -4
  160. data/lib/graphql/schema/member/has_directives.rb +81 -61
  161. data/lib/graphql/schema/member/has_fields.rb +149 -31
  162. data/lib/graphql/schema/member/has_interfaces.rb +143 -0
  163. data/lib/graphql/schema/member/has_validators.rb +32 -6
  164. data/lib/graphql/schema/member/relay_shortcuts.rb +47 -2
  165. data/lib/graphql/schema/member/scoped.rb +19 -0
  166. data/lib/graphql/schema/member/type_system_helpers.rb +17 -0
  167. data/lib/graphql/schema/member/validates_input.rb +6 -6
  168. data/lib/graphql/schema/member.rb +1 -6
  169. data/lib/graphql/schema/mutation.rb +0 -9
  170. data/lib/graphql/schema/non_null.rb +7 -7
  171. data/lib/graphql/schema/object.rb +30 -119
  172. data/lib/graphql/schema/printer.rb +23 -25
  173. data/lib/graphql/schema/relay_classic_mutation.rb +13 -90
  174. data/lib/graphql/schema/resolver/has_payload_type.rb +46 -11
  175. data/lib/graphql/schema/resolver.rb +101 -102
  176. data/lib/graphql/schema/scalar.rb +20 -21
  177. data/lib/graphql/schema/subscription.rb +45 -17
  178. data/lib/graphql/schema/timeout.rb +25 -29
  179. data/lib/graphql/schema/type_expression.rb +1 -1
  180. data/lib/graphql/schema/type_membership.rb +21 -4
  181. data/lib/graphql/schema/union.rb +15 -15
  182. data/lib/graphql/schema/unique_within_type.rb +1 -1
  183. data/lib/graphql/schema/validator/allow_blank_validator.rb +29 -0
  184. data/lib/graphql/schema/validator/allow_null_validator.rb +26 -0
  185. data/lib/graphql/schema/validator/exclusion_validator.rb +3 -1
  186. data/lib/graphql/schema/validator/format_validator.rb +4 -5
  187. data/lib/graphql/schema/validator/inclusion_validator.rb +3 -1
  188. data/lib/graphql/schema/validator/length_validator.rb +5 -3
  189. data/lib/graphql/schema/validator/numericality_validator.rb +13 -2
  190. data/lib/graphql/schema/validator/required_validator.rb +29 -15
  191. data/lib/graphql/schema/validator.rb +35 -27
  192. data/lib/graphql/schema/warden.rb +259 -132
  193. data/lib/graphql/schema/wrapper.rb +0 -5
  194. data/lib/graphql/schema.rb +658 -989
  195. data/lib/graphql/static_validation/all_rules.rb +3 -1
  196. data/lib/graphql/static_validation/base_visitor.rb +14 -28
  197. data/lib/graphql/static_validation/definition_dependencies.rb +7 -2
  198. data/lib/graphql/static_validation/error.rb +3 -1
  199. data/lib/graphql/static_validation/literal_validator.rb +21 -4
  200. data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +1 -1
  201. data/lib/graphql/static_validation/rules/arguments_are_defined.rb +1 -1
  202. data/lib/graphql/static_validation/rules/directives_are_defined.rb +11 -5
  203. data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +13 -13
  204. data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +12 -4
  205. data/lib/graphql/static_validation/rules/fields_will_merge.rb +54 -28
  206. data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +25 -4
  207. data/lib/graphql/static_validation/rules/fragments_are_finite.rb +2 -2
  208. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid.rb +66 -0
  209. data/lib/graphql/static_validation/rules/one_of_input_objects_are_valid_error.rb +29 -0
  210. data/lib/graphql/static_validation/rules/query_root_exists.rb +17 -0
  211. data/lib/graphql/static_validation/rules/query_root_exists_error.rb +26 -0
  212. data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +5 -3
  213. data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +4 -4
  214. data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +13 -7
  215. data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +1 -1
  216. data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +13 -7
  217. data/lib/graphql/static_validation/validation_context.rb +16 -6
  218. data/lib/graphql/static_validation/validator.rb +11 -27
  219. data/lib/graphql/static_validation.rb +0 -3
  220. data/lib/graphql/string_encoding_error.rb +13 -3
  221. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +46 -9
  222. data/lib/graphql/subscriptions/default_subscription_resolve_extension.rb +38 -1
  223. data/lib/graphql/subscriptions/event.rb +75 -37
  224. data/lib/graphql/subscriptions/serialize.rb +25 -3
  225. data/lib/graphql/subscriptions.rb +59 -47
  226. data/lib/graphql/testing/helpers.rb +129 -0
  227. data/lib/graphql/testing.rb +2 -0
  228. data/lib/graphql/tracing/active_support_notifications_trace.rb +16 -0
  229. data/lib/graphql/tracing/active_support_notifications_tracing.rb +6 -20
  230. data/lib/graphql/tracing/appoptics_trace.rb +251 -0
  231. data/lib/graphql/tracing/appoptics_tracing.rb +2 -2
  232. data/lib/graphql/tracing/appsignal_trace.rb +77 -0
  233. data/lib/graphql/tracing/appsignal_tracing.rb +15 -0
  234. data/lib/graphql/tracing/data_dog_trace.rb +183 -0
  235. data/lib/graphql/tracing/data_dog_tracing.rb +25 -15
  236. data/lib/graphql/{execution/instrumentation.rb → tracing/legacy_hooks_trace.rb} +10 -28
  237. data/lib/graphql/tracing/legacy_trace.rb +69 -0
  238. data/lib/graphql/tracing/new_relic_trace.rb +75 -0
  239. data/lib/graphql/tracing/notifications_trace.rb +45 -0
  240. data/lib/graphql/tracing/notifications_tracing.rb +59 -0
  241. data/lib/graphql/tracing/platform_trace.rb +118 -0
  242. data/lib/graphql/tracing/platform_tracing.rb +46 -49
  243. data/lib/graphql/tracing/{prometheus_tracing → prometheus_trace}/graphql_collector.rb +4 -2
  244. data/lib/graphql/tracing/prometheus_trace.rb +89 -0
  245. data/lib/graphql/tracing/prometheus_tracing.rb +3 -3
  246. data/lib/graphql/tracing/scout_trace.rb +72 -0
  247. data/lib/graphql/tracing/sentry_trace.rb +112 -0
  248. data/lib/graphql/tracing/statsd_trace.rb +56 -0
  249. data/lib/graphql/tracing/trace.rb +76 -0
  250. data/lib/graphql/tracing.rb +20 -41
  251. data/lib/graphql/type_kinds.rb +6 -3
  252. data/lib/graphql/types/big_int.rb +5 -1
  253. data/lib/graphql/types/int.rb +1 -1
  254. data/lib/graphql/types/iso_8601_date.rb +17 -6
  255. data/lib/graphql/types/iso_8601_date_time.rb +12 -1
  256. data/lib/graphql/types/iso_8601_duration.rb +77 -0
  257. data/lib/graphql/types/relay/base_connection.rb +16 -6
  258. data/lib/graphql/types/relay/connection_behaviors.rb +82 -32
  259. data/lib/graphql/types/relay/edge_behaviors.rb +36 -7
  260. data/lib/graphql/types/relay/has_node_field.rb +2 -2
  261. data/lib/graphql/types/relay/has_nodes_field.rb +2 -2
  262. data/lib/graphql/types/relay/node_behaviors.rb +12 -2
  263. data/lib/graphql/types/relay/page_info_behaviors.rb +7 -2
  264. data/lib/graphql/types/relay.rb +0 -3
  265. data/lib/graphql/types/string.rb +2 -2
  266. data/lib/graphql/types.rb +1 -0
  267. data/lib/graphql/unauthorized_error.rb +1 -1
  268. data/lib/graphql/version.rb +1 -1
  269. data/lib/graphql.rb +33 -95
  270. data/readme.md +13 -6
  271. metadata +102 -185
  272. data/lib/graphql/analysis/analyze_query.rb +0 -98
  273. data/lib/graphql/analysis/field_usage.rb +0 -45
  274. data/lib/graphql/analysis/max_query_complexity.rb +0 -26
  275. data/lib/graphql/analysis/max_query_depth.rb +0 -26
  276. data/lib/graphql/analysis/query_complexity.rb +0 -88
  277. data/lib/graphql/analysis/query_depth.rb +0 -43
  278. data/lib/graphql/analysis/reducer_state.rb +0 -48
  279. data/lib/graphql/argument.rb +0 -131
  280. data/lib/graphql/authorization.rb +0 -82
  281. data/lib/graphql/backtrace/legacy_tracer.rb +0 -56
  282. data/lib/graphql/backwards_compatibility.rb +0 -61
  283. data/lib/graphql/base_type.rb +0 -230
  284. data/lib/graphql/boolean_type.rb +0 -2
  285. data/lib/graphql/compatibility/execution_specification/counter_schema.rb +0 -53
  286. data/lib/graphql/compatibility/execution_specification/specification_schema.rb +0 -200
  287. data/lib/graphql/compatibility/execution_specification.rb +0 -436
  288. data/lib/graphql/compatibility/lazy_execution_specification/lazy_schema.rb +0 -111
  289. data/lib/graphql/compatibility/lazy_execution_specification.rb +0 -215
  290. data/lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb +0 -87
  291. data/lib/graphql/compatibility/query_parser_specification/query_assertions.rb +0 -79
  292. data/lib/graphql/compatibility/query_parser_specification.rb +0 -266
  293. data/lib/graphql/compatibility/schema_parser_specification.rb +0 -682
  294. data/lib/graphql/compatibility.rb +0 -5
  295. data/lib/graphql/define/assign_argument.rb +0 -12
  296. data/lib/graphql/define/assign_connection.rb +0 -13
  297. data/lib/graphql/define/assign_enum_value.rb +0 -18
  298. data/lib/graphql/define/assign_global_id_field.rb +0 -11
  299. data/lib/graphql/define/assign_mutation_function.rb +0 -34
  300. data/lib/graphql/define/assign_object_field.rb +0 -42
  301. data/lib/graphql/define/defined_object_proxy.rb +0 -53
  302. data/lib/graphql/define/instance_definable.rb +0 -240
  303. data/lib/graphql/define/no_definition_error.rb +0 -7
  304. data/lib/graphql/define/non_null_with_bang.rb +0 -16
  305. data/lib/graphql/define/type_definer.rb +0 -31
  306. data/lib/graphql/define.rb +0 -31
  307. data/lib/graphql/deprecated_dsl.rb +0 -47
  308. data/lib/graphql/deprecation.rb +0 -13
  309. data/lib/graphql/directive/deprecated_directive.rb +0 -2
  310. data/lib/graphql/directive/include_directive.rb +0 -2
  311. data/lib/graphql/directive/skip_directive.rb +0 -2
  312. data/lib/graphql/directive.rb +0 -111
  313. data/lib/graphql/enum_type.rb +0 -129
  314. data/lib/graphql/execution/execute.rb +0 -333
  315. data/lib/graphql/execution/flatten.rb +0 -40
  316. data/lib/graphql/execution/lazy/resolve.rb +0 -91
  317. data/lib/graphql/execution/typecast.rb +0 -50
  318. data/lib/graphql/field/resolve.rb +0 -59
  319. data/lib/graphql/field.rb +0 -226
  320. data/lib/graphql/filter.rb +0 -53
  321. data/lib/graphql/float_type.rb +0 -2
  322. data/lib/graphql/function.rb +0 -128
  323. data/lib/graphql/id_type.rb +0 -2
  324. data/lib/graphql/input_object_type.rb +0 -138
  325. data/lib/graphql/int_type.rb +0 -2
  326. data/lib/graphql/interface_type.rb +0 -72
  327. data/lib/graphql/internal_representation/document.rb +0 -27
  328. data/lib/graphql/internal_representation/node.rb +0 -206
  329. data/lib/graphql/internal_representation/print.rb +0 -51
  330. data/lib/graphql/internal_representation/rewrite.rb +0 -184
  331. data/lib/graphql/internal_representation/scope.rb +0 -88
  332. data/lib/graphql/internal_representation/visit.rb +0 -36
  333. data/lib/graphql/internal_representation.rb +0 -7
  334. data/lib/graphql/language/lexer.rl +0 -262
  335. data/lib/graphql/language/parser.y +0 -543
  336. data/lib/graphql/list_type.rb +0 -80
  337. data/lib/graphql/non_null_type.rb +0 -71
  338. data/lib/graphql/object_type.rb +0 -130
  339. data/lib/graphql/query/arguments.rb +0 -189
  340. data/lib/graphql/query/arguments_cache.rb +0 -24
  341. data/lib/graphql/query/executor.rb +0 -52
  342. data/lib/graphql/query/literal_input.rb +0 -136
  343. data/lib/graphql/query/serial_execution/field_resolution.rb +0 -92
  344. data/lib/graphql/query/serial_execution/operation_resolution.rb +0 -19
  345. data/lib/graphql/query/serial_execution/selection_resolution.rb +0 -23
  346. data/lib/graphql/query/serial_execution/value_resolution.rb +0 -87
  347. data/lib/graphql/query/serial_execution.rb +0 -40
  348. data/lib/graphql/relay/array_connection.rb +0 -83
  349. data/lib/graphql/relay/base_connection.rb +0 -189
  350. data/lib/graphql/relay/connection_instrumentation.rb +0 -54
  351. data/lib/graphql/relay/connection_resolve.rb +0 -43
  352. data/lib/graphql/relay/connection_type.rb +0 -41
  353. data/lib/graphql/relay/edge.rb +0 -27
  354. data/lib/graphql/relay/edge_type.rb +0 -19
  355. data/lib/graphql/relay/edges_instrumentation.rb +0 -40
  356. data/lib/graphql/relay/global_id_resolve.rb +0 -18
  357. data/lib/graphql/relay/mongo_relation_connection.rb +0 -50
  358. data/lib/graphql/relay/mutation/instrumentation.rb +0 -23
  359. data/lib/graphql/relay/mutation/resolve.rb +0 -56
  360. data/lib/graphql/relay/mutation/result.rb +0 -38
  361. data/lib/graphql/relay/mutation.rb +0 -106
  362. data/lib/graphql/relay/node.rb +0 -39
  363. data/lib/graphql/relay/page_info.rb +0 -7
  364. data/lib/graphql/relay/relation_connection.rb +0 -188
  365. data/lib/graphql/relay/type_extensions.rb +0 -32
  366. data/lib/graphql/scalar_type.rb +0 -91
  367. data/lib/graphql/schema/base_64_bp.rb +0 -26
  368. data/lib/graphql/schema/catchall_middleware.rb +0 -35
  369. data/lib/graphql/schema/default_parse_error.rb +0 -10
  370. data/lib/graphql/schema/default_type_error.rb +0 -17
  371. data/lib/graphql/schema/member/accepts_definition.rb +0 -152
  372. data/lib/graphql/schema/member/cached_graphql_definition.rb +0 -31
  373. data/lib/graphql/schema/member/instrumentation.rb +0 -131
  374. data/lib/graphql/schema/middleware_chain.rb +0 -82
  375. data/lib/graphql/schema/possible_types.rb +0 -44
  376. data/lib/graphql/schema/rescue_middleware.rb +0 -60
  377. data/lib/graphql/schema/timeout_middleware.rb +0 -88
  378. data/lib/graphql/schema/traversal.rb +0 -228
  379. data/lib/graphql/schema/validation.rb +0 -313
  380. data/lib/graphql/static_validation/default_visitor.rb +0 -15
  381. data/lib/graphql/static_validation/no_validate_visitor.rb +0 -10
  382. data/lib/graphql/static_validation/type_stack.rb +0 -216
  383. data/lib/graphql/string_type.rb +0 -2
  384. data/lib/graphql/subscriptions/instrumentation.rb +0 -79
  385. data/lib/graphql/subscriptions/subscription_root.rb +0 -76
  386. data/lib/graphql/tracing/skylight_tracing.rb +0 -70
  387. data/lib/graphql/types/relay/default_relay.rb +0 -27
  388. data/lib/graphql/types/relay/node_field.rb +0 -25
  389. data/lib/graphql/types/relay/nodes_field.rb +0 -27
  390. data/lib/graphql/union_type.rb +0 -115
  391. data/lib/graphql/upgrader/member.rb +0 -937
  392. data/lib/graphql/upgrader/schema.rb +0 -38
@@ -1,1966 +1,746 @@
1
- #
2
- # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.4.16
4
- # from Racc grammar file "".
5
- #
6
-
7
- require 'racc/parser.rb'
8
-
1
+ # frozen_string_literal: true
9
2
 
3
+ require "strscan"
4
+ require "graphql/language/nodes"
10
5
 
11
6
  module GraphQL
12
7
  module Language
13
- class Parser < Racc::Parser
14
-
15
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 437)
16
-
17
- EMPTY_ARRAY = [].freeze
18
-
19
- def initialize(query_string, filename:, tracer: Tracing::NullTracer)
20
- raise GraphQL::ParseError.new("No query string was present", nil, nil, query_string) if query_string.nil?
21
- @query_string = query_string
22
- @filename = filename
23
- @tracer = tracer
24
- @reused_next_token = [nil, nil]
25
- end
26
-
27
- def parse_document
28
- @document ||= begin
29
- # Break the string into tokens
30
- @tracer.trace("lex", {query_string: @query_string}) do
31
- @tokens ||= GraphQL.scan(@query_string)
32
- end
33
- # From the tokens, build an AST
34
- @tracer.trace("parse", {query_string: @query_string}) do
35
- if @tokens.empty?
36
- raise GraphQL::ParseError.new("Unexpected end of document", nil, nil, @query_string)
37
- else
38
- do_parse
8
+ class Parser
9
+ include GraphQL::Language::Nodes
10
+ include EmptyObjects
11
+
12
+ class << self
13
+ attr_accessor :cache
14
+
15
+ def parse(graphql_str, filename: nil, trace: Tracing::NullTrace)
16
+ self.new(graphql_str, filename: filename, trace: trace).parse
17
+ end
18
+
19
+ def parse_file(filename, trace: Tracing::NullTrace)
20
+ if cache
21
+ cache.fetch(filename) do
22
+ parse(File.read(filename), filename: filename, trace: trace)
23
+ end
24
+ else
25
+ parse(File.read(filename), filename: filename, trace: trace)
26
+ end
27
+ end
39
28
  end
40
- end
41
- end
42
- end
43
-
44
- class << self
45
- attr_accessor :cache
46
29
 
47
- def parse(query_string, filename: nil, tracer: GraphQL::Tracing::NullTracer)
48
- new(query_string, filename: filename, tracer: tracer).parse_document
49
- end
50
-
51
- def parse_file(filename, tracer: GraphQL::Tracing::NullTracer)
52
- if cache
53
- cache.fetch(filename) do
54
- parse(File.read(filename), filename: filename, tracer: tracer)
30
+ def initialize(graphql_str, filename: nil, trace: Tracing::NullTrace)
31
+ if graphql_str.nil?
32
+ raise GraphQL::ParseError.new("No query string was present", nil, nil, nil)
33
+ end
34
+ @lexer = Lexer.new(graphql_str, filename: filename)
35
+ @graphql_str = graphql_str
36
+ @filename = filename
37
+ @trace = trace
55
38
  end
56
- else
57
- parse(File.read(filename), filename: filename, tracer: tracer)
58
- end
59
- end
60
- end
61
-
62
- private
63
-
64
- def next_token
65
- lexer_token = @tokens.shift
66
- if lexer_token.nil?
67
- nil
68
- else
69
- @reused_next_token[0] = lexer_token.name
70
- @reused_next_token[1] = lexer_token
71
- @reused_next_token
72
- end
73
- end
74
-
75
- def get_description(token)
76
- comments = []
77
-
78
- loop do
79
- prev_token = token
80
- token = token.prev_token
81
39
 
82
- break if token.nil?
83
- break if token.name != :COMMENT
84
- break if prev_token.line != token.line + 1
85
-
86
- comments.unshift(token.to_s.sub(/^#\s*/, ""))
87
- end
88
-
89
- return nil if comments.empty?
90
-
91
- comments.join("\n")
92
- end
93
-
94
- def on_error(parser_token_id, lexer_token, vstack)
95
- if lexer_token == "$" || lexer_token == nil
96
- raise GraphQL::ParseError.new("Unexpected end of document", nil, nil, @query_string, filename: @filename)
97
- else
98
- parser_token_name = token_to_str(parser_token_id)
99
- if parser_token_name.nil?
100
- raise GraphQL::ParseError.new("Parse Error on unknown token: {token_id: #{parser_token_id}, lexer_token: #{lexer_token}} from #{@query_string}", nil, nil, @query_string, filename: @filename)
101
- else
102
- line, col = lexer_token.line_and_column
103
- if lexer_token.name == :BAD_UNICODE_ESCAPE
104
- raise GraphQL::ParseError.new("Parse error on bad Unicode escape sequence: #{lexer_token.to_s.inspect} (#{parser_token_name}) at [#{line}, #{col}]", line, col, @query_string, filename: @filename)
105
- else
106
- raise GraphQL::ParseError.new("Parse error on #{lexer_token.to_s.inspect} (#{parser_token_name}) at [#{line}, #{col}]", line, col, @query_string, filename: @filename)
40
+ def parse
41
+ @document ||= begin
42
+ @trace.parse(query_string: @graphql_str) do
43
+ document
44
+ end
45
+ rescue SystemStackError
46
+ raise GraphQL::ParseError.new("This query is too large to execute.", nil, nil, @query_str, filename: @filename)
47
+ end
107
48
  end
108
- end
109
- end
110
- end
111
-
112
- def make_node(node_name, assigns)
113
- assigns.each do |key, value|
114
- if key != :position_source && value.is_a?(GraphQL::Language::Token)
115
- assigns[key] = value.to_s
116
- end
117
- end
118
-
119
- assigns[:filename] = @filename
120
-
121
- GraphQL::Language::Nodes.const_get(node_name).new(assigns)
122
- end
123
- ...end parser.y/module_eval...
124
- ##### State transition tables begin ###
125
-
126
- racc_action_table = [
127
- -2, 279, 11, -99, 12, 13, 14, 280, 11, -99,
128
- 12, 13, 14, 178, -99, -99, 19, -99, 94, -165,
129
- 194, 93, 19, 12, 13, 14, 15, 196, 71, 35,
130
- 35, 35, 15, 71, 71, 28, -99, 35, 12, 13,
131
- 14, 28, 71, 263, -151, 71, 71, 35, 71, 43,
132
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
133
- 54, 55, 56, 60, 12, 13, 14, 71, -165, -165,
134
- 181, 35, -165, 160, 120, 43, 44, 45, 46, 47,
135
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 90,
136
- 12, 13, 14, 299, 66, 295, 35, 35, -165, 221,
137
- 35, 43, 44, 45, 46, 47, 48, 49, 50, 51,
138
- 52, 53, 54, 55, 56, 223, 12, 13, 14, 273,
139
- 66, 35, 272, 35, 131, 268, 35, 43, 44, 45,
140
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
141
- 56, 219, 71, 12, 13, 14, 66, 35, 217, 278,
142
- 35, 218, 285, 35, 200, 44, 45, 46, 47, 48,
143
- 49, 50, 51, 52, 198, 199, 207, 208, 204, 205,
144
- 206, 216, 302, 131, 12, 13, 14, 35, 300, 71,
145
- 277, 71, 218, 230, 87, 200, 44, 45, 46, 47,
146
- 48, 49, 50, 51, 52, 198, 199, 207, 208, 204,
147
- 205, 206, 216, 219, 233, 12, 13, 14, 35, 303,
148
- 217, 71, 35, 218, 35, 244, 200, 44, 45, 46,
149
- 47, 48, 49, 50, 51, 52, 198, 199, 207, 208,
150
- 204, 205, 206, 216, 302, 142, 12, 13, 14, 226,
151
- 12, 13, 14, 306, 218, 35, 35, 200, 44, 45,
152
- 46, 47, 48, 49, 50, 51, 52, 198, 199, 207,
153
- 208, 204, 205, 206, 216, 219, 35, 12, 13, 14,
154
- 250, 307, 217, 131, 284, 218, 254, 71, 200, 44,
155
- 45, 46, 47, 48, 49, 50, 51, 52, 198, 199,
156
- 207, 208, 204, 205, 206, 216, 219, 138, 12, 13,
157
- 14, 71, 94, 217, 233, 131, 218, 269, 71, 200,
158
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 198,
159
- 199, 207, 208, 204, 205, 206, 216, 219, 71, 12,
160
- 13, 14, 71, 120, 217, 71, 269, 218, 116, 71,
161
- 200, 44, 45, 46, 47, 48, 49, 50, 51, 52,
162
- 198, 199, 207, 208, 204, 205, 206, 216, 12, 13,
163
- 14, 80, 81, 38, 82, 83, 84, 85, 86, 43,
164
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
165
- 54, 55, 56, 12, 13, 14, 284, 101, 66, 174,
166
- 12, 13, 14, 71, 96, 44, 45, 46, 47, 48,
167
- 49, 50, 51, 52, 53, 54, 55, 56, 291, 12,
168
- 13, 14, 71, 12, 13, 14, 290, 98, 194, 71,
169
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
170
- 53, 54, 55, 56, 287, 12, 13, 14, 73, 74,
171
- 75, 71, 76, 77, 78, 79, 43, 44, 45, 46,
172
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
173
- 310, 12, 13, 14, 131, 94, 298, 168, 169, 89,
174
- 71, 131, 43, 44, 45, 46, 47, 48, 49, 50,
175
- 51, 52, 53, 54, 55, 56, 257, 12, 13, 14,
176
- 71, 176, 71, 71, 71, 71, 71, 185, 43, 44,
177
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
178
- 55, 56, 12, 13, 14, 186, 71, 187, 142, 188,
179
- 129, 71, 190, 43, 44, 45, 46, 47, 48, 49,
180
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
181
- 191, 192, 193, nil, nil, nil, nil, nil, 43, 44,
182
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
183
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
184
- nil, nil, nil, nil, 44, 45, 46, 47, 48, 49,
185
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
186
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
187
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
188
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
189
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
190
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
191
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
192
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
193
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
194
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
195
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
196
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
197
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
198
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
199
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
200
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
201
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
202
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
203
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
204
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
205
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
206
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
207
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
208
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
209
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
210
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
211
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
212
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
213
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
214
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
215
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
216
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
217
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
218
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
219
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
220
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
221
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
222
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
223
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
224
- 129, nil, nil, 43, 44, 45, 46, 47, 48, 49,
225
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
226
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
227
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
228
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
229
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
230
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
231
- nil, 166, nil, nil, nil, nil, nil, nil, 43, 44,
232
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
233
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
234
- 129, nil, nil, 43, 44, 45, 46, 47, 48, 49,
235
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
236
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
237
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
238
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
239
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
240
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
241
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
242
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
243
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
244
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
245
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
246
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
247
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
248
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
249
- 129, nil, nil, 43, 44, 45, 46, 47, 48, 49,
250
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
251
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
252
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
253
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
254
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
255
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
256
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
257
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
258
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
259
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
260
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
261
- nil, nil, nil, nil, nil, nil, nil, nil, 43, 44,
262
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
263
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
264
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
265
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
266
- nil, nil, nil, nil, nil, 129, nil, nil, 43, 44,
267
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
268
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
269
- nil, nil, nil, 43, 44, 45, 46, 47, 48, 49,
270
- 50, 51, 52, 53, 54, 55, 56, 12, 13, 14,
271
- nil, nil, nil, nil, nil, 129, nil, nil, 43, 44,
272
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
273
- 55, 56, 12, 13, 14, nil, nil, nil, nil, nil,
274
- nil, nil, nil, 200, 44, 45, 46, 47, 48, 49,
275
- 50, 51, 52, 198, 199, -157, nil, nil, nil, -157,
276
- nil, nil, nil, nil, nil, -157, nil, -157, -157 ]
277
-
278
- racc_action_check = [
279
- 3, 248, 3, 143, 3, 3, 3, 249, 0, 145,
280
- 0, 0, 0, 140, 102, 179, 3, 149, 65, 230,
281
- 158, 65, 0, 138, 138, 138, 3, 162, 145, 248,
282
- 249, 3, 0, 165, 143, 3, 147, 0, 142, 142,
283
- 142, 0, 110, 227, 140, 102, 179, 230, 149, 142,
284
- 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
285
- 142, 142, 142, 11, 11, 11, 11, 147, 190, 185,
286
- 142, 227, 178, 118, 118, 11, 11, 11, 11, 11,
287
- 11, 11, 11, 11, 11, 11, 11, 11, 11, 59,
288
- 59, 59, 59, 276, 11, 266, 190, 185, 244, 170,
289
- 178, 59, 59, 59, 59, 59, 59, 59, 59, 59,
290
- 59, 59, 59, 59, 59, 172, 172, 172, 172, 241,
291
- 59, 276, 240, 266, 171, 235, 244, 172, 172, 172,
292
- 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
293
- 172, 255, 109, 255, 255, 255, 172, 241, 255, 247,
294
- 240, 255, 255, 235, 255, 255, 255, 255, 255, 255,
295
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
296
- 255, 255, 306, 173, 306, 306, 306, 247, 281, 108,
297
- 245, 107, 306, 180, 38, 306, 306, 306, 306, 306,
298
- 306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
299
- 306, 306, 306, 290, 182, 290, 290, 290, 245, 289,
300
- 290, 106, 187, 290, 188, 189, 290, 290, 290, 290,
301
- 290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
302
- 290, 290, 290, 290, 284, 105, 284, 284, 284, 177,
303
- 177, 177, 177, 293, 284, 192, 193, 284, 284, 284,
304
- 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
305
- 284, 284, 284, 284, 284, 218, 194, 218, 218, 218,
306
- 195, 294, 218, 197, 308, 218, 218, 104, 218, 218,
307
- 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
308
- 218, 218, 218, 218, 218, 218, 303, 103, 303, 303,
309
- 303, 312, 100, 303, 231, 97, 303, 236, 95, 303,
310
- 303, 303, 303, 303, 303, 303, 303, 303, 303, 303,
311
- 303, 303, 303, 303, 303, 303, 303, 168, 92, 168,
312
- 168, 168, 19, 89, 168, 88, 246, 168, 86, 73,
313
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
314
- 168, 168, 168, 168, 168, 168, 168, 168, 131, 131,
315
- 131, 37, 37, 1, 37, 37, 37, 37, 37, 131,
316
- 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
317
- 131, 131, 131, 66, 66, 66, 251, 72, 131, 135,
318
- 135, 135, 135, 69, 66, 66, 66, 66, 66, 66,
319
- 66, 66, 66, 66, 66, 66, 66, 66, 261, 261,
320
- 261, 261, 66, 101, 101, 101, 260, 67, 265, 313,
321
- 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
322
- 261, 261, 261, 261, 258, 258, 258, 258, 28, 28,
323
- 28, 270, 28, 28, 28, 28, 258, 258, 258, 258,
324
- 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
325
- 302, 302, 302, 302, 121, 122, 275, 125, 127, 40,
326
- 130, 117, 302, 302, 302, 302, 302, 302, 302, 302,
327
- 302, 302, 302, 302, 302, 302, 219, 219, 219, 219,
328
- 133, 137, 139, 115, 141, 113, 114, 144, 219, 219,
329
- 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
330
- 219, 219, 98, 98, 98, 146, 112, 148, 111, 150,
331
- 98, 152, 154, 98, 98, 98, 98, 98, 98, 98,
332
- 98, 98, 98, 98, 98, 98, 98, 10, 10, 10,
333
- 155, 156, 157, nil, nil, nil, nil, nil, 10, 10,
334
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
335
- 10, 10, 15, 15, 15, nil, nil, nil, nil, nil,
336
- nil, nil, nil, nil, 15, 15, 15, 15, 15, 15,
337
- 15, 15, 15, 15, 15, 15, 15, 71, 71, 71,
338
- nil, nil, nil, nil, nil, nil, nil, nil, 71, 71,
339
- 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
340
- 71, 71, 74, 74, 74, nil, nil, nil, nil, nil,
341
- nil, nil, nil, 74, 74, 74, 74, 74, 74, 74,
342
- 74, 74, 74, 74, 74, 74, 74, 75, 75, 75,
343
- nil, nil, nil, nil, nil, nil, nil, nil, 75, 75,
344
- 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
345
- 75, 75, 76, 76, 76, nil, nil, nil, nil, nil,
346
- nil, nil, nil, 76, 76, 76, 76, 76, 76, 76,
347
- 76, 76, 76, 76, 76, 76, 76, 77, 77, 77,
348
- nil, nil, nil, nil, nil, nil, nil, nil, 77, 77,
349
- 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
350
- 77, 77, 78, 78, 78, nil, nil, nil, nil, nil,
351
- nil, nil, nil, 78, 78, 78, 78, 78, 78, 78,
352
- 78, 78, 78, 78, 78, 78, 78, 79, 79, 79,
353
- nil, nil, nil, nil, nil, nil, nil, nil, 79, 79,
354
- 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
355
- 79, 79, 80, 80, 80, nil, nil, nil, nil, nil,
356
- nil, nil, nil, 80, 80, 80, 80, 80, 80, 80,
357
- 80, 80, 80, 80, 80, 80, 80, 81, 81, 81,
358
- nil, nil, nil, nil, nil, nil, nil, nil, 81, 81,
359
- 81, 81, 81, 81, 81, 81, 81, 81, 81, 81,
360
- 81, 81, 82, 82, 82, nil, nil, nil, nil, nil,
361
- nil, nil, nil, 82, 82, 82, 82, 82, 82, 82,
362
- 82, 82, 82, 82, 82, 82, 82, 83, 83, 83,
363
- nil, nil, nil, nil, nil, nil, nil, nil, 83, 83,
364
- 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
365
- 83, 83, 84, 84, 84, nil, nil, nil, nil, nil,
366
- nil, nil, nil, 84, 84, 84, 84, 84, 84, 84,
367
- 84, 84, 84, 84, 84, 84, 84, 85, 85, 85,
368
- nil, nil, nil, nil, nil, nil, nil, nil, 85, 85,
369
- 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
370
- 85, 85, 93, 93, 93, nil, nil, nil, nil, nil,
371
- nil, nil, nil, 93, 93, 93, 93, 93, 93, 93,
372
- 93, 93, 93, 93, 93, 93, 93, 94, 94, 94,
373
- nil, nil, nil, nil, nil, nil, nil, nil, 94, 94,
374
- 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
375
- 94, 94, 96, 96, 96, nil, nil, nil, nil, nil,
376
- 96, nil, nil, 96, 96, 96, 96, 96, 96, 96,
377
- 96, 96, 96, 96, 96, 96, 96, 116, 116, 116,
378
- nil, nil, nil, nil, nil, nil, nil, nil, 116, 116,
379
- 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
380
- 116, 116, 120, 120, 120, nil, nil, nil, nil, nil,
381
- nil, nil, nil, 120, 120, 120, 120, 120, 120, 120,
382
- 120, 120, 120, 120, 120, 120, 120, 123, 123, 123,
383
- nil, 123, nil, nil, nil, nil, nil, nil, 123, 123,
384
- 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
385
- 123, 123, 129, 129, 129, nil, nil, nil, nil, nil,
386
- 129, nil, nil, 129, 129, 129, 129, 129, 129, 129,
387
- 129, 129, 129, 129, 129, 129, 129, 176, 176, 176,
388
- nil, nil, nil, nil, nil, nil, nil, nil, 176, 176,
389
- 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
390
- 176, 176, 181, 181, 181, nil, nil, nil, nil, nil,
391
- nil, nil, nil, 181, 181, 181, 181, 181, 181, 181,
392
- 181, 181, 181, 181, 181, 181, 181, 183, 183, 183,
393
- nil, nil, nil, nil, nil, nil, nil, nil, 183, 183,
394
- 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
395
- 183, 183, 186, 186, 186, nil, nil, nil, nil, nil,
396
- nil, nil, nil, 186, 186, 186, 186, 186, 186, 186,
397
- 186, 186, 186, 186, 186, 186, 186, 191, 191, 191,
398
- nil, nil, nil, nil, nil, nil, nil, nil, 191, 191,
399
- 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
400
- 191, 191, 196, 196, 196, nil, nil, nil, nil, nil,
401
- 196, nil, nil, 196, 196, 196, 196, 196, 196, 196,
402
- 196, 196, 196, 196, 196, 196, 196, 217, 217, 217,
403
- nil, nil, nil, nil, nil, nil, nil, nil, 217, 217,
404
- 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
405
- 217, 217, 228, 228, 228, nil, nil, nil, nil, nil,
406
- nil, nil, nil, 228, 228, 228, 228, 228, 228, 228,
407
- 228, 228, 228, 228, 228, 228, 228, 233, 233, 233,
408
- nil, nil, nil, nil, nil, nil, nil, nil, 233, 233,
409
- 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
410
- 233, 233, 242, 242, 242, nil, nil, nil, nil, nil,
411
- nil, nil, nil, 242, 242, 242, 242, 242, 242, 242,
412
- 242, 242, 242, 242, 242, 242, 242, 250, 250, 250,
413
- nil, nil, nil, nil, nil, nil, nil, nil, 250, 250,
414
- 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
415
- 250, 250, 269, 269, 269, nil, nil, nil, nil, nil,
416
- nil, nil, nil, 269, 269, 269, 269, 269, 269, 269,
417
- 269, 269, 269, 269, 269, 269, 269, 298, 298, 298,
418
- nil, nil, nil, nil, nil, 298, nil, nil, 298, 298,
419
- 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
420
- 298, 298, 300, 300, 300, nil, nil, nil, nil, nil,
421
- nil, nil, nil, 300, 300, 300, 300, 300, 300, 300,
422
- 300, 300, 300, 300, 300, 300, 300, 307, 307, 307,
423
- nil, nil, nil, nil, nil, 307, nil, nil, 307, 307,
424
- 307, 307, 307, 307, 307, 307, 307, 307, 307, 307,
425
- 307, 307, 238, 238, 238, nil, nil, nil, nil, nil,
426
- nil, nil, nil, 238, 238, 238, 238, 238, 238, 238,
427
- 238, 238, 238, 238, 238, 184, nil, nil, nil, 184,
428
- nil, nil, nil, nil, nil, 184, nil, 184, 184 ]
429
-
430
- racc_action_pointer = [
431
- 6, 363, nil, 0, nil, nil, nil, nil, nil, nil,
432
- 533, 60, nil, nil, nil, 558, nil, nil, nil, 299,
433
- nil, nil, nil, nil, nil, nil, nil, nil, 422, nil,
434
- nil, nil, nil, nil, nil, nil, nil, 344, 184, nil,
435
- 462, nil, nil, nil, nil, nil, nil, nil, nil, nil,
436
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 86,
437
- nil, nil, nil, nil, nil, 11, 379, 402, nil, 360,
438
- nil, 583, 385, 306, 608, 633, 658, 683, 708, 733,
439
- 758, 783, 808, 833, 858, 883, 305, nil, 302, 324,
440
- nil, nil, 295, 908, 933, 275, 958, 303, 508, nil,
441
- 295, 409, 12, 295, 244, 216, 178, 148, 146, 109,
442
- 9, 499, 483, 462, 463, 460, 983, 469, 65, nil,
443
- 1008, 462, 458, 1033, nil, 457, nil, 457, nil, 1058,
444
- 437, 354, nil, 457, nil, 386, nil, 481, 19, 459,
445
- 11, 461, 34, 1, 495, -5, 501, 34, 515, 15,
446
- 517, nil, 488, nil, 520, 526, 539, 540, 13, nil,
447
- nil, nil, 17, nil, nil, 0, nil, nil, 325, nil,
448
- 86, 122, 112, 171, nil, nil, 1083, 236, 69, 13,
449
- 181, 1108, 168, 1133, 1470, 66, 1158, 181, 183, 213,
450
- 65, 1183, 214, 215, 235, 255, 1208, 271, nil, nil,
451
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
452
- nil, nil, nil, nil, nil, nil, nil, 1233, 263, 483,
453
- nil, nil, nil, nil, nil, nil, nil, 40, 1258, nil,
454
- 16, 268, nil, 1283, nil, 122, 270, nil, 1458, nil,
455
- 119, 116, 1308, nil, 95, 177, 299, 146, -2, -1,
456
- 1333, 372, nil, nil, nil, 139, nil, nil, 431, nil,
457
- 406, 405, nil, nil, nil, 411, 92, nil, nil, 1358,
458
- 408, nil, nil, nil, nil, 456, 90, nil, nil, nil,
459
- nil, 141, nil, nil, 232, nil, nil, nil, nil, 199,
460
- 201, nil, nil, 233, 261, nil, nil, nil, 1383, nil,
461
- 1408, nil, 457, 294, nil, nil, 170, 1433, 260, nil,
462
- nil, nil, 268, 386, nil, nil ]
463
-
464
- racc_action_default = [
465
- -146, -177, -1, -146, -3, -5, -6, -7, -8, -9,
466
- -16, -177, -13, -14, -15, -107, -109, -110, -111, -98,
467
- -116, -117, -118, -119, -120, -121, -122, -123, -177, -126,
468
- -127, -128, -129, -130, -131, -145, -147, -177, -177, -4,
469
- -18, -17, -39, -40, -41, -42, -43, -44, -45, -46,
470
- -47, -48, -49, -50, -51, -52, -53, -54, -55, -177,
471
- -12, -32, -34, -35, -36, -64, -98, -177, -108, -99,
472
- -100, -177, -177, -98, -177, -177, -177, -177, -177, -177,
473
- -177, -177, -177, -177, -177, -177, -177, 316, -98, -177,
474
- -11, -33, -98, -177, -177, -98, -177, -177, -177, -101,
475
- -64, -177, -125, -177, -177, -150, -98, -98, -98, -98,
476
- -98, -150, -98, -98, -98, -98, -177, -177, -177, -20,
477
- -177, -30, -64, -177, -66, -177, -103, -23, -25, -177,
478
- -98, -177, -105, -98, -102, -177, -113, -177, -177, -132,
479
- -136, -98, -177, -138, -177, -140, -177, -142, -177, -144,
480
- -177, -148, -98, -151, -177, -177, -177, -177, -162, -10,
481
- -19, -21, -177, -31, -37, -98, -65, -67, -177, -24,
482
- -177, -177, -177, -177, -112, -114, -177, -177, -146, -135,
483
- -177, -177, -153, -154, -155, -146, -177, -146, -146, -177,
484
- -146, -177, -146, -146, -146, -177, -177, -30, -56, -57,
485
- -58, -59, -60, -68, -69, -70, -71, -72, -73, -74,
486
- -75, -76, -77, -78, -79, -80, -81, -177, -177, -177,
487
- -97, -26, -104, -29, -106, -115, -124, -146, -177, -166,
488
- -146, -152, -155, -177, -158, -146, -139, -169, -177, -62,
489
- -146, -146, -177, -160, -146, -146, -171, -146, -146, -146,
490
- -177, -27, -38, -82, -83, -177, -85, -87, -177, -89,
491
- -177, -177, -94, -133, -167, -162, -146, -156, -137, -177,
492
- -98, -63, -141, -143, -161, -177, -146, -168, -172, -173,
493
- -163, -174, -175, -22, -177, -84, -86, -88, -90, -177,
494
- -177, -93, -95, -177, -177, -134, -170, -61, -177, -149,
495
- -177, -28, -177, -177, -78, -91, -177, -177, -27, -176,
496
- -92, -96, -98, -98, -164, -159 ]
497
-
498
- racc_goto_table = [
499
- 10, 72, 59, 10, 91, 132, 130, 195, 133, 68,
500
- 164, 203, 283, 270, 227, 202, 102, 175, 92, 37,
501
- 135, 235, 37, 274, 264, 159, 245, 124, 259, 99,
502
- 274, 274, 264, 182, 271, 119, 118, 2, 241, 170,
503
- 140, 271, 264, 248, 249, 88, 153, 139, 97, 143,
504
- 145, 147, 149, 134, 281, 103, 167, 177, 1, 175,
505
- 95, 256, 99, 264, 161, 202, 266, 288, 4, 313,
506
- 117, 39, 231, 264, 121, 165, 141, 126, 236, 222,
507
- 276, 224, 152, 246, 179, 202, 252, 40, 144, 146,
508
- 148, 150, 151, 183, 154, 155, 156, 157, 286, 99,
509
- 3, 137, 202, 99, 258, 99, 251, 99, 240, 99,
510
- 301, 292, 171, 247, 294, 173, 304, 91, 255, 123,
511
- 67, nil, 172, 180, nil, nil, 41, 65, nil, nil,
512
- nil, 202, 311, nil, 189, 137, nil, 202, 137, 99,
513
- nil, nil, nil, nil, nil, nil, nil, 197, nil, nil,
514
- 202, nil, nil, 202, nil, nil, nil, nil, nil, nil,
515
- nil, nil, nil, nil, nil, nil, nil, nil, 201, nil,
516
- nil, nil, nil, nil, nil, 65, nil, 137, nil, nil,
517
- nil, nil, nil, nil, nil, nil, nil, 100, nil, nil,
518
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
519
- 114, 115, nil, nil, nil, nil, 238, 242, 308, 122,
520
- 125, 238, 242, 242, nil, nil, nil, 312, 201, nil,
521
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
522
- nil, nil, 158, nil, nil, nil, 162, nil, 201, 125,
523
- nil, nil, nil, nil, nil, nil, nil, 65, nil, nil,
524
- nil, nil, 297, nil, nil, 201, nil, nil, 184, 238,
525
- 242, nil, nil, nil, nil, nil, 238, 242, 242, nil,
526
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
527
- nil, nil, nil, nil, 201, nil, nil, nil, 65, nil,
528
- 201, nil, 225, nil, 314, 315, nil, 232, nil, 234,
529
- nil, nil, 237, 201, nil, nil, 201, 237, nil, nil,
530
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
531
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
532
- nil, nil, nil, 253, nil, 260, nil, nil, nil, nil,
533
- nil, nil, nil, nil, 265, nil, nil, nil, nil, 267,
534
- nil, nil, nil, nil, nil, nil, nil, nil, 275, nil,
535
- nil, nil, nil, nil, nil, nil, 282, nil, nil, nil,
536
- nil, nil, nil, nil, 289, nil, nil, 293, nil, nil,
537
- nil, nil, nil, nil, nil, 296, nil, nil, nil, nil,
538
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
539
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
540
- nil, nil, nil, nil, nil, nil, 309, nil, 293 ]
541
-
542
- racc_goto_check = [
543
- 10, 13, 15, 10, 24, 14, 19, 80, 19, 29,
544
- 23, 37, 20, 31, 72, 30, 49, 56, 28, 33,
545
- 55, 72, 33, 79, 81, 14, 72, 36, 46, 50,
546
- 79, 79, 81, 77, 32, 18, 17, 2, 75, 19,
547
- 71, 32, 81, 75, 75, 12, 71, 49, 13, 49,
548
- 49, 49, 49, 28, 82, 13, 36, 55, 1, 56,
549
- 29, 37, 50, 81, 18, 30, 72, 46, 4, 20,
550
- 13, 4, 77, 81, 13, 28, 73, 13, 74, 14,
551
- 72, 14, 73, 74, 49, 30, 23, 11, 13, 13,
552
- 13, 13, 13, 78, 13, 13, 13, 13, 37, 50,
553
- 3, 10, 30, 50, 45, 50, 19, 50, 34, 50,
554
- 22, 48, 13, 34, 80, 13, 22, 24, 44, 35,
555
- 51, nil, 15, 13, nil, nil, 16, 16, nil, nil,
556
- nil, 30, 22, nil, 13, 10, nil, 30, 10, 50,
557
- nil, nil, nil, nil, nil, nil, nil, 13, nil, nil,
558
- 30, nil, nil, 30, nil, nil, nil, nil, nil, nil,
559
- nil, nil, nil, nil, nil, nil, nil, nil, 10, nil,
560
- nil, nil, nil, nil, nil, 16, nil, 10, nil, nil,
561
- nil, nil, nil, nil, nil, nil, nil, 16, nil, nil,
562
- 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
563
- 16, 16, nil, nil, nil, nil, 33, 33, 19, 16,
564
- 16, 33, 33, 33, nil, nil, nil, 19, 10, nil,
565
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
566
- nil, nil, 16, nil, nil, nil, 16, nil, 10, 16,
567
- nil, nil, nil, nil, nil, nil, nil, 16, nil, nil,
568
- nil, nil, 13, nil, nil, 10, nil, nil, 16, 33,
569
- 33, nil, nil, nil, nil, nil, 33, 33, 33, nil,
570
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
571
- nil, nil, nil, nil, 10, nil, nil, nil, 16, nil,
572
- 10, nil, 16, nil, 13, 13, nil, 16, nil, 16,
573
- nil, nil, 16, 10, nil, nil, 10, 16, nil, nil,
574
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
575
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
576
- nil, nil, nil, 16, nil, 16, nil, nil, nil, nil,
577
- nil, nil, nil, nil, 16, nil, nil, nil, nil, 16,
578
- nil, nil, nil, nil, nil, nil, nil, nil, 16, nil,
579
- nil, nil, nil, nil, nil, nil, 16, nil, nil, nil,
580
- nil, nil, nil, nil, 16, nil, nil, 16, nil, nil,
581
- nil, nil, nil, nil, nil, 16, nil, nil, nil, nil,
582
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
583
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
584
- nil, nil, nil, nil, nil, nil, 16, nil, 16 ]
585
-
586
- racc_goto_pointer = [
587
- nil, 58, 37, 100, 68, nil, nil, nil, nil, nil,
588
- 0, 77, 5, -18, -92, -9, 116, -53, -54, -90,
589
- -239, nil, -174, -111, -55, nil, nil, nil, -47, -6,
590
- -153, -225, -206, 19, -79, 25, -67, -157, nil, nil,
591
- nil, nil, nil, nil, -100, -115, -191, nil, -150, -57,
592
- -40, 105, nil, nil, nil, -81, -118, nil, nil, nil,
593
- nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
594
- nil, -65, -164, -29, -108, -150, nil, -109, -49, -218,
595
- -151, -203, -196 ]
596
-
597
- racc_goto_default = [
598
- nil, nil, nil, nil, nil, 5, 6, 7, 8, 9,
599
- 57, nil, nil, nil, 163, nil, 128, nil, nil, nil,
600
- nil, 127, 213, nil, 61, 62, 63, 64, nil, 42,
601
- 58, 220, 239, 228, nil, nil, nil, 305, 209, 210,
602
- 211, 212, 214, 215, nil, nil, nil, 261, 262, 69,
603
- 70, nil, 16, 17, 18, nil, 136, 20, 21, 22,
604
- 23, 24, 25, 26, 27, 29, 30, 31, 32, 33,
605
- 34, nil, nil, nil, nil, nil, 36, nil, nil, 243,
606
- nil, 229, nil ]
607
-
608
- racc_reduce_table = [
609
- 0, 0, :racc_error,
610
- 1, 39, :_reduce_none,
611
- 1, 40, :_reduce_2,
612
- 1, 41, :_reduce_3,
613
- 2, 41, :_reduce_4,
614
- 1, 42, :_reduce_none,
615
- 1, 42, :_reduce_none,
616
- 1, 42, :_reduce_none,
617
- 1, 43, :_reduce_none,
618
- 1, 43, :_reduce_none,
619
- 5, 46, :_reduce_10,
620
- 3, 46, :_reduce_11,
621
- 2, 46, :_reduce_12,
622
- 1, 48, :_reduce_none,
623
- 1, 48, :_reduce_none,
624
- 1, 48, :_reduce_none,
625
- 0, 49, :_reduce_16,
626
- 1, 49, :_reduce_none,
627
- 0, 50, :_reduce_18,
628
- 3, 50, :_reduce_19,
629
- 1, 55, :_reduce_20,
630
- 2, 55, :_reduce_21,
631
- 5, 56, :_reduce_22,
632
- 1, 57, :_reduce_23,
633
- 2, 57, :_reduce_24,
634
- 1, 59, :_reduce_25,
635
- 3, 59, :_reduce_26,
636
- 0, 58, :_reduce_27,
637
- 2, 58, :_reduce_28,
638
- 3, 52, :_reduce_29,
639
- 0, 61, :_reduce_30,
640
- 1, 61, :_reduce_31,
641
- 1, 53, :_reduce_32,
642
- 2, 53, :_reduce_33,
643
- 1, 62, :_reduce_none,
644
- 1, 62, :_reduce_none,
645
- 1, 62, :_reduce_none,
646
- 4, 63, :_reduce_37,
647
- 6, 63, :_reduce_38,
648
- 1, 54, :_reduce_none,
649
- 1, 54, :_reduce_none,
650
- 1, 68, :_reduce_none,
651
- 1, 68, :_reduce_none,
652
- 1, 68, :_reduce_none,
653
- 1, 68, :_reduce_none,
654
- 1, 68, :_reduce_none,
655
- 1, 68, :_reduce_none,
656
- 1, 68, :_reduce_none,
657
- 1, 68, :_reduce_none,
658
- 1, 68, :_reduce_none,
659
- 1, 67, :_reduce_none,
660
- 1, 67, :_reduce_none,
661
- 1, 67, :_reduce_none,
662
- 1, 67, :_reduce_none,
663
- 1, 67, :_reduce_none,
664
- 1, 67, :_reduce_none,
665
- 1, 69, :_reduce_none,
666
- 1, 69, :_reduce_none,
667
- 1, 69, :_reduce_none,
668
- 1, 69, :_reduce_none,
669
- 1, 69, :_reduce_none,
670
- 3, 70, :_reduce_61,
671
- 1, 72, :_reduce_62,
672
- 2, 72, :_reduce_63,
673
- 0, 66, :_reduce_64,
674
- 3, 66, :_reduce_65,
675
- 1, 73, :_reduce_66,
676
- 2, 73, :_reduce_67,
677
- 3, 74, :_reduce_68,
678
- 1, 60, :_reduce_69,
679
- 1, 60, :_reduce_70,
680
- 1, 60, :_reduce_71,
681
- 1, 60, :_reduce_72,
682
- 1, 60, :_reduce_73,
683
- 1, 60, :_reduce_none,
684
- 1, 60, :_reduce_none,
685
- 1, 60, :_reduce_none,
686
- 1, 60, :_reduce_none,
687
- 1, 75, :_reduce_none,
688
- 1, 75, :_reduce_none,
689
- 1, 75, :_reduce_none,
690
- 1, 76, :_reduce_81,
691
- 2, 80, :_reduce_82,
692
- 2, 78, :_reduce_83,
693
- 3, 78, :_reduce_84,
694
- 1, 82, :_reduce_85,
695
- 2, 82, :_reduce_86,
696
- 2, 81, :_reduce_87,
697
- 3, 81, :_reduce_88,
698
- 1, 83, :_reduce_89,
699
- 2, 83, :_reduce_90,
700
- 3, 84, :_reduce_91,
701
- 2, 79, :_reduce_92,
702
- 3, 79, :_reduce_93,
703
- 1, 85, :_reduce_94,
704
- 2, 85, :_reduce_95,
705
- 3, 86, :_reduce_96,
706
- 1, 77, :_reduce_97,
707
- 0, 51, :_reduce_98,
708
- 1, 51, :_reduce_none,
709
- 1, 87, :_reduce_100,
710
- 2, 87, :_reduce_101,
711
- 3, 88, :_reduce_102,
712
- 3, 64, :_reduce_103,
713
- 5, 65, :_reduce_104,
714
- 3, 65, :_reduce_105,
715
- 6, 47, :_reduce_106,
716
- 0, 89, :_reduce_107,
717
- 1, 89, :_reduce_none,
718
- 1, 44, :_reduce_none,
719
- 1, 44, :_reduce_none,
720
- 1, 44, :_reduce_none,
721
- 5, 90, :_reduce_112,
722
- 1, 93, :_reduce_none,
723
- 2, 93, :_reduce_114,
724
- 3, 94, :_reduce_115,
725
- 1, 91, :_reduce_none,
726
- 1, 91, :_reduce_none,
727
- 1, 91, :_reduce_none,
728
- 1, 91, :_reduce_none,
729
- 1, 91, :_reduce_none,
730
- 1, 91, :_reduce_none,
731
- 1, 45, :_reduce_none,
732
- 1, 45, :_reduce_none,
733
- 6, 101, :_reduce_124,
734
- 3, 101, :_reduce_125,
735
- 1, 102, :_reduce_none,
736
- 1, 102, :_reduce_none,
737
- 1, 102, :_reduce_none,
738
- 1, 102, :_reduce_none,
739
- 1, 102, :_reduce_none,
740
- 1, 102, :_reduce_none,
741
- 4, 103, :_reduce_132,
742
- 7, 104, :_reduce_133,
743
- 8, 104, :_reduce_134,
744
- 5, 104, :_reduce_135,
745
- 4, 104, :_reduce_136,
746
- 7, 105, :_reduce_137,
747
- 4, 105, :_reduce_138,
748
- 6, 106, :_reduce_139,
749
- 4, 106, :_reduce_140,
750
- 7, 107, :_reduce_141,
751
- 4, 107, :_reduce_142,
752
- 7, 108, :_reduce_143,
753
- 4, 108, :_reduce_144,
754
- 1, 114, :_reduce_none,
755
- 0, 71, :_reduce_none,
756
- 1, 71, :_reduce_none,
757
- 4, 95, :_reduce_148,
758
- 8, 96, :_reduce_149,
759
- 0, 111, :_reduce_150,
760
- 1, 111, :_reduce_none,
761
- 3, 109, :_reduce_152,
762
- 2, 109, :_reduce_153,
763
- 2, 109, :_reduce_154,
764
- 1, 115, :_reduce_155,
765
- 3, 115, :_reduce_156,
766
- 1, 116, :_reduce_157,
767
- 2, 116, :_reduce_158,
768
- 6, 117, :_reduce_159,
769
- 1, 113, :_reduce_160,
770
- 2, 113, :_reduce_161,
771
- 0, 118, :_reduce_162,
772
- 3, 118, :_reduce_163,
773
- 6, 119, :_reduce_164,
774
- 0, 110, :_reduce_165,
775
- 1, 110, :_reduce_166,
776
- 2, 110, :_reduce_167,
777
- 7, 97, :_reduce_168,
778
- 1, 112, :_reduce_169,
779
- 3, 112, :_reduce_170,
780
- 6, 98, :_reduce_171,
781
- 7, 99, :_reduce_172,
782
- 7, 100, :_reduce_173,
783
- 7, 92, :_reduce_174,
784
- 1, 120, :_reduce_175,
785
- 3, 120, :_reduce_176 ]
786
-
787
- racc_reduce_n = 177
788
-
789
- racc_shift_n = 316
790
-
791
- racc_token_table = {
792
- false => 0,
793
- :error => 1,
794
- :LCURLY => 2,
795
- :RCURLY => 3,
796
- :QUERY => 4,
797
- :MUTATION => 5,
798
- :SUBSCRIPTION => 6,
799
- :LPAREN => 7,
800
- :RPAREN => 8,
801
- :VAR_SIGN => 9,
802
- :COLON => 10,
803
- :BANG => 11,
804
- :LBRACKET => 12,
805
- :RBRACKET => 13,
806
- :EQUALS => 14,
807
- :ON => 15,
808
- :SCHEMA => 16,
809
- :SCALAR => 17,
810
- :TYPE => 18,
811
- :IMPLEMENTS => 19,
812
- :INTERFACE => 20,
813
- :UNION => 21,
814
- :ENUM => 22,
815
- :INPUT => 23,
816
- :DIRECTIVE => 24,
817
- :IDENTIFIER => 25,
818
- :FRAGMENT => 26,
819
- :TRUE => 27,
820
- :FALSE => 28,
821
- :FLOAT => 29,
822
- :INT => 30,
823
- :STRING => 31,
824
- :NULL => 32,
825
- :DIR_SIGN => 33,
826
- :ELLIPSIS => 34,
827
- :EXTEND => 35,
828
- :AMP => 36,
829
- :PIPE => 37 }
830
-
831
- racc_nt_base = 38
832
-
833
- racc_use_result_var = true
834
-
835
- Racc_arg = [
836
- racc_action_table,
837
- racc_action_check,
838
- racc_action_default,
839
- racc_action_pointer,
840
- racc_goto_table,
841
- racc_goto_check,
842
- racc_goto_default,
843
- racc_goto_pointer,
844
- racc_nt_base,
845
- racc_reduce_table,
846
- racc_token_table,
847
- racc_shift_n,
848
- racc_reduce_n,
849
- racc_use_result_var ]
850
-
851
- Racc_token_to_s_table = [
852
- "$end",
853
- "error",
854
- "LCURLY",
855
- "RCURLY",
856
- "QUERY",
857
- "MUTATION",
858
- "SUBSCRIPTION",
859
- "LPAREN",
860
- "RPAREN",
861
- "VAR_SIGN",
862
- "COLON",
863
- "BANG",
864
- "LBRACKET",
865
- "RBRACKET",
866
- "EQUALS",
867
- "ON",
868
- "SCHEMA",
869
- "SCALAR",
870
- "TYPE",
871
- "IMPLEMENTS",
872
- "INTERFACE",
873
- "UNION",
874
- "ENUM",
875
- "INPUT",
876
- "DIRECTIVE",
877
- "IDENTIFIER",
878
- "FRAGMENT",
879
- "TRUE",
880
- "FALSE",
881
- "FLOAT",
882
- "INT",
883
- "STRING",
884
- "NULL",
885
- "DIR_SIGN",
886
- "ELLIPSIS",
887
- "EXTEND",
888
- "AMP",
889
- "PIPE",
890
- "$start",
891
- "target",
892
- "document",
893
- "definitions_list",
894
- "definition",
895
- "executable_definition",
896
- "type_system_definition",
897
- "type_system_extension",
898
- "operation_definition",
899
- "fragment_definition",
900
- "operation_type",
901
- "operation_name_opt",
902
- "variable_definitions_opt",
903
- "directives_list_opt",
904
- "selection_set",
905
- "selection_list",
906
- "name",
907
- "variable_definitions_list",
908
- "variable_definition",
909
- "type",
910
- "default_value_opt",
911
- "nullable_type",
912
- "literal_value",
913
- "selection_set_opt",
914
- "selection",
915
- "field",
916
- "fragment_spread",
917
- "inline_fragment",
918
- "arguments_opt",
919
- "name_without_on",
920
- "schema_keyword",
921
- "enum_name",
922
- "enum_value_definition",
923
- "description_opt",
924
- "enum_value_definitions",
925
- "arguments_list",
926
- "argument",
927
- "input_value",
928
- "null_value",
929
- "enum_value",
930
- "list_value",
931
- "object_literal_value",
932
- "variable",
933
- "object_value",
934
- "list_value_list",
935
- "object_value_list",
936
- "object_value_field",
937
- "object_literal_value_list",
938
- "object_literal_value_field",
939
- "directives_list",
940
- "directive",
941
- "fragment_name_opt",
942
- "schema_definition",
943
- "type_definition",
944
- "directive_definition",
945
- "operation_type_definition_list",
946
- "operation_type_definition",
947
- "scalar_type_definition",
948
- "object_type_definition",
949
- "interface_type_definition",
950
- "union_type_definition",
951
- "enum_type_definition",
952
- "input_object_type_definition",
953
- "schema_extension",
954
- "type_extension",
955
- "scalar_type_extension",
956
- "object_type_extension",
957
- "interface_type_extension",
958
- "union_type_extension",
959
- "enum_type_extension",
960
- "input_object_type_extension",
961
- "implements",
962
- "field_definition_list",
963
- "implements_opt",
964
- "union_members",
965
- "input_value_definition_list",
966
- "description",
967
- "interfaces_list",
968
- "legacy_interfaces_list",
969
- "input_value_definition",
970
- "arguments_definitions_opt",
971
- "field_definition",
972
- "directive_locations" ]
973
-
974
- Racc_debug_parser = false
975
-
976
- ##### State transition tables end #####
977
-
978
- # reduce 0 omitted
979
-
980
- # reduce 1 omitted
981
-
982
- module_eval(<<'.,.,', 'parser.y', 4)
983
- def _reduce_2(val, _values, result)
984
- result = make_node(:Document, definitions: val[0])
985
- result
986
- end
987
- .,.,
988
-
989
- module_eval(<<'.,.,', 'parser.y', 7)
990
- def _reduce_3(val, _values, result)
991
- result = [val[0]]
992
- result
993
- end
994
- .,.,
995
-
996
- module_eval(<<'.,.,', 'parser.y', 8)
997
- def _reduce_4(val, _values, result)
998
- val[0] << val[1]
999
- result
1000
- end
1001
- .,.,
1002
-
1003
- # reduce 5 omitted
1004
-
1005
- # reduce 6 omitted
1006
-
1007
- # reduce 7 omitted
1008
-
1009
- # reduce 8 omitted
1010
-
1011
- # reduce 9 omitted
1012
-
1013
- module_eval(<<'.,.,', 'parser.y', 21)
1014
- def _reduce_10(val, _values, result)
1015
- result = make_node(
1016
- :OperationDefinition, {
1017
- operation_type: val[0],
1018
- name: val[1],
1019
- variables: val[2],
1020
- directives: val[3],
1021
- selections: val[4],
1022
- position_source: val[0],
1023
- }
1024
- )
1025
-
1026
- result
1027
- end
1028
- .,.,
1029
-
1030
- module_eval(<<'.,.,', 'parser.y', 33)
1031
- def _reduce_11(val, _values, result)
1032
- result = make_node(
1033
- :OperationDefinition, {
1034
- operation_type: "query",
1035
- selections: val[1],
1036
- position_source: val[0],
1037
- }
1038
- )
1039
-
1040
- result
1041
- end
1042
- .,.,
1043
-
1044
- module_eval(<<'.,.,', 'parser.y', 42)
1045
- def _reduce_12(val, _values, result)
1046
- result = make_node(
1047
- :OperationDefinition, {
1048
- operation_type: "query",
1049
- selections: [],
1050
- position_source: val[0],
1051
- }
1052
- )
1053
-
1054
- result
1055
- end
1056
- .,.,
1057
-
1058
- # reduce 13 omitted
1059
-
1060
- # reduce 14 omitted
1061
-
1062
- # reduce 15 omitted
1063
-
1064
- module_eval(<<'.,.,', 'parser.y', 57)
1065
- def _reduce_16(val, _values, result)
1066
- result = nil
1067
- result
1068
- end
1069
- .,.,
1070
-
1071
- # reduce 17 omitted
1072
-
1073
- module_eval(<<'.,.,', 'parser.y', 61)
1074
- def _reduce_18(val, _values, result)
1075
- result = EMPTY_ARRAY
1076
- result
1077
- end
1078
- .,.,
1079
-
1080
- module_eval(<<'.,.,', 'parser.y', 62)
1081
- def _reduce_19(val, _values, result)
1082
- result = val[1]
1083
- result
1084
- end
1085
- .,.,
1086
49
 
1087
- module_eval(<<'.,.,', 'parser.y', 65)
1088
- def _reduce_20(val, _values, result)
1089
- result = [val[0]]
1090
- result
1091
- end
1092
- .,.,
1093
-
1094
- module_eval(<<'.,.,', 'parser.y', 66)
1095
- def _reduce_21(val, _values, result)
1096
- val[0] << val[1]
1097
- result
1098
- end
1099
- .,.,
1100
-
1101
- module_eval(<<'.,.,', 'parser.y', 70)
1102
- def _reduce_22(val, _values, result)
1103
- result = make_node(:VariableDefinition, {
1104
- name: val[1],
1105
- type: val[3],
1106
- default_value: val[4],
1107
- position_source: val[0],
1108
- })
1109
-
1110
- result
1111
- end
1112
- .,.,
1113
-
1114
- module_eval(<<'.,.,', 'parser.y', 79)
1115
- def _reduce_23(val, _values, result)
1116
- result = val[0]
1117
- result
1118
- end
1119
- .,.,
1120
-
1121
- module_eval(<<'.,.,', 'parser.y', 80)
1122
- def _reduce_24(val, _values, result)
1123
- result = make_node(:NonNullType, of_type: val[0])
1124
- result
1125
- end
1126
- .,.,
1127
-
1128
- module_eval(<<'.,.,', 'parser.y', 83)
1129
- def _reduce_25(val, _values, result)
1130
- result = make_node(:TypeName, name: val[0])
1131
- result
1132
- end
1133
- .,.,
1134
-
1135
- module_eval(<<'.,.,', 'parser.y', 84)
1136
- def _reduce_26(val, _values, result)
1137
- result = make_node(:ListType, of_type: val[1])
1138
- result
1139
- end
1140
- .,.,
1141
-
1142
- module_eval(<<'.,.,', 'parser.y', 87)
1143
- def _reduce_27(val, _values, result)
1144
- result = nil
1145
- result
1146
- end
1147
- .,.,
1148
-
1149
- module_eval(<<'.,.,', 'parser.y', 88)
1150
- def _reduce_28(val, _values, result)
1151
- result = val[1]
1152
- result
1153
- end
1154
- .,.,
1155
-
1156
- module_eval(<<'.,.,', 'parser.y', 91)
1157
- def _reduce_29(val, _values, result)
1158
- result = val[1]
1159
- result
1160
- end
1161
- .,.,
1162
-
1163
- module_eval(<<'.,.,', 'parser.y', 94)
1164
- def _reduce_30(val, _values, result)
1165
- result = EMPTY_ARRAY
1166
- result
1167
- end
1168
- .,.,
1169
-
1170
- module_eval(<<'.,.,', 'parser.y', 95)
1171
- def _reduce_31(val, _values, result)
1172
- result = val[0]
1173
- result
1174
- end
1175
- .,.,
1176
-
1177
- module_eval(<<'.,.,', 'parser.y', 98)
1178
- def _reduce_32(val, _values, result)
1179
- result = [result]
1180
- result
1181
- end
1182
- .,.,
1183
50
 
1184
- module_eval(<<'.,.,', 'parser.y', 99)
1185
- def _reduce_33(val, _values, result)
1186
- val[0] << val[1]
1187
- result
1188
- end
1189
- .,.,
1190
-
1191
- # reduce 34 omitted
51
+ private
1192
52
 
1193
- # reduce 35 omitted
53
+ attr_reader :token_name
1194
54
 
1195
- # reduce 36 omitted
55
+ def advance_token
56
+ @token_name = @lexer.advance
57
+ end
1196
58
 
1197
- module_eval(<<'.,.,', 'parser.y', 108)
1198
- def _reduce_37(val, _values, result)
1199
- result = make_node(
1200
- :Field, {
1201
- name: val[0],
1202
- arguments: val[1],
1203
- directives: val[2],
1204
- selections: val[3],
1205
- position_source: val[0],
1206
- }
1207
- )
59
+ def pos
60
+ @lexer.pos
61
+ end
1208
62
 
1209
- result
1210
- end
1211
- .,.,
63
+ def document
64
+ any_tokens = advance_token
65
+ defns = []
66
+ if any_tokens
67
+ defns << definition
68
+ else
69
+ # Only ignored characters is not a valid document
70
+ raise GraphQL::ParseError.new("Unexpected end of document", nil, nil, @graphql_str)
71
+ end
72
+ while !@lexer.eos?
73
+ defns << definition
74
+ end
75
+ Document.new(pos: 0, definitions: defns, filename: @filename, source_string: @graphql_str)
76
+ end
1212
77
 
1213
- module_eval(<<'.,.,', 'parser.y', 119)
1214
- def _reduce_38(val, _values, result)
1215
- result = make_node(
1216
- :Field, {
1217
- alias: val[0],
1218
- name: val[2],
1219
- arguments: val[3],
1220
- directives: val[4],
1221
- selections: val[5],
1222
- position_source: val[0],
1223
- }
78
+ def definition
79
+ case token_name
80
+ when :FRAGMENT
81
+ loc = pos
82
+ expect_token :FRAGMENT
83
+ f_name = if !at?(:ON)
84
+ parse_name
85
+ end
86
+ expect_token :ON
87
+ f_type = parse_type_name
88
+ directives = parse_directives
89
+ selections = selection_set
90
+ Nodes::FragmentDefinition.new(
91
+ pos: loc,
92
+ name: f_name,
93
+ type: f_type,
94
+ directives: directives,
95
+ selections: selections,
96
+ filename: @filename,
97
+ source_string: @graphql_str
98
+ )
99
+ when :QUERY, :MUTATION, :SUBSCRIPTION, :LCURLY
100
+ op_loc = pos
101
+ op_type = case token_name
102
+ when :LCURLY
103
+ "query"
104
+ else
105
+ parse_operation_type
106
+ end
107
+
108
+ op_name = at?(:IDENTIFIER) ? parse_name : nil
109
+
110
+ variable_definitions = if at?(:LPAREN)
111
+ expect_token(:LPAREN)
112
+ defs = []
113
+ while !at?(:RPAREN)
114
+ loc = pos
115
+ expect_token(:VAR_SIGN)
116
+ var_name = parse_name
117
+ expect_token(:COLON)
118
+ var_type = self.type
119
+ default_value = if at?(:EQUALS)
120
+ advance_token
121
+ value
122
+ end
123
+
124
+ directives = parse_directives
125
+
126
+ defs << Nodes::VariableDefinition.new(
127
+ pos: loc,
128
+ name: var_name,
129
+ type: var_type,
130
+ default_value: default_value,
131
+ directives: directives,
132
+ filename: @filename,
133
+ source_string: @graphql_str
134
+ )
135
+ end
136
+ expect_token(:RPAREN)
137
+ defs
138
+ else
139
+ EmptyObjects::EMPTY_ARRAY
140
+ end
141
+
142
+ directives = parse_directives
143
+
144
+ OperationDefinition.new(
145
+ pos: op_loc,
146
+ operation_type: op_type,
147
+ name: op_name,
148
+ variables: variable_definitions,
149
+ directives: directives,
150
+ selections: selection_set,
151
+ filename: @filename,
152
+ source_string: @graphql_str
153
+ )
154
+ when :EXTEND
155
+ loc = pos
156
+ advance_token
157
+ case token_name
158
+ when :SCALAR
159
+ advance_token
160
+ name = parse_name
161
+ directives = parse_directives
162
+ ScalarTypeExtension.new(pos: loc, name: name, directives: directives, filename: @filename, source_string: @graphql_str)
163
+ when :TYPE
164
+ advance_token
165
+ name = parse_name
166
+ implements_interfaces = parse_implements
167
+ directives = parse_directives
168
+ field_defns = at?(:LCURLY) ? parse_field_definitions : EMPTY_ARRAY
169
+
170
+ ObjectTypeExtension.new(pos: loc, name: name, interfaces: implements_interfaces, directives: directives, fields: field_defns, filename: @filename, source_string: @graphql_str)
171
+ when :INTERFACE
172
+ advance_token
173
+ name = parse_name
174
+ directives = parse_directives
175
+ interfaces = parse_implements
176
+ fields_definition = at?(:LCURLY) ? parse_field_definitions : EMPTY_ARRAY
177
+ InterfaceTypeExtension.new(pos: loc, name: name, directives: directives, fields: fields_definition, interfaces: interfaces, filename: @filename, source_string: @graphql_str)
178
+ when :UNION
179
+ advance_token
180
+ name = parse_name
181
+ directives = parse_directives
182
+ union_member_types = parse_union_members
183
+ UnionTypeExtension.new(pos: loc, name: name, directives: directives, types: union_member_types, filename: @filename, source_string: @graphql_str)
184
+ when :ENUM
185
+ advance_token
186
+ name = parse_name
187
+ directives = parse_directives
188
+ enum_values_definition = parse_enum_value_definitions
189
+ Nodes::EnumTypeExtension.new(pos: loc, name: name, directives: directives, values: enum_values_definition, filename: @filename, source_string: @graphql_str)
190
+ when :INPUT
191
+ advance_token
192
+ name = parse_name
193
+ directives = parse_directives
194
+ input_fields_definition = parse_input_object_field_definitions
195
+ InputObjectTypeExtension.new(pos: loc, name: name, directives: directives, fields: input_fields_definition, filename: @filename, source_string: @graphql_str)
196
+ when :SCHEMA
197
+ advance_token
198
+ directives = parse_directives
199
+ query = mutation = subscription = nil
200
+ if at?(:LCURLY)
201
+ advance_token
202
+ while !at?(:RCURLY)
203
+ if at?(:QUERY)
204
+ advance_token
205
+ expect_token(:COLON)
206
+ query = parse_name
207
+ elsif at?(:MUTATION)
208
+ advance_token
209
+ expect_token(:COLON)
210
+ mutation = parse_name
211
+ elsif at?(:SUBSCRIPTION)
212
+ advance_token
213
+ expect_token(:COLON)
214
+ subscription = parse_name
215
+ else
216
+ expect_one_of([:QUERY, :MUTATION, :SUBSCRIPTION])
217
+ end
218
+ end
219
+ expect_token :RCURLY
220
+ end
221
+ SchemaExtension.new(
222
+ subscription: subscription,
223
+ mutation: mutation,
224
+ query: query,
225
+ directives: directives,
226
+ pos: loc,
227
+ filename: @filename,
228
+ source_string: @graphql_str,
1224
229
  )
230
+ else
231
+ expect_one_of([:SCHEMA, :SCALAR, :TYPE, :ENUM, :INPUT, :UNION, :INTERFACE])
232
+ end
233
+ else
234
+ loc = pos
235
+ desc = at?(:STRING) ? string_value : nil
236
+ defn_loc = pos
237
+ case token_name
238
+ when :SCHEMA
239
+ advance_token
240
+ directives = parse_directives
241
+ query = mutation = subscription = nil
242
+ expect_token :LCURLY
243
+ while !at?(:RCURLY)
244
+ if at?(:QUERY)
245
+ advance_token
246
+ expect_token(:COLON)
247
+ query = parse_name
248
+ elsif at?(:MUTATION)
249
+ advance_token
250
+ expect_token(:COLON)
251
+ mutation = parse_name
252
+ elsif at?(:SUBSCRIPTION)
253
+ advance_token
254
+ expect_token(:COLON)
255
+ subscription = parse_name
256
+ else
257
+ expect_one_of([:QUERY, :MUTATION, :SUBSCRIPTION])
258
+ end
259
+ end
260
+ expect_token :RCURLY
261
+ SchemaDefinition.new(pos: loc, definition_pos: defn_loc, query: query, mutation: mutation, subscription: subscription, directives: directives, filename: @filename, source_string: @graphql_str)
262
+ when :DIRECTIVE
263
+ advance_token
264
+ expect_token :DIR_SIGN
265
+ name = parse_name
266
+ arguments_definition = parse_argument_definitions
267
+ repeatable = if at?(:REPEATABLE)
268
+ advance_token
269
+ true
270
+ else
271
+ false
272
+ end
273
+ expect_token :ON
274
+ directive_locations = [DirectiveLocation.new(pos: pos, name: parse_name, filename: @filename, source_string: @graphql_str)]
275
+ while at?(:PIPE)
276
+ advance_token
277
+ directive_locations << DirectiveLocation.new(pos: pos, name: parse_name, filename: @filename, source_string: @graphql_str)
278
+ end
279
+ DirectiveDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, arguments: arguments_definition, locations: directive_locations, repeatable: repeatable, filename: @filename, source_string: @graphql_str)
280
+ when :TYPE
281
+ advance_token
282
+ name = parse_name
283
+ implements_interfaces = parse_implements
284
+ directives = parse_directives
285
+ field_defns = at?(:LCURLY) ? parse_field_definitions : EMPTY_ARRAY
286
+
287
+ ObjectTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, interfaces: implements_interfaces, directives: directives, fields: field_defns, filename: @filename, source_string: @graphql_str)
288
+ when :INTERFACE
289
+ advance_token
290
+ name = parse_name
291
+ interfaces = parse_implements
292
+ directives = parse_directives
293
+ fields_definition = parse_field_definitions
294
+ InterfaceTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, fields: fields_definition, interfaces: interfaces, filename: @filename, source_string: @graphql_str)
295
+ when :UNION
296
+ advance_token
297
+ name = parse_name
298
+ directives = parse_directives
299
+ union_member_types = parse_union_members
300
+ UnionTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, types: union_member_types, filename: @filename, source_string: @graphql_str)
301
+ when :SCALAR
302
+ advance_token
303
+ name = parse_name
304
+ directives = parse_directives
305
+ ScalarTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, filename: @filename, source_string: @graphql_str)
306
+ when :ENUM
307
+ advance_token
308
+ name = parse_name
309
+ directives = parse_directives
310
+ enum_values_definition = parse_enum_value_definitions
311
+ Nodes::EnumTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, values: enum_values_definition, filename: @filename, source_string: @graphql_str)
312
+ when :INPUT
313
+ advance_token
314
+ name = parse_name
315
+ directives = parse_directives
316
+ input_fields_definition = parse_input_object_field_definitions
317
+ InputObjectTypeDefinition.new(pos: loc, definition_pos: defn_loc, description: desc, name: name, directives: directives, fields: input_fields_definition, filename: @filename, source_string: @graphql_str)
318
+ else
319
+ expect_one_of([:SCHEMA, :SCALAR, :TYPE, :ENUM, :INPUT, :UNION, :INTERFACE])
320
+ end
321
+ end
322
+ end
1225
323
 
1226
- result
1227
- end
1228
- .,.,
1229
-
1230
- # reduce 39 omitted
1231
-
1232
- # reduce 40 omitted
1233
-
1234
- # reduce 41 omitted
1235
-
1236
- # reduce 42 omitted
1237
-
1238
- # reduce 43 omitted
1239
-
1240
- # reduce 44 omitted
1241
-
1242
- # reduce 45 omitted
1243
-
1244
- # reduce 46 omitted
1245
-
1246
- # reduce 47 omitted
1247
-
1248
- # reduce 48 omitted
1249
-
1250
- # reduce 49 omitted
1251
-
1252
- # reduce 50 omitted
1253
-
1254
- # reduce 51 omitted
1255
-
1256
- # reduce 52 omitted
1257
-
1258
- # reduce 53 omitted
1259
-
1260
- # reduce 54 omitted
1261
-
1262
- # reduce 55 omitted
1263
-
1264
- # reduce 56 omitted
1265
-
1266
- # reduce 57 omitted
1267
-
1268
- # reduce 58 omitted
1269
-
1270
- # reduce 59 omitted
1271
-
1272
- # reduce 60 omitted
1273
-
1274
- module_eval(<<'.,.,', 'parser.y', 162)
1275
- def _reduce_61(val, _values, result)
1276
- result = make_node(:EnumValueDefinition, name: val[1], directives: val[2], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1277
- result
1278
- end
1279
- .,.,
1280
-
1281
- module_eval(<<'.,.,', 'parser.y', 165)
1282
- def _reduce_62(val, _values, result)
1283
- result = [val[0]]
1284
- result
1285
- end
1286
- .,.,
1287
-
1288
- module_eval(<<'.,.,', 'parser.y', 166)
1289
- def _reduce_63(val, _values, result)
1290
- result = val[0] << val[1]
1291
- result
1292
- end
1293
- .,.,
1294
-
1295
- module_eval(<<'.,.,', 'parser.y', 169)
1296
- def _reduce_64(val, _values, result)
1297
- result = EMPTY_ARRAY
1298
- result
1299
- end
1300
- .,.,
1301
-
1302
- module_eval(<<'.,.,', 'parser.y', 170)
1303
- def _reduce_65(val, _values, result)
1304
- result = val[1]
1305
- result
1306
- end
1307
- .,.,
1308
-
1309
- module_eval(<<'.,.,', 'parser.y', 173)
1310
- def _reduce_66(val, _values, result)
1311
- result = [val[0]]
1312
- result
1313
- end
1314
- .,.,
1315
-
1316
- module_eval(<<'.,.,', 'parser.y', 174)
1317
- def _reduce_67(val, _values, result)
1318
- val[0] << val[1]
1319
- result
1320
- end
1321
- .,.,
1322
-
1323
- module_eval(<<'.,.,', 'parser.y', 177)
1324
- def _reduce_68(val, _values, result)
1325
- result = make_node(:Argument, name: val[0], value: val[2], position_source: val[0])
1326
- result
1327
- end
1328
- .,.,
1329
-
1330
- module_eval(<<'.,.,', 'parser.y', 180)
1331
- def _reduce_69(val, _values, result)
1332
- result = val[0].to_f
1333
- result
1334
- end
1335
- .,.,
1336
-
1337
- module_eval(<<'.,.,', 'parser.y', 181)
1338
- def _reduce_70(val, _values, result)
1339
- result = val[0].to_i
1340
- result
1341
- end
1342
- .,.,
1343
-
1344
- module_eval(<<'.,.,', 'parser.y', 182)
1345
- def _reduce_71(val, _values, result)
1346
- result = val[0].to_s
1347
- result
1348
- end
1349
- .,.,
1350
-
1351
- module_eval(<<'.,.,', 'parser.y', 183)
1352
- def _reduce_72(val, _values, result)
1353
- result = true
1354
- result
1355
- end
1356
- .,.,
1357
-
1358
- module_eval(<<'.,.,', 'parser.y', 184)
1359
- def _reduce_73(val, _values, result)
1360
- result = false
1361
- result
1362
- end
1363
- .,.,
1364
-
1365
- # reduce 74 omitted
1366
-
1367
- # reduce 75 omitted
1368
-
1369
- # reduce 76 omitted
1370
-
1371
- # reduce 77 omitted
1372
-
1373
- # reduce 78 omitted
1374
-
1375
- # reduce 79 omitted
1376
-
1377
- # reduce 80 omitted
1378
-
1379
- module_eval(<<'.,.,', 'parser.y', 195)
1380
- def _reduce_81(val, _values, result)
1381
- result = make_node(:NullValue, name: val[0], position_source: val[0])
1382
- result
1383
- end
1384
- .,.,
1385
-
1386
- module_eval(<<'.,.,', 'parser.y', 196)
1387
- def _reduce_82(val, _values, result)
1388
- result = make_node(:VariableIdentifier, name: val[1], position_source: val[0])
1389
- result
1390
- end
1391
- .,.,
1392
-
1393
- module_eval(<<'.,.,', 'parser.y', 199)
1394
- def _reduce_83(val, _values, result)
1395
- result = EMPTY_ARRAY
1396
- result
1397
- end
1398
- .,.,
1399
-
1400
- module_eval(<<'.,.,', 'parser.y', 200)
1401
- def _reduce_84(val, _values, result)
1402
- result = val[1]
1403
- result
1404
- end
1405
- .,.,
1406
-
1407
- module_eval(<<'.,.,', 'parser.y', 203)
1408
- def _reduce_85(val, _values, result)
1409
- result = [val[0]]
1410
- result
1411
- end
1412
- .,.,
1413
-
1414
- module_eval(<<'.,.,', 'parser.y', 204)
1415
- def _reduce_86(val, _values, result)
1416
- val[0] << val[1]
1417
- result
1418
- end
1419
- .,.,
1420
-
1421
- module_eval(<<'.,.,', 'parser.y', 207)
1422
- def _reduce_87(val, _values, result)
1423
- result = make_node(:InputObject, arguments: [], position_source: val[0])
1424
- result
1425
- end
1426
- .,.,
1427
-
1428
- module_eval(<<'.,.,', 'parser.y', 208)
1429
- def _reduce_88(val, _values, result)
1430
- result = make_node(:InputObject, arguments: val[1], position_source: val[0])
1431
- result
1432
- end
1433
- .,.,
1434
-
1435
- module_eval(<<'.,.,', 'parser.y', 211)
1436
- def _reduce_89(val, _values, result)
1437
- result = [val[0]]
1438
- result
1439
- end
1440
- .,.,
1441
-
1442
- module_eval(<<'.,.,', 'parser.y', 212)
1443
- def _reduce_90(val, _values, result)
1444
- val[0] << val[1]
1445
- result
1446
- end
1447
- .,.,
1448
-
1449
- module_eval(<<'.,.,', 'parser.y', 215)
1450
- def _reduce_91(val, _values, result)
1451
- result = make_node(:Argument, name: val[0], value: val[2], position_source: val[0])
1452
- result
1453
- end
1454
- .,.,
1455
-
1456
- module_eval(<<'.,.,', 'parser.y', 219)
1457
- def _reduce_92(val, _values, result)
1458
- result = make_node(:InputObject, arguments: [], position_source: val[0])
1459
- result
1460
- end
1461
- .,.,
1462
-
1463
- module_eval(<<'.,.,', 'parser.y', 220)
1464
- def _reduce_93(val, _values, result)
1465
- result = make_node(:InputObject, arguments: val[1], position_source: val[0])
1466
- result
1467
- end
1468
- .,.,
1469
-
1470
- module_eval(<<'.,.,', 'parser.y', 223)
1471
- def _reduce_94(val, _values, result)
1472
- result = [val[0]]
1473
- result
1474
- end
1475
- .,.,
1476
-
1477
- module_eval(<<'.,.,', 'parser.y', 224)
1478
- def _reduce_95(val, _values, result)
1479
- val[0] << val[1]
1480
- result
1481
- end
1482
- .,.,
1483
-
1484
- module_eval(<<'.,.,', 'parser.y', 227)
1485
- def _reduce_96(val, _values, result)
1486
- result = make_node(:Argument, name: val[0], value: val[2], position_source: val[0])
1487
- result
1488
- end
1489
- .,.,
1490
-
1491
- module_eval(<<'.,.,', 'parser.y', 229)
1492
- def _reduce_97(val, _values, result)
1493
- result = make_node(:Enum, name: val[0], position_source: val[0])
1494
- result
1495
- end
1496
- .,.,
1497
-
1498
- module_eval(<<'.,.,', 'parser.y', 232)
1499
- def _reduce_98(val, _values, result)
1500
- result = EMPTY_ARRAY
1501
- result
1502
- end
1503
- .,.,
1504
-
1505
- # reduce 99 omitted
1506
-
1507
- module_eval(<<'.,.,', 'parser.y', 236)
1508
- def _reduce_100(val, _values, result)
1509
- result = [val[0]]
1510
- result
1511
- end
1512
- .,.,
1513
-
1514
- module_eval(<<'.,.,', 'parser.y', 237)
1515
- def _reduce_101(val, _values, result)
1516
- val[0] << val[1]
1517
- result
1518
- end
1519
- .,.,
1520
-
1521
- module_eval(<<'.,.,', 'parser.y', 239)
1522
- def _reduce_102(val, _values, result)
1523
- result = make_node(:Directive, name: val[1], arguments: val[2], position_source: val[0])
1524
- result
1525
- end
1526
- .,.,
1527
-
1528
- module_eval(<<'.,.,', 'parser.y', 242)
1529
- def _reduce_103(val, _values, result)
1530
- result = make_node(:FragmentSpread, name: val[1], directives: val[2], position_source: val[0])
1531
- result
1532
- end
1533
- .,.,
1534
-
1535
- module_eval(<<'.,.,', 'parser.y', 246)
1536
- def _reduce_104(val, _values, result)
1537
- result = make_node(:InlineFragment, {
1538
- type: val[2],
1539
- directives: val[3],
1540
- selections: val[4],
1541
- position_source: val[0]
1542
- })
1543
-
1544
- result
1545
- end
1546
- .,.,
1547
-
1548
- module_eval(<<'.,.,', 'parser.y', 254)
1549
- def _reduce_105(val, _values, result)
1550
- result = make_node(:InlineFragment, {
1551
- type: nil,
1552
- directives: val[1],
1553
- selections: val[2],
1554
- position_source: val[0]
1555
- })
1556
-
1557
- result
1558
- end
1559
- .,.,
1560
-
1561
- module_eval(<<'.,.,', 'parser.y', 264)
1562
- def _reduce_106(val, _values, result)
1563
- result = make_node(:FragmentDefinition, {
1564
- name: val[1],
1565
- type: val[3],
1566
- directives: val[4],
1567
- selections: val[5],
1568
- position_source: val[0],
1569
- }
1570
- )
1571
-
1572
- result
1573
- end
1574
- .,.,
1575
-
1576
- module_eval(<<'.,.,', 'parser.y', 275)
1577
- def _reduce_107(val, _values, result)
1578
- result = nil
1579
- result
1580
- end
1581
- .,.,
1582
-
1583
- # reduce 108 omitted
1584
-
1585
- # reduce 109 omitted
1586
-
1587
- # reduce 110 omitted
1588
-
1589
- # reduce 111 omitted
1590
-
1591
- module_eval(<<'.,.,', 'parser.y', 284)
1592
- def _reduce_112(val, _values, result)
1593
- result = make_node(:SchemaDefinition, position_source: val[0], definition_line: val[0].line, directives: val[1], **val[3])
1594
- result
1595
- end
1596
- .,.,
1597
-
1598
- # reduce 113 omitted
1599
-
1600
- module_eval(<<'.,.,', 'parser.y', 288)
1601
- def _reduce_114(val, _values, result)
1602
- result = val[0].merge(val[1])
1603
- result
1604
- end
1605
- .,.,
1606
-
1607
- module_eval(<<'.,.,', 'parser.y', 291)
1608
- def _reduce_115(val, _values, result)
1609
- result = { val[0].to_s.to_sym => val[2] }
1610
- result
1611
- end
1612
- .,.,
1613
-
1614
- # reduce 116 omitted
1615
-
1616
- # reduce 117 omitted
1617
-
1618
- # reduce 118 omitted
1619
-
1620
- # reduce 119 omitted
1621
-
1622
- # reduce 120 omitted
1623
-
1624
- # reduce 121 omitted
1625
-
1626
- # reduce 122 omitted
1627
-
1628
- # reduce 123 omitted
1629
-
1630
- module_eval(<<'.,.,', 'parser.y', 306)
1631
- def _reduce_124(val, _values, result)
1632
- result = make_node(:SchemaExtension, position_source: val[0], directives: val[2], **val[4])
1633
- result
1634
- end
1635
- .,.,
1636
-
1637
- module_eval(<<'.,.,', 'parser.y', 307)
1638
- def _reduce_125(val, _values, result)
1639
- result = make_node(:SchemaExtension, position_source: val[0], directives: val[2])
1640
- result
1641
- end
1642
- .,.,
1643
-
1644
- # reduce 126 omitted
1645
-
1646
- # reduce 127 omitted
1647
-
1648
- # reduce 128 omitted
1649
-
1650
- # reduce 129 omitted
1651
-
1652
- # reduce 130 omitted
1653
-
1654
- # reduce 131 omitted
1655
-
1656
- module_eval(<<'.,.,', 'parser.y', 317)
1657
- def _reduce_132(val, _values, result)
1658
- result = make_node(:ScalarTypeExtension, name: val[2], directives: val[3], position_source: val[0])
1659
- result
1660
- end
1661
- .,.,
1662
-
1663
- module_eval(<<'.,.,', 'parser.y', 321)
1664
- def _reduce_133(val, _values, result)
1665
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: [], fields: val[5], position_source: val[0])
1666
- result
1667
- end
1668
- .,.,
1669
-
1670
- module_eval(<<'.,.,', 'parser.y', 322)
1671
- def _reduce_134(val, _values, result)
1672
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: val[4], fields: val[6], position_source: val[0])
1673
- result
1674
- end
1675
- .,.,
1676
-
1677
- module_eval(<<'.,.,', 'parser.y', 323)
1678
- def _reduce_135(val, _values, result)
1679
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: val[4], fields: [], position_source: val[0])
1680
- result
1681
- end
1682
- .,.,
1683
-
1684
- module_eval(<<'.,.,', 'parser.y', 324)
1685
- def _reduce_136(val, _values, result)
1686
- result = make_node(:ObjectTypeExtension, name: val[2], interfaces: val[3], directives: [], fields: [], position_source: val[0])
1687
- result
1688
- end
1689
- .,.,
1690
-
1691
- module_eval(<<'.,.,', 'parser.y', 327)
1692
- def _reduce_137(val, _values, result)
1693
- result = make_node(:InterfaceTypeExtension, name: val[2], directives: val[3], fields: val[5], position_source: val[0])
1694
- result
1695
- end
1696
- .,.,
1697
-
1698
- module_eval(<<'.,.,', 'parser.y', 328)
1699
- def _reduce_138(val, _values, result)
1700
- result = make_node(:InterfaceTypeExtension, name: val[2], directives: val[3], fields: [], position_source: val[0])
1701
- result
1702
- end
1703
- .,.,
1704
-
1705
- module_eval(<<'.,.,', 'parser.y', 331)
1706
- def _reduce_139(val, _values, result)
1707
- result = make_node(:UnionTypeExtension, name: val[2], directives: val[3], types: val[5], position_source: val[0])
1708
- result
1709
- end
1710
- .,.,
1711
-
1712
- module_eval(<<'.,.,', 'parser.y', 332)
1713
- def _reduce_140(val, _values, result)
1714
- result = make_node(:UnionTypeExtension, name: val[2], directives: val[3], types: [], position_source: val[0])
1715
- result
1716
- end
1717
- .,.,
1718
-
1719
- module_eval(<<'.,.,', 'parser.y', 335)
1720
- def _reduce_141(val, _values, result)
1721
- result = make_node(:EnumTypeExtension, name: val[2], directives: val[3], values: val[5], position_source: val[0])
1722
- result
1723
- end
1724
- .,.,
1725
-
1726
- module_eval(<<'.,.,', 'parser.y', 336)
1727
- def _reduce_142(val, _values, result)
1728
- result = make_node(:EnumTypeExtension, name: val[2], directives: val[3], values: [], position_source: val[0])
1729
- result
1730
- end
1731
- .,.,
1732
-
1733
- module_eval(<<'.,.,', 'parser.y', 339)
1734
- def _reduce_143(val, _values, result)
1735
- result = make_node(:InputObjectTypeExtension, name: val[2], directives: val[3], fields: val[5], position_source: val[0])
1736
- result
1737
- end
1738
- .,.,
1739
-
1740
- module_eval(<<'.,.,', 'parser.y', 340)
1741
- def _reduce_144(val, _values, result)
1742
- result = make_node(:InputObjectTypeExtension, name: val[2], directives: val[3], fields: [], position_source: val[0])
1743
- result
1744
- end
1745
- .,.,
1746
-
1747
- # reduce 145 omitted
1748
-
1749
- # reduce 146 omitted
1750
-
1751
- # reduce 147 omitted
1752
-
1753
- module_eval(<<'.,.,', 'parser.y', 350)
1754
- def _reduce_148(val, _values, result)
1755
- result = make_node(:ScalarTypeDefinition, name: val[2], directives: val[3], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1756
-
1757
- result
1758
- end
1759
- .,.,
1760
-
1761
- module_eval(<<'.,.,', 'parser.y', 355)
1762
- def _reduce_149(val, _values, result)
1763
- result = make_node(:ObjectTypeDefinition, name: val[2], interfaces: val[3], directives: val[4], fields: val[6], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
1764
-
1765
- result
1766
- end
1767
- .,.,
1768
-
1769
- module_eval(<<'.,.,', 'parser.y', 359)
1770
- def _reduce_150(val, _values, result)
1771
- result = EMPTY_ARRAY
1772
- result
1773
- end
1774
- .,.,
1775
-
1776
- # reduce 151 omitted
1777
-
1778
- module_eval(<<'.,.,', 'parser.y', 363)
1779
- def _reduce_152(val, _values, result)
1780
- result = val[2]
1781
- result
1782
- end
1783
- .,.,
1784
-
1785
- module_eval(<<'.,.,', 'parser.y', 364)
1786
- def _reduce_153(val, _values, result)
1787
- result = val[1]
1788
- result
1789
- end
1790
- .,.,
1791
-
1792
- module_eval(<<'.,.,', 'parser.y', 365)
1793
- def _reduce_154(val, _values, result)
1794
- result = val[1]
1795
- result
1796
- end
1797
- .,.,
1798
-
1799
- module_eval(<<'.,.,', 'parser.y', 368)
1800
- def _reduce_155(val, _values, result)
1801
- result = [make_node(:TypeName, name: val[0], position_source: val[0])]
1802
- result
1803
- end
1804
- .,.,
1805
-
1806
- module_eval(<<'.,.,', 'parser.y', 369)
1807
- def _reduce_156(val, _values, result)
1808
- val[0] << make_node(:TypeName, name: val[2], position_source: val[2])
1809
- result
1810
- end
1811
- .,.,
1812
-
1813
- module_eval(<<'.,.,', 'parser.y', 372)
1814
- def _reduce_157(val, _values, result)
1815
- result = [make_node(:TypeName, name: val[0], position_source: val[0])]
1816
- result
1817
- end
1818
- .,.,
1819
-
1820
- module_eval(<<'.,.,', 'parser.y', 373)
1821
- def _reduce_158(val, _values, result)
1822
- val[0] << make_node(:TypeName, name: val[1], position_source: val[1])
1823
- result
1824
- end
1825
- .,.,
324
+ def parse_input_object_field_definitions
325
+ if at?(:LCURLY)
326
+ expect_token :LCURLY
327
+ list = []
328
+ while !at?(:RCURLY)
329
+ list << parse_input_value_definition
330
+ end
331
+ expect_token :RCURLY
332
+ list
333
+ else
334
+ EMPTY_ARRAY
335
+ end
336
+ end
1826
337
 
1827
- module_eval(<<'.,.,', 'parser.y', 377)
1828
- def _reduce_159(val, _values, result)
1829
- result = make_node(:InputValueDefinition, name: val[1], type: val[3], default_value: val[4], directives: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
338
+ def parse_enum_value_definitions
339
+ if at?(:LCURLY)
340
+ expect_token :LCURLY
341
+ list = []
342
+ while !at?(:RCURLY)
343
+ v_loc = pos
344
+ description = if at?(:STRING); string_value; end
345
+ defn_loc = pos
346
+ enum_value = parse_enum_name
347
+ v_directives = parse_directives
348
+ list << EnumValueDefinition.new(pos: v_loc, definition_pos: defn_loc, description: description, name: enum_value, directives: v_directives, filename: @filename, source_string: @graphql_str)
349
+ end
350
+ expect_token :RCURLY
351
+ list
352
+ else
353
+ EMPTY_ARRAY
354
+ end
355
+ end
1830
356
 
1831
- result
1832
- end
1833
- .,.,
357
+ def parse_union_members
358
+ if at?(:EQUALS)
359
+ expect_token :EQUALS
360
+ list = [parse_type_name]
361
+ while at?(:PIPE)
362
+ advance_token
363
+ list << parse_type_name
364
+ end
365
+ list
366
+ else
367
+ EMPTY_ARRAY
368
+ end
369
+ end
1834
370
 
1835
- module_eval(<<'.,.,', 'parser.y', 381)
1836
- def _reduce_160(val, _values, result)
1837
- result = [val[0]]
1838
- result
1839
- end
1840
- .,.,
371
+ def parse_implements
372
+ if at?(:IMPLEMENTS)
373
+ advance_token
374
+ list = []
375
+ while true
376
+ advance_token if at?(:AMP)
377
+ break unless at?(:IDENTIFIER)
378
+ list << parse_type_name
379
+ end
380
+ list
381
+ else
382
+ EMPTY_ARRAY
383
+ end
384
+ end
1841
385
 
1842
- module_eval(<<'.,.,', 'parser.y', 382)
1843
- def _reduce_161(val, _values, result)
1844
- val[0] << val[1]
1845
- result
1846
- end
1847
- .,.,
386
+ def parse_field_definitions
387
+ expect_token :LCURLY
388
+ list = []
389
+ while !at?(:RCURLY)
390
+ loc = pos
391
+ description = if at?(:STRING); string_value; end
392
+ defn_loc = pos
393
+ name = parse_name
394
+ arguments_definition = parse_argument_definitions
395
+ expect_token :COLON
396
+ type = self.type
397
+ directives = parse_directives
398
+
399
+ list << FieldDefinition.new(pos: loc, definition_pos: defn_loc, description: description, name: name, arguments: arguments_definition, type: type, directives: directives, filename: @filename, source_string: @graphql_str)
400
+ end
401
+ expect_token :RCURLY
402
+ list
403
+ end
1848
404
 
1849
- module_eval(<<'.,.,', 'parser.y', 385)
1850
- def _reduce_162(val, _values, result)
1851
- result = EMPTY_ARRAY
1852
- result
1853
- end
1854
- .,.,
405
+ def parse_argument_definitions
406
+ if at?(:LPAREN)
407
+ advance_token
408
+ list = []
409
+ while !at?(:RPAREN)
410
+ list << parse_input_value_definition
411
+ end
412
+ expect_token :RPAREN
413
+ list
414
+ else
415
+ EMPTY_ARRAY
416
+ end
417
+ end
1855
418
 
1856
- module_eval(<<'.,.,', 'parser.y', 386)
1857
- def _reduce_163(val, _values, result)
1858
- result = val[1]
1859
- result
1860
- end
1861
- .,.,
419
+ def parse_input_value_definition
420
+ loc = pos
421
+ description = if at?(:STRING); string_value; end
422
+ defn_loc = pos
423
+ name = parse_name
424
+ expect_token :COLON
425
+ type = self.type
426
+ default_value = if at?(:EQUALS)
427
+ advance_token
428
+ value
429
+ else
430
+ nil
431
+ end
432
+ directives = parse_directives
433
+ InputValueDefinition.new(pos: loc, definition_pos: defn_loc, description: description, name: name, type: type, default_value: default_value, directives: directives, filename: @filename, source_string: @graphql_str)
434
+ end
1862
435
 
1863
- module_eval(<<'.,.,', 'parser.y', 390)
1864
- def _reduce_164(val, _values, result)
1865
- result = make_node(:FieldDefinition, name: val[1], arguments: val[2], type: val[4], directives: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
436
+ def type
437
+ type = case token_name
438
+ when :IDENTIFIER
439
+ parse_type_name
440
+ when :LBRACKET
441
+ list_type
442
+ end
443
+
444
+ if at?(:BANG)
445
+ type = Nodes::NonNullType.new(pos: pos, of_type: type)
446
+ expect_token(:BANG)
447
+ end
448
+ type
449
+ end
1866
450
 
1867
- result
1868
- end
1869
- .,.,
451
+ def list_type
452
+ loc = pos
453
+ expect_token(:LBRACKET)
454
+ type = Nodes::ListType.new(pos: loc, of_type: self.type)
455
+ expect_token(:RBRACKET)
456
+ type
457
+ end
1870
458
 
1871
- module_eval(<<'.,.,', 'parser.y', 394)
1872
- def _reduce_165(val, _values, result)
1873
- result = EMPTY_ARRAY
1874
- result
1875
- end
1876
- .,.,
459
+ def parse_operation_type
460
+ val = if at?(:QUERY)
461
+ "query"
462
+ elsif at?(:MUTATION)
463
+ "mutation"
464
+ elsif at?(:SUBSCRIPTION)
465
+ "subscription"
466
+ else
467
+ expect_one_of([:QUERY, :MUTATION, :SUBSCRIPTION])
468
+ end
469
+ advance_token
470
+ val
471
+ end
1877
472
 
1878
- module_eval(<<'.,.,', 'parser.y', 395)
1879
- def _reduce_166(val, _values, result)
1880
- result = [val[0]]
1881
- result
1882
- end
1883
- .,.,
473
+ def selection_set
474
+ expect_token(:LCURLY)
475
+ selections = []
476
+ while @token_name != :RCURLY
477
+ selections << if at?(:ELLIPSIS)
478
+ loc = pos
479
+ advance_token
480
+ case token_name
481
+ when :ON, :DIR_SIGN, :LCURLY
482
+ if_type = if at?(:ON)
483
+ advance_token
484
+ parse_type_name
485
+ else
486
+ nil
487
+ end
488
+
489
+ directives = parse_directives
490
+
491
+ Nodes::InlineFragment.new(pos: loc, type: if_type, directives: directives, selections: selection_set, filename: @filename, source_string: @graphql_str)
492
+ else
493
+ name = parse_name_without_on
494
+ directives = parse_directives
495
+
496
+ # Can this ever happen?
497
+ # expect_token(:IDENTIFIER) if at?(:ON)
498
+
499
+ FragmentSpread.new(pos: loc, name: name, directives: directives, filename: @filename, source_string: @graphql_str)
500
+ end
501
+ else
502
+ loc = pos
503
+ name = parse_name
504
+
505
+ field_alias = nil
506
+
507
+ if at?(:COLON)
508
+ advance_token
509
+ field_alias = name
510
+ name = parse_name
511
+ end
512
+
513
+ arguments = at?(:LPAREN) ? parse_arguments : nil
514
+ directives = at?(:DIR_SIGN) ? parse_directives : nil
515
+ selection_set = at?(:LCURLY) ? self.selection_set : nil
516
+
517
+ Nodes::Field.new(pos: loc, field_alias: field_alias, name: name, arguments: arguments, directives: directives, selections: selection_set, filename: @filename, source_string: @graphql_str)
518
+ end
519
+ end
520
+ expect_token(:RCURLY)
521
+ selections
522
+ end
1884
523
 
1885
- module_eval(<<'.,.,', 'parser.y', 396)
1886
- def _reduce_167(val, _values, result)
1887
- val[0] << val[1]
1888
- result
1889
- end
1890
- .,.,
524
+ def parse_name
525
+ case token_name
526
+ when :IDENTIFIER
527
+ expect_token_value(:IDENTIFIER)
528
+ when :SCHEMA
529
+ advance_token
530
+ "schema"
531
+ when :SCALAR
532
+ advance_token
533
+ "scalar"
534
+ when :IMPLEMENTS
535
+ advance_token
536
+ "implements"
537
+ when :INTERFACE
538
+ advance_token
539
+ "interface"
540
+ when :UNION
541
+ advance_token
542
+ "union"
543
+ when :ENUM
544
+ advance_token
545
+ "enum"
546
+ when :INPUT
547
+ advance_token
548
+ "input"
549
+ when :DIRECTIVE
550
+ advance_token
551
+ "directive"
552
+ when :TYPE
553
+ advance_token
554
+ "type"
555
+ when :QUERY
556
+ advance_token
557
+ "query"
558
+ when :MUTATION
559
+ advance_token
560
+ "mutation"
561
+ when :SUBSCRIPTION
562
+ advance_token
563
+ "subscription"
564
+ when :TRUE
565
+ advance_token
566
+ "true"
567
+ when :FALSE
568
+ advance_token
569
+ "false"
570
+ when :FRAGMENT
571
+ advance_token
572
+ "fragment"
573
+ when :REPEATABLE
574
+ advance_token
575
+ "repeatable"
576
+ when :NULL
577
+ advance_token
578
+ "null"
579
+ when :ON
580
+ advance_token
581
+ "on"
582
+ when :DIRECTIVE
583
+ advance_token
584
+ "directive"
585
+ when :EXTEND
586
+ advance_token
587
+ "extend"
588
+ else
589
+ expect_token(:NAME)
590
+ end
591
+ end
1891
592
 
1892
- module_eval(<<'.,.,', 'parser.y', 400)
1893
- def _reduce_168(val, _values, result)
1894
- result = make_node(:InterfaceTypeDefinition, name: val[2], directives: val[3], fields: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
593
+ def parse_name_without_on
594
+ if at?(:ON)
595
+ expect_token(:IDENTIFIER)
596
+ else
597
+ parse_name
598
+ end
599
+ end
1895
600
 
1896
- result
1897
- end
1898
- .,.,
601
+ # Any identifier, but not true, false, or null
602
+ def parse_enum_name
603
+ if at?(:TRUE) || at?(:FALSE) || at?(:NULL)
604
+ expect_token(:IDENTIFIER)
605
+ else
606
+ parse_name
607
+ end
608
+ end
1899
609
 
1900
- module_eval(<<'.,.,', 'parser.y', 404)
1901
- def _reduce_169(val, _values, result)
1902
- result = [make_node(:TypeName, name: val[0], position_source: val[0])]
1903
- result
1904
- end
1905
- .,.,
610
+ def parse_type_name
611
+ TypeName.new(pos: pos, name: parse_name, filename: @filename, source_string: @graphql_str)
612
+ end
1906
613
 
1907
- module_eval(<<'.,.,', 'parser.y', 405)
1908
- def _reduce_170(val, _values, result)
1909
- val[0] << make_node(:TypeName, name: val[2], position_source: val[2])
1910
- result
1911
- end
1912
- .,.,
614
+ def parse_directives
615
+ if at?(:DIR_SIGN)
616
+ dirs = []
617
+ while at?(:DIR_SIGN)
618
+ loc = pos
619
+ advance_token
620
+ name = parse_name
621
+ arguments = parse_arguments
622
+
623
+ dirs << Nodes::Directive.new(pos: loc, name: name, arguments: arguments, filename: @filename, source_string: @graphql_str)
624
+ end
625
+ dirs
626
+ else
627
+ EMPTY_ARRAY
628
+ end
629
+ end
1913
630
 
1914
- module_eval(<<'.,.,', 'parser.y', 409)
1915
- def _reduce_171(val, _values, result)
1916
- result = make_node(:UnionTypeDefinition, name: val[2], directives: val[3], types: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
631
+ def parse_arguments
632
+ if at?(:LPAREN)
633
+ advance_token
634
+ args = []
635
+ while !at?(:RPAREN)
636
+ loc = pos
637
+ name = parse_name
638
+ expect_token(:COLON)
639
+ args << Nodes::Argument.new(pos: loc, name: name, value: value, filename: @filename, source_string: @graphql_str)
640
+ end
641
+ if args.empty?
642
+ expect_token(:ARGUMENT_NAME) # At least one argument is required
643
+ end
644
+ expect_token(:RPAREN)
645
+ args
646
+ else
647
+ EMPTY_ARRAY
648
+ end
649
+ end
1917
650
 
1918
- result
1919
- end
1920
- .,.,
651
+ def string_value
652
+ token_value = @lexer.string_value
653
+ expect_token :STRING
654
+ token_value
655
+ end
1921
656
 
1922
- module_eval(<<'.,.,', 'parser.y', 414)
1923
- def _reduce_172(val, _values, result)
1924
- result = make_node(:EnumTypeDefinition, name: val[2], directives: val[3], values: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
657
+ def value
658
+ case token_name
659
+ when :INT
660
+ expect_token_value(:INT).to_i
661
+ when :FLOAT
662
+ expect_token_value(:FLOAT).to_f
663
+ when :STRING
664
+ string_value
665
+ when :TRUE
666
+ advance_token
667
+ true
668
+ when :FALSE
669
+ advance_token
670
+ false
671
+ when :NULL
672
+ advance_token
673
+ NullValue.new(pos: pos, name: "null", filename: @filename, source_string: @graphql_str)
674
+ when :IDENTIFIER
675
+ Nodes::Enum.new(pos: pos, name: expect_token_value(:IDENTIFIER), filename: @filename, source_string: @graphql_str)
676
+ when :LBRACKET
677
+ advance_token
678
+ list = []
679
+ while !at?(:RBRACKET)
680
+ list << value
681
+ end
682
+ expect_token(:RBRACKET)
683
+ list
684
+ when :LCURLY
685
+ start = pos
686
+ advance_token
687
+ args = []
688
+ while !at?(:RCURLY)
689
+ loc = pos
690
+ n = parse_name
691
+ expect_token(:COLON)
692
+ args << Argument.new(pos: loc, name: n, value: value, filename: @filename, source_string: @graphql_str)
693
+ end
694
+ expect_token(:RCURLY)
695
+ InputObject.new(pos: start, arguments: args, filename: @filename, source_string: @graphql_str)
696
+ when :VAR_SIGN
697
+ loc = pos
698
+ advance_token
699
+ VariableIdentifier.new(pos: loc, name: parse_name, filename: @filename, source_string: @graphql_str)
700
+ else
701
+ expect_token(:VALUE)
702
+ end
703
+ end
1925
704
 
1926
- result
1927
- end
1928
- .,.,
705
+ def at?(expected_token_name)
706
+ @token_name == expected_token_name
707
+ end
1929
708
 
1930
- module_eval(<<'.,.,', 'parser.y', 419)
1931
- def _reduce_173(val, _values, result)
1932
- result = make_node(:InputObjectTypeDefinition, name: val[2], directives: val[3], fields: val[5], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
709
+ def expect_token(expected_token_name)
710
+ unless @token_name == expected_token_name
711
+ raise_parse_error("Expected #{expected_token_name}, actual: #{token_name || "(none)"} (#{debug_token_value.inspect})")
712
+ end
713
+ advance_token
714
+ end
1933
715
 
1934
- result
1935
- end
1936
- .,.,
716
+ def expect_one_of(token_names)
717
+ raise_parse_error("Expected one of #{token_names.join(", ")}, actual: #{token_name || "NOTHING"} (#{debug_token_value.inspect})")
718
+ end
1937
719
 
1938
- module_eval(<<'.,.,', 'parser.y', 424)
1939
- def _reduce_174(val, _values, result)
1940
- result = make_node(:DirectiveDefinition, name: val[3], arguments: val[4], locations: val[6], description: val[0] || get_description(val[1]), definition_line: val[1].line, position_source: val[0] || val[1])
720
+ def raise_parse_error(message)
721
+ message += " at [#{@lexer.line_number}, #{@lexer.column_number}]"
722
+ raise GraphQL::ParseError.new(
723
+ message,
724
+ @lexer.line_number,
725
+ @lexer.column_number,
726
+ @graphql_str,
727
+ filename: @filename,
728
+ )
1941
729
 
1942
- result
1943
- end
1944
- .,.,
730
+ end
1945
731
 
1946
- module_eval(<<'.,.,', 'parser.y', 428)
1947
- def _reduce_175(val, _values, result)
1948
- result = [make_node(:DirectiveLocation, name: val[0].to_s, position_source: val[0])]
1949
- result
1950
- end
1951
- .,.,
732
+ # Only use when we care about the expected token's value
733
+ def expect_token_value(tok)
734
+ token_value = @lexer.token_value
735
+ expect_token(tok)
736
+ token_value
737
+ end
1952
738
 
1953
- module_eval(<<'.,.,', 'parser.y', 429)
1954
- def _reduce_176(val, _values, result)
1955
- val[0] << make_node(:DirectiveLocation, name: val[2].to_s, position_source: val[2])
1956
- result
739
+ # token_value works for when the scanner matched something
740
+ # which is usually fine and it's good for it to be fast at that.
741
+ def debug_token_value
742
+ @lexer.debug_token_value(token_name)
743
+ end
744
+ end
1957
745
  end
1958
- .,.,
1959
-
1960
- def _reduce_none(val, _values, result)
1961
- val[0]
1962
746
  end
1963
-
1964
- end # class Parser
1965
- end # module Language
1966
- end # module GraphQL