graphql 1.12.12 → 2.2.14

Sign up to get free protection for your applications and to get access to all the features.
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