rails-graphql 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (266) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +19 -0
  4. data/Rakefile +31 -0
  5. data/ext/depend +3 -0
  6. data/ext/extconf.rb +57 -0
  7. data/ext/graphqlparser/Ast.cpp +346 -0
  8. data/ext/graphqlparser/Ast.h +1214 -0
  9. data/ext/graphqlparser/AstNode.h +36 -0
  10. data/ext/graphqlparser/AstVisitor.h +137 -0
  11. data/ext/graphqlparser/GraphQLParser.cpp +76 -0
  12. data/ext/graphqlparser/GraphQLParser.h +55 -0
  13. data/ext/graphqlparser/JsonVisitor.cpp +161 -0
  14. data/ext/graphqlparser/JsonVisitor.cpp.inc +456 -0
  15. data/ext/graphqlparser/JsonVisitor.h +121 -0
  16. data/ext/graphqlparser/JsonVisitor.h.inc +110 -0
  17. data/ext/graphqlparser/VERSION +1 -0
  18. data/ext/graphqlparser/c/GraphQLAst.cpp +324 -0
  19. data/ext/graphqlparser/c/GraphQLAst.h +180 -0
  20. data/ext/graphqlparser/c/GraphQLAstForEachConcreteType.h +44 -0
  21. data/ext/graphqlparser/c/GraphQLAstNode.cpp +25 -0
  22. data/ext/graphqlparser/c/GraphQLAstNode.h +33 -0
  23. data/ext/graphqlparser/c/GraphQLAstToJSON.cpp +21 -0
  24. data/ext/graphqlparser/c/GraphQLAstToJSON.h +24 -0
  25. data/ext/graphqlparser/c/GraphQLAstVisitor.cpp +55 -0
  26. data/ext/graphqlparser/c/GraphQLAstVisitor.h +53 -0
  27. data/ext/graphqlparser/c/GraphQLParser.cpp +35 -0
  28. data/ext/graphqlparser/c/GraphQLParser.h +54 -0
  29. data/ext/graphqlparser/dump_json_ast.cpp +48 -0
  30. data/ext/graphqlparser/lexer.lpp +324 -0
  31. data/ext/graphqlparser/parser.ypp +693 -0
  32. data/ext/graphqlparser/parsergen/lexer.cpp +2633 -0
  33. data/ext/graphqlparser/parsergen/lexer.h +528 -0
  34. data/ext/graphqlparser/parsergen/location.hh +189 -0
  35. data/ext/graphqlparser/parsergen/parser.tab.cpp +3300 -0
  36. data/ext/graphqlparser/parsergen/parser.tab.hpp +646 -0
  37. data/ext/graphqlparser/parsergen/position.hh +179 -0
  38. data/ext/graphqlparser/parsergen/stack.hh +156 -0
  39. data/ext/graphqlparser/syntaxdefs.h +19 -0
  40. data/ext/libgraphqlparser/AstNode.h +36 -0
  41. data/ext/libgraphqlparser/CMakeLists.txt +148 -0
  42. data/ext/libgraphqlparser/CONTRIBUTING.md +23 -0
  43. data/ext/libgraphqlparser/GraphQLParser.cpp +76 -0
  44. data/ext/libgraphqlparser/GraphQLParser.h +55 -0
  45. data/ext/libgraphqlparser/JsonVisitor.cpp +161 -0
  46. data/ext/libgraphqlparser/JsonVisitor.h +121 -0
  47. data/ext/libgraphqlparser/LICENSE +22 -0
  48. data/ext/libgraphqlparser/README.clang-tidy +7 -0
  49. data/ext/libgraphqlparser/README.md +84 -0
  50. data/ext/libgraphqlparser/ast/ast.ast +203 -0
  51. data/ext/libgraphqlparser/ast/ast.py +61 -0
  52. data/ext/libgraphqlparser/ast/c.py +100 -0
  53. data/ext/libgraphqlparser/ast/c.pyc +0 -0
  54. data/ext/libgraphqlparser/ast/c_impl.py +61 -0
  55. data/ext/libgraphqlparser/ast/c_impl.pyc +0 -0
  56. data/ext/libgraphqlparser/ast/c_visitor_impl.py +39 -0
  57. data/ext/libgraphqlparser/ast/c_visitor_impl.pyc +0 -0
  58. data/ext/libgraphqlparser/ast/casing.py +26 -0
  59. data/ext/libgraphqlparser/ast/casing.pyc +0 -0
  60. data/ext/libgraphqlparser/ast/cxx.py +197 -0
  61. data/ext/libgraphqlparser/ast/cxx.pyc +0 -0
  62. data/ext/libgraphqlparser/ast/cxx_impl.py +61 -0
  63. data/ext/libgraphqlparser/ast/cxx_impl.pyc +0 -0
  64. data/ext/libgraphqlparser/ast/cxx_json_visitor_header.py +42 -0
  65. data/ext/libgraphqlparser/ast/cxx_json_visitor_header.pyc +0 -0
  66. data/ext/libgraphqlparser/ast/cxx_json_visitor_impl.py +80 -0
  67. data/ext/libgraphqlparser/ast/cxx_json_visitor_impl.pyc +0 -0
  68. data/ext/libgraphqlparser/ast/cxx_visitor.py +64 -0
  69. data/ext/libgraphqlparser/ast/cxx_visitor.pyc +0 -0
  70. data/ext/libgraphqlparser/ast/js.py +65 -0
  71. data/ext/libgraphqlparser/ast/license.py +10 -0
  72. data/ext/libgraphqlparser/ast/license.pyc +0 -0
  73. data/ext/libgraphqlparser/c/GraphQLAstNode.cpp +25 -0
  74. data/ext/libgraphqlparser/c/GraphQLAstNode.h +33 -0
  75. data/ext/libgraphqlparser/c/GraphQLAstToJSON.cpp +21 -0
  76. data/ext/libgraphqlparser/c/GraphQLAstToJSON.h +24 -0
  77. data/ext/libgraphqlparser/c/GraphQLAstVisitor.cpp +55 -0
  78. data/ext/libgraphqlparser/c/GraphQLAstVisitor.h +53 -0
  79. data/ext/libgraphqlparser/c/GraphQLParser.cpp +35 -0
  80. data/ext/libgraphqlparser/c/GraphQLParser.h +54 -0
  81. data/ext/libgraphqlparser/clang-tidy-all.sh +3 -0
  82. data/ext/libgraphqlparser/cmake/version.cmake +16 -0
  83. data/ext/libgraphqlparser/dump_json_ast.cpp +48 -0
  84. data/ext/libgraphqlparser/go/README.md +20 -0
  85. data/ext/libgraphqlparser/go/callbacks.go +18 -0
  86. data/ext/libgraphqlparser/go/gotest.go +64 -0
  87. data/ext/libgraphqlparser/lexer.lpp +324 -0
  88. data/ext/libgraphqlparser/libgraphqlparser.pc.in +11 -0
  89. data/ext/libgraphqlparser/parser.ypp +693 -0
  90. data/ext/libgraphqlparser/parsergen/lexer.cpp +2633 -0
  91. data/ext/libgraphqlparser/parsergen/lexer.h +528 -0
  92. data/ext/libgraphqlparser/parsergen/location.hh +189 -0
  93. data/ext/libgraphqlparser/parsergen/parser.tab.cpp +3300 -0
  94. data/ext/libgraphqlparser/parsergen/parser.tab.hpp +646 -0
  95. data/ext/libgraphqlparser/parsergen/position.hh +179 -0
  96. data/ext/libgraphqlparser/parsergen/stack.hh +156 -0
  97. data/ext/libgraphqlparser/python/CMakeLists.txt +14 -0
  98. data/ext/libgraphqlparser/python/README.md +5 -0
  99. data/ext/libgraphqlparser/python/example.py +31 -0
  100. data/ext/libgraphqlparser/syntaxdefs.h +19 -0
  101. data/ext/libgraphqlparser/test/BuildCAPI.c +5 -0
  102. data/ext/libgraphqlparser/test/CMakeLists.txt +25 -0
  103. data/ext/libgraphqlparser/test/JsonVisitorTests.cpp +28 -0
  104. data/ext/libgraphqlparser/test/ParserTests.cpp +352 -0
  105. data/ext/libgraphqlparser/test/kitchen-sink.graphql +59 -0
  106. data/ext/libgraphqlparser/test/kitchen-sink.json +1 -0
  107. data/ext/libgraphqlparser/test/schema-kitchen-sink.graphql +78 -0
  108. data/ext/libgraphqlparser/test/schema-kitchen-sink.json +1 -0
  109. data/ext/libgraphqlparser/test/valgrind.supp +33 -0
  110. data/ext/version.cpp +21 -0
  111. data/lib/generators/graphql/controller_generator.rb +22 -0
  112. data/lib/generators/graphql/schema_generator.rb +22 -0
  113. data/lib/generators/graphql/templates/controller.erb +5 -0
  114. data/lib/generators/graphql/templates/schema.erb +6 -0
  115. data/lib/graphqlparser.so +0 -0
  116. data/lib/rails-graphql.rb +2 -0
  117. data/lib/rails/graphql.rake +1 -0
  118. data/lib/rails/graphql.rb +185 -0
  119. data/lib/rails/graphql/adapters/mysql_adapter.rb +0 -0
  120. data/lib/rails/graphql/adapters/pg_adapter.rb +50 -0
  121. data/lib/rails/graphql/adapters/sqlite_adapter.rb +39 -0
  122. data/lib/rails/graphql/argument.rb +220 -0
  123. data/lib/rails/graphql/callback.rb +124 -0
  124. data/lib/rails/graphql/collectors.rb +14 -0
  125. data/lib/rails/graphql/collectors/hash_collector.rb +83 -0
  126. data/lib/rails/graphql/collectors/idented_collector.rb +73 -0
  127. data/lib/rails/graphql/collectors/json_collector.rb +114 -0
  128. data/lib/rails/graphql/config.rb +61 -0
  129. data/lib/rails/graphql/directive.rb +203 -0
  130. data/lib/rails/graphql/directive/deprecated_directive.rb +59 -0
  131. data/lib/rails/graphql/directive/include_directive.rb +24 -0
  132. data/lib/rails/graphql/directive/skip_directive.rb +24 -0
  133. data/lib/rails/graphql/errors.rb +42 -0
  134. data/lib/rails/graphql/event.rb +141 -0
  135. data/lib/rails/graphql/field.rb +318 -0
  136. data/lib/rails/graphql/field/input_field.rb +92 -0
  137. data/lib/rails/graphql/field/mutation_field.rb +52 -0
  138. data/lib/rails/graphql/field/output_field.rb +96 -0
  139. data/lib/rails/graphql/field/proxied_field.rb +131 -0
  140. data/lib/rails/graphql/field/resolved_field.rb +96 -0
  141. data/lib/rails/graphql/field/scoped_config.rb +22 -0
  142. data/lib/rails/graphql/field/typed_field.rb +104 -0
  143. data/lib/rails/graphql/helpers.rb +40 -0
  144. data/lib/rails/graphql/helpers/attribute_delegator.rb +39 -0
  145. data/lib/rails/graphql/helpers/inherited_collection.rb +152 -0
  146. data/lib/rails/graphql/helpers/leaf_from_ar.rb +141 -0
  147. data/lib/rails/graphql/helpers/registerable.rb +103 -0
  148. data/lib/rails/graphql/helpers/with_arguments.rb +125 -0
  149. data/lib/rails/graphql/helpers/with_assignment.rb +113 -0
  150. data/lib/rails/graphql/helpers/with_callbacks.rb +55 -0
  151. data/lib/rails/graphql/helpers/with_directives.rb +126 -0
  152. data/lib/rails/graphql/helpers/with_events.rb +81 -0
  153. data/lib/rails/graphql/helpers/with_fields.rb +141 -0
  154. data/lib/rails/graphql/helpers/with_namespace.rb +40 -0
  155. data/lib/rails/graphql/helpers/with_owner.rb +35 -0
  156. data/lib/rails/graphql/helpers/with_schema_fields.rb +230 -0
  157. data/lib/rails/graphql/helpers/with_validator.rb +52 -0
  158. data/lib/rails/graphql/introspection.rb +53 -0
  159. data/lib/rails/graphql/native.rb +56 -0
  160. data/lib/rails/graphql/native/functions.rb +38 -0
  161. data/lib/rails/graphql/native/location.rb +41 -0
  162. data/lib/rails/graphql/native/pointers.rb +23 -0
  163. data/lib/rails/graphql/native/visitor.rb +349 -0
  164. data/lib/rails/graphql/railtie.rb +85 -0
  165. data/lib/rails/graphql/railties/base_generator.rb +35 -0
  166. data/lib/rails/graphql/railties/controller.rb +101 -0
  167. data/lib/rails/graphql/railties/controller_runtime.rb +40 -0
  168. data/lib/rails/graphql/railties/log_subscriber.rb +62 -0
  169. data/lib/rails/graphql/request.rb +343 -0
  170. data/lib/rails/graphql/request/arguments.rb +93 -0
  171. data/lib/rails/graphql/request/component.rb +100 -0
  172. data/lib/rails/graphql/request/component/field.rb +225 -0
  173. data/lib/rails/graphql/request/component/fragment.rb +118 -0
  174. data/lib/rails/graphql/request/component/operation.rb +178 -0
  175. data/lib/rails/graphql/request/component/operation/subscription.rb +16 -0
  176. data/lib/rails/graphql/request/component/spread.rb +119 -0
  177. data/lib/rails/graphql/request/component/typename.rb +82 -0
  178. data/lib/rails/graphql/request/context.rb +51 -0
  179. data/lib/rails/graphql/request/errors.rb +54 -0
  180. data/lib/rails/graphql/request/event.rb +112 -0
  181. data/lib/rails/graphql/request/helpers/directives.rb +64 -0
  182. data/lib/rails/graphql/request/helpers/selection_set.rb +87 -0
  183. data/lib/rails/graphql/request/helpers/value_writers.rb +115 -0
  184. data/lib/rails/graphql/request/steps/organizable.rb +146 -0
  185. data/lib/rails/graphql/request/steps/prepareable.rb +33 -0
  186. data/lib/rails/graphql/request/steps/resolveable.rb +32 -0
  187. data/lib/rails/graphql/request/strategy.rb +249 -0
  188. data/lib/rails/graphql/request/strategy/dynamic_instance.rb +41 -0
  189. data/lib/rails/graphql/request/strategy/multi_query_strategy.rb +36 -0
  190. data/lib/rails/graphql/request/strategy/sequenced_strategy.rb +28 -0
  191. data/lib/rails/graphql/schema.rb +272 -0
  192. data/lib/rails/graphql/shortcuts.rb +77 -0
  193. data/lib/rails/graphql/source.rb +371 -0
  194. data/lib/rails/graphql/source/active_record/builders.rb +154 -0
  195. data/lib/rails/graphql/source/active_record_source.rb +231 -0
  196. data/lib/rails/graphql/source/scoped_arguments.rb +87 -0
  197. data/lib/rails/graphql/to_gql.rb +368 -0
  198. data/lib/rails/graphql/type.rb +138 -0
  199. data/lib/rails/graphql/type/enum.rb +206 -0
  200. data/lib/rails/graphql/type/enum/directive_location_enum.rb +30 -0
  201. data/lib/rails/graphql/type/enum/type_kind_enum.rb +57 -0
  202. data/lib/rails/graphql/type/input.rb +134 -0
  203. data/lib/rails/graphql/type/interface.rb +82 -0
  204. data/lib/rails/graphql/type/object.rb +111 -0
  205. data/lib/rails/graphql/type/object/directive_object.rb +34 -0
  206. data/lib/rails/graphql/type/object/enum_value_object.rb +25 -0
  207. data/lib/rails/graphql/type/object/field_object.rb +54 -0
  208. data/lib/rails/graphql/type/object/input_value_object.rb +49 -0
  209. data/lib/rails/graphql/type/object/schema_object.rb +40 -0
  210. data/lib/rails/graphql/type/object/type_object.rb +136 -0
  211. data/lib/rails/graphql/type/scalar.rb +71 -0
  212. data/lib/rails/graphql/type/scalar/bigint_scalar.rb +34 -0
  213. data/lib/rails/graphql/type/scalar/binary_scalar.rb +30 -0
  214. data/lib/rails/graphql/type/scalar/boolean_scalar.rb +37 -0
  215. data/lib/rails/graphql/type/scalar/date_scalar.rb +34 -0
  216. data/lib/rails/graphql/type/scalar/date_time_scalar.rb +32 -0
  217. data/lib/rails/graphql/type/scalar/decimal_scalar.rb +35 -0
  218. data/lib/rails/graphql/type/scalar/float_scalar.rb +32 -0
  219. data/lib/rails/graphql/type/scalar/id_scalar.rb +39 -0
  220. data/lib/rails/graphql/type/scalar/int_scalar.rb +36 -0
  221. data/lib/rails/graphql/type/scalar/string_scalar.rb +28 -0
  222. data/lib/rails/graphql/type/scalar/time_scalar.rb +40 -0
  223. data/lib/rails/graphql/type/union.rb +87 -0
  224. data/lib/rails/graphql/type_map.rb +347 -0
  225. data/lib/rails/graphql/version.rb +7 -0
  226. data/test/assets/introspection-db.json +0 -0
  227. data/test/assets/introspection-mem.txt +1 -0
  228. data/test/assets/introspection.gql +91 -0
  229. data/test/assets/luke.jpg +0 -0
  230. data/test/assets/mem.gql +428 -0
  231. data/test/assets/sqlite.gql +423 -0
  232. data/test/config.rb +80 -0
  233. data/test/graphql/request/context_test.rb +70 -0
  234. data/test/graphql/schema_test.rb +190 -0
  235. data/test/graphql/source_test.rb +237 -0
  236. data/test/graphql/type/enum_test.rb +203 -0
  237. data/test/graphql/type/input_test.rb +138 -0
  238. data/test/graphql/type/interface_test.rb +72 -0
  239. data/test/graphql/type/object_test.rb +104 -0
  240. data/test/graphql/type/scalar/bigint_scalar_test.rb +42 -0
  241. data/test/graphql/type/scalar/binary_scalar_test.rb +17 -0
  242. data/test/graphql/type/scalar/boolean_scalar_test.rb +40 -0
  243. data/test/graphql/type/scalar/date_scalar_test.rb +29 -0
  244. data/test/graphql/type/scalar/date_time_scalar_test.rb +29 -0
  245. data/test/graphql/type/scalar/decimal_scalar_test.rb +28 -0
  246. data/test/graphql/type/scalar/float_scalar_test.rb +22 -0
  247. data/test/graphql/type/scalar/id_scalar_test.rb +26 -0
  248. data/test/graphql/type/scalar/int_scalar_test.rb +26 -0
  249. data/test/graphql/type/scalar/string_scalar_test.rb +17 -0
  250. data/test/graphql/type/scalar/time_scalar_test.rb +36 -0
  251. data/test/graphql/type/scalar_test.rb +45 -0
  252. data/test/graphql/type/union_test.rb +82 -0
  253. data/test/graphql/type_map_test.rb +362 -0
  254. data/test/graphql/type_test.rb +68 -0
  255. data/test/graphql_test.rb +55 -0
  256. data/test/integration/config.rb +56 -0
  257. data/test/integration/memory/star_wars_introspection_test.rb +144 -0
  258. data/test/integration/memory/star_wars_query_test.rb +184 -0
  259. data/test/integration/memory/star_wars_validation_test.rb +99 -0
  260. data/test/integration/schemas/memory.rb +232 -0
  261. data/test/integration/schemas/sqlite.rb +82 -0
  262. data/test/integration/sqlite/star_wars_introspection_test.rb +15 -0
  263. data/test/integration/sqlite/star_wars_mutation_test.rb +82 -0
  264. data/test/integration/sqlite/star_wars_query_test.rb +71 -0
  265. data/test/test_ext.rb +48 -0
  266. metadata +509 -0
@@ -0,0 +1,189 @@
1
+ // A Bison parser, made by GNU Bison 3.0.5.
2
+
3
+ // Locations for Bison parsers in C++
4
+
5
+ // Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
6
+
7
+ // This program is free software: you can redistribute it and/or modify
8
+ // it under the terms of the GNU General Public License as published by
9
+ // the Free Software Foundation, either version 3 of the License, or
10
+ // (at your option) any later version.
11
+
12
+ // This program is distributed in the hope that it will be useful,
13
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ // GNU General Public License for more details.
16
+
17
+ // You should have received a copy of the GNU General Public License
18
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ // As a special exception, you may create a larger work that contains
21
+ // part or all of the Bison parser skeleton and distribute that work
22
+ // under terms of your choice, so long as that work isn't itself a
23
+ // parser generator using the skeleton or a modified version thereof
24
+ // as a parser skeleton. Alternatively, if you modify or redistribute
25
+ // the parser skeleton itself, you may (at your option) remove this
26
+ // special exception, which will cause the skeleton and the resulting
27
+ // Bison output files to be licensed under the GNU General Public
28
+ // License without this special exception.
29
+
30
+ // This special exception was added by the Free Software Foundation in
31
+ // version 2.2 of Bison.
32
+
33
+ /**
34
+ ** \file location.hh
35
+ ** Define the yy::location class.
36
+ */
37
+
38
+ #ifndef YY_YY_LOCATION_HH_INCLUDED
39
+ # define YY_YY_LOCATION_HH_INCLUDED
40
+
41
+ # include "position.hh"
42
+
43
+
44
+ namespace yy {
45
+ #line 46 "location.hh" // location.cc:333
46
+ /// Abstract a location.
47
+ class location
48
+ {
49
+ public:
50
+
51
+ /// Construct a location from \a b to \a e.
52
+ location (const position& b, const position& e)
53
+ : begin (b)
54
+ , end (e)
55
+ {}
56
+
57
+ /// Construct a 0-width location in \a p.
58
+ explicit location (const position& p = position ())
59
+ : begin (p)
60
+ , end (p)
61
+ {}
62
+
63
+ /// Construct a 0-width location in \a f, \a l, \a c.
64
+ explicit location (std::string* f,
65
+ unsigned l = 1u,
66
+ unsigned c = 1u)
67
+ : begin (f, l, c)
68
+ , end (f, l, c)
69
+ {}
70
+
71
+
72
+ /// Initialization.
73
+ void initialize (std::string* f = YY_NULLPTR,
74
+ unsigned l = 1u,
75
+ unsigned c = 1u)
76
+ {
77
+ begin.initialize (f, l, c);
78
+ end = begin;
79
+ }
80
+
81
+ /** \name Line and Column related manipulators
82
+ ** \{ */
83
+ public:
84
+ /// Reset initial location to final location.
85
+ void step ()
86
+ {
87
+ begin = end;
88
+ }
89
+
90
+ /// Extend the current location to the COUNT next columns.
91
+ void columns (int count = 1)
92
+ {
93
+ end += count;
94
+ }
95
+
96
+ /// Extend the current location to the COUNT next lines.
97
+ void lines (int count = 1)
98
+ {
99
+ end.lines (count);
100
+ }
101
+ /** \} */
102
+
103
+
104
+ public:
105
+ /// Beginning of the located region.
106
+ position begin;
107
+ /// End of the located region.
108
+ position end;
109
+ };
110
+
111
+ /// Join two locations, in place.
112
+ inline location& operator+= (location& res, const location& end)
113
+ {
114
+ res.end = end.end;
115
+ return res;
116
+ }
117
+
118
+ /// Join two locations.
119
+ inline location operator+ (location res, const location& end)
120
+ {
121
+ return res += end;
122
+ }
123
+
124
+ /// Add \a width columns to the end position, in place.
125
+ inline location& operator+= (location& res, int width)
126
+ {
127
+ res.columns (width);
128
+ return res;
129
+ }
130
+
131
+ /// Add \a width columns to the end position.
132
+ inline location operator+ (location res, int width)
133
+ {
134
+ return res += width;
135
+ }
136
+
137
+ /// Subtract \a width columns to the end position, in place.
138
+ inline location& operator-= (location& res, int width)
139
+ {
140
+ return res += -width;
141
+ }
142
+
143
+ /// Subtract \a width columns to the end position.
144
+ inline location operator- (location res, int width)
145
+ {
146
+ return res -= width;
147
+ }
148
+
149
+ /// Compare two location objects.
150
+ inline bool
151
+ operator== (const location& loc1, const location& loc2)
152
+ {
153
+ return loc1.begin == loc2.begin && loc1.end == loc2.end;
154
+ }
155
+
156
+ /// Compare two location objects.
157
+ inline bool
158
+ operator!= (const location& loc1, const location& loc2)
159
+ {
160
+ return !(loc1 == loc2);
161
+ }
162
+
163
+ /** \brief Intercept output stream redirection.
164
+ ** \param ostr the destination output stream
165
+ ** \param loc a reference to the location to redirect
166
+ **
167
+ ** Avoid duplicate information.
168
+ */
169
+ template <typename YYChar>
170
+ inline std::basic_ostream<YYChar>&
171
+ operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
172
+ {
173
+ unsigned end_col = 0 < loc.end.column ? loc.end.column - 1 : 0;
174
+ ostr << loc.begin;
175
+ if (loc.end.filename
176
+ && (!loc.begin.filename
177
+ || *loc.begin.filename != *loc.end.filename))
178
+ ostr << '-' << loc.end.filename << ':' << loc.end.line << '.' << end_col;
179
+ else if (loc.begin.line < loc.end.line)
180
+ ostr << '-' << loc.end.line << '.' << end_col;
181
+ else if (loc.begin.column < end_col)
182
+ ostr << '-' << end_col;
183
+ return ostr;
184
+ }
185
+
186
+
187
+ } // yy
188
+ #line 189 "location.hh" // location.cc:333
189
+ #endif // !YY_YY_LOCATION_HH_INCLUDED
@@ -0,0 +1,3300 @@
1
+ // A Bison parser, made by GNU Bison 3.0.5.
2
+
3
+ // Skeleton implementation for Bison LALR(1) parsers in C++
4
+
5
+ // Copyright (C) 2002-2015, 2018 Free Software Foundation, Inc.
6
+
7
+ // This program is free software: you can redistribute it and/or modify
8
+ // it under the terms of the GNU General Public License as published by
9
+ // the Free Software Foundation, either version 3 of the License, or
10
+ // (at your option) any later version.
11
+
12
+ // This program is distributed in the hope that it will be useful,
13
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ // GNU General Public License for more details.
16
+
17
+ // You should have received a copy of the GNU General Public License
18
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ // As a special exception, you may create a larger work that contains
21
+ // part or all of the Bison parser skeleton and distribute that work
22
+ // under terms of your choice, so long as that work isn't itself a
23
+ // parser generator using the skeleton or a modified version thereof
24
+ // as a parser skeleton. Alternatively, if you modify or redistribute
25
+ // the parser skeleton itself, you may (at your option) remove this
26
+ // special exception, which will cause the skeleton and the resulting
27
+ // Bison output files to be licensed under the GNU General Public
28
+ // License without this special exception.
29
+
30
+ // This special exception was added by the Free Software Foundation in
31
+ // version 2.2 of Bison.
32
+
33
+
34
+ // First part of user declarations.
35
+
36
+ #line 37 "parser.tab.cpp" // lalr1.cc:406
37
+
38
+ # ifndef YY_NULLPTR
39
+ # if defined __cplusplus && 201103L <= __cplusplus
40
+ # define YY_NULLPTR nullptr
41
+ # else
42
+ # define YY_NULLPTR 0
43
+ # endif
44
+ # endif
45
+
46
+ #include "parser.tab.hpp"
47
+
48
+ // User implementation prologue.
49
+
50
+ #line 51 "parser.tab.cpp" // lalr1.cc:414
51
+ // Unqualified %code blocks.
52
+ #line 157 "parser.ypp" // lalr1.cc:415
53
+
54
+ #include "lexer.h"
55
+ #include "syntaxdefs.h"
56
+
57
+ #line 58 "parser.tab.cpp" // lalr1.cc:415
58
+
59
+
60
+ #ifndef YY_
61
+ # if defined YYENABLE_NLS && YYENABLE_NLS
62
+ # if ENABLE_NLS
63
+ # include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
64
+ # define YY_(msgid) dgettext ("bison-runtime", msgid)
65
+ # endif
66
+ # endif
67
+ # ifndef YY_
68
+ # define YY_(msgid) msgid
69
+ # endif
70
+ #endif
71
+
72
+ #define YYRHSLOC(Rhs, K) ((Rhs)[K].location)
73
+ /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
74
+ If N is 0, then set CURRENT to the empty location which ends
75
+ the previous symbol: RHS[0] (always defined). */
76
+
77
+ # ifndef YYLLOC_DEFAULT
78
+ # define YYLLOC_DEFAULT(Current, Rhs, N) \
79
+ do \
80
+ if (N) \
81
+ { \
82
+ (Current).begin = YYRHSLOC (Rhs, 1).begin; \
83
+ (Current).end = YYRHSLOC (Rhs, N).end; \
84
+ } \
85
+ else \
86
+ { \
87
+ (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \
88
+ } \
89
+ while (/*CONSTCOND*/ false)
90
+ # endif
91
+
92
+
93
+ // Suppress unused-variable warnings by "using" E.
94
+ #define YYUSE(E) ((void) (E))
95
+
96
+ // Enable debugging if requested.
97
+ #if YYDEBUG
98
+
99
+ // A pseudo ostream that takes yydebug_ into account.
100
+ # define YYCDEBUG if (yydebug_) (*yycdebug_)
101
+
102
+ # define YY_SYMBOL_PRINT(Title, Symbol) \
103
+ do { \
104
+ if (yydebug_) \
105
+ { \
106
+ *yycdebug_ << Title << ' '; \
107
+ yy_print_ (*yycdebug_, Symbol); \
108
+ *yycdebug_ << '\n'; \
109
+ } \
110
+ } while (false)
111
+
112
+ # define YY_REDUCE_PRINT(Rule) \
113
+ do { \
114
+ if (yydebug_) \
115
+ yy_reduce_print_ (Rule); \
116
+ } while (false)
117
+
118
+ # define YY_STACK_PRINT() \
119
+ do { \
120
+ if (yydebug_) \
121
+ yystack_print_ (); \
122
+ } while (false)
123
+
124
+ #else // !YYDEBUG
125
+
126
+ # define YYCDEBUG if (false) std::cerr
127
+ # define YY_SYMBOL_PRINT(Title, Symbol) YYUSE (Symbol)
128
+ # define YY_REDUCE_PRINT(Rule) static_cast<void> (0)
129
+ # define YY_STACK_PRINT() static_cast<void> (0)
130
+
131
+ #endif // !YYDEBUG
132
+
133
+ #define yyerrok (yyerrstatus_ = 0)
134
+ #define yyclearin (yyla.clear ())
135
+
136
+ #define YYACCEPT goto yyacceptlab
137
+ #define YYABORT goto yyabortlab
138
+ #define YYERROR goto yyerrorlab
139
+ #define YYRECOVERING() (!!yyerrstatus_)
140
+
141
+
142
+ namespace yy {
143
+ #line 144 "parser.tab.cpp" // lalr1.cc:481
144
+
145
+ /* Return YYSTR after stripping away unnecessary quotes and
146
+ backslashes, so that it's suitable for yyerror. The heuristic is
147
+ that double-quoting is unnecessary unless the string contains an
148
+ apostrophe, a comma, or backslash (other than backslash-backslash).
149
+ YYSTR is taken from yytname. */
150
+ std::string
151
+ GraphQLParserImpl::yytnamerr_ (const char *yystr)
152
+ {
153
+ if (*yystr == '"')
154
+ {
155
+ std::string yyr = "";
156
+ char const *yyp = yystr;
157
+
158
+ for (;;)
159
+ switch (*++yyp)
160
+ {
161
+ case '\'':
162
+ case ',':
163
+ goto do_not_strip_quotes;
164
+
165
+ case '\\':
166
+ if (*++yyp != '\\')
167
+ goto do_not_strip_quotes;
168
+ // Fall through.
169
+ default:
170
+ yyr += *yyp;
171
+ break;
172
+
173
+ case '"':
174
+ return yyr;
175
+ }
176
+ do_not_strip_quotes: ;
177
+ }
178
+
179
+ return yystr;
180
+ }
181
+
182
+
183
+ /// Build a parser object.
184
+ GraphQLParserImpl::GraphQLParserImpl (bool enableSchema_yyarg, Node **outAST_yyarg, const char **outError_yyarg, void *scanner_yyarg)
185
+ :
186
+ #if YYDEBUG
187
+ yydebug_ (false),
188
+ yycdebug_ (&std::cerr),
189
+ #endif
190
+ enableSchema (enableSchema_yyarg),
191
+ outAST (outAST_yyarg),
192
+ outError (outError_yyarg),
193
+ scanner (scanner_yyarg)
194
+ {}
195
+
196
+ GraphQLParserImpl::~GraphQLParserImpl ()
197
+ {}
198
+
199
+
200
+ /*---------------.
201
+ | Symbol types. |
202
+ `---------------*/
203
+
204
+ GraphQLParserImpl::syntax_error::syntax_error (const location_type& l, const std::string& m)
205
+ : std::runtime_error (m)
206
+ , location (l)
207
+ {}
208
+
209
+ // basic_symbol.
210
+ template <typename Base>
211
+ GraphQLParserImpl::basic_symbol<Base>::basic_symbol ()
212
+ : value ()
213
+ {}
214
+
215
+ template <typename Base>
216
+ GraphQLParserImpl::basic_symbol<Base>::basic_symbol (const basic_symbol& other)
217
+ : Base (other)
218
+ , value ()
219
+ , location (other.location)
220
+ {
221
+ value = other.value;
222
+ }
223
+
224
+ template <typename Base>
225
+ GraphQLParserImpl::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const semantic_type& v, const location_type& l)
226
+ : Base (t)
227
+ , value (v)
228
+ , location (l)
229
+ {}
230
+
231
+
232
+ /// Constructor for valueless symbols.
233
+ template <typename Base>
234
+ GraphQLParserImpl::basic_symbol<Base>::basic_symbol (typename Base::kind_type t, const location_type& l)
235
+ : Base (t)
236
+ , value ()
237
+ , location (l)
238
+ {}
239
+
240
+ template <typename Base>
241
+ GraphQLParserImpl::basic_symbol<Base>::~basic_symbol ()
242
+ {
243
+ clear ();
244
+ }
245
+
246
+ template <typename Base>
247
+ void
248
+ GraphQLParserImpl::basic_symbol<Base>::clear ()
249
+ {
250
+ Base::clear ();
251
+ }
252
+
253
+ template <typename Base>
254
+ bool
255
+ GraphQLParserImpl::basic_symbol<Base>::empty () const
256
+ {
257
+ return Base::type_get () == empty_symbol;
258
+ }
259
+
260
+ template <typename Base>
261
+ void
262
+ GraphQLParserImpl::basic_symbol<Base>::move (basic_symbol& s)
263
+ {
264
+ super_type::move (s);
265
+ value = s.value;
266
+ location = s.location;
267
+ }
268
+
269
+ // by_type.
270
+ GraphQLParserImpl::by_type::by_type ()
271
+ : type (empty_symbol)
272
+ {}
273
+
274
+ GraphQLParserImpl::by_type::by_type (const by_type& other)
275
+ : type (other.type)
276
+ {}
277
+
278
+ GraphQLParserImpl::by_type::by_type (token_type t)
279
+ : type (yytranslate_ (t))
280
+ {}
281
+
282
+ void
283
+ GraphQLParserImpl::by_type::clear ()
284
+ {
285
+ type = empty_symbol;
286
+ }
287
+
288
+ void
289
+ GraphQLParserImpl::by_type::move (by_type& that)
290
+ {
291
+ type = that.type;
292
+ that.clear ();
293
+ }
294
+
295
+ int
296
+ GraphQLParserImpl::by_type::type_get () const
297
+ {
298
+ return type;
299
+ }
300
+
301
+
302
+ // by_state.
303
+ GraphQLParserImpl::by_state::by_state ()
304
+ : state (empty_state)
305
+ {}
306
+
307
+ GraphQLParserImpl::by_state::by_state (const by_state& other)
308
+ : state (other.state)
309
+ {}
310
+
311
+ void
312
+ GraphQLParserImpl::by_state::clear ()
313
+ {
314
+ state = empty_state;
315
+ }
316
+
317
+ void
318
+ GraphQLParserImpl::by_state::move (by_state& that)
319
+ {
320
+ state = that.state;
321
+ that.clear ();
322
+ }
323
+
324
+ GraphQLParserImpl::by_state::by_state (state_type s)
325
+ : state (s)
326
+ {}
327
+
328
+ GraphQLParserImpl::symbol_number_type
329
+ GraphQLParserImpl::by_state::type_get () const
330
+ {
331
+ if (state == empty_state)
332
+ return empty_symbol;
333
+ else
334
+ return yystos_[state];
335
+ }
336
+
337
+ GraphQLParserImpl::stack_symbol_type::stack_symbol_type ()
338
+ {}
339
+
340
+ GraphQLParserImpl::stack_symbol_type::stack_symbol_type (const stack_symbol_type& that)
341
+ : super_type (that.state, that.location)
342
+ {
343
+ value = that.value;
344
+ }
345
+
346
+ GraphQLParserImpl::stack_symbol_type::stack_symbol_type (state_type s, symbol_type& that)
347
+ : super_type (s, that.location)
348
+ {
349
+ value = that.value;
350
+ // that is emptied.
351
+ that.type = empty_symbol;
352
+ }
353
+
354
+ GraphQLParserImpl::stack_symbol_type&
355
+ GraphQLParserImpl::stack_symbol_type::operator= (const stack_symbol_type& that)
356
+ {
357
+ state = that.state;
358
+ value = that.value;
359
+ location = that.location;
360
+ return *this;
361
+ }
362
+
363
+
364
+ template <typename Base>
365
+ void
366
+ GraphQLParserImpl::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
367
+ {
368
+ if (yymsg)
369
+ YY_SYMBOL_PRINT (yymsg, yysym);
370
+
371
+ // User destructor.
372
+ switch (yysym.type_get ())
373
+ {
374
+ case 3: // "directive"
375
+
376
+ #line 289 "parser.ypp" // lalr1.cc:616
377
+ { }
378
+ #line 379 "parser.tab.cpp" // lalr1.cc:616
379
+ break;
380
+
381
+ case 4: // "enum"
382
+
383
+ #line 289 "parser.ypp" // lalr1.cc:616
384
+ { }
385
+ #line 386 "parser.tab.cpp" // lalr1.cc:616
386
+ break;
387
+
388
+ case 5: // "extend"
389
+
390
+ #line 289 "parser.ypp" // lalr1.cc:616
391
+ { }
392
+ #line 393 "parser.tab.cpp" // lalr1.cc:616
393
+ break;
394
+
395
+ case 6: // "false"
396
+
397
+ #line 289 "parser.ypp" // lalr1.cc:616
398
+ { }
399
+ #line 400 "parser.tab.cpp" // lalr1.cc:616
400
+ break;
401
+
402
+ case 7: // "fragment"
403
+
404
+ #line 289 "parser.ypp" // lalr1.cc:616
405
+ { }
406
+ #line 407 "parser.tab.cpp" // lalr1.cc:616
407
+ break;
408
+
409
+ case 8: // "implements"
410
+
411
+ #line 289 "parser.ypp" // lalr1.cc:616
412
+ { }
413
+ #line 414 "parser.tab.cpp" // lalr1.cc:616
414
+ break;
415
+
416
+ case 9: // "input"
417
+
418
+ #line 289 "parser.ypp" // lalr1.cc:616
419
+ { }
420
+ #line 421 "parser.tab.cpp" // lalr1.cc:616
421
+ break;
422
+
423
+ case 10: // "interface"
424
+
425
+ #line 289 "parser.ypp" // lalr1.cc:616
426
+ { }
427
+ #line 428 "parser.tab.cpp" // lalr1.cc:616
428
+ break;
429
+
430
+ case 11: // "mutation"
431
+
432
+ #line 289 "parser.ypp" // lalr1.cc:616
433
+ { }
434
+ #line 435 "parser.tab.cpp" // lalr1.cc:616
435
+ break;
436
+
437
+ case 12: // "null"
438
+
439
+ #line 289 "parser.ypp" // lalr1.cc:616
440
+ { }
441
+ #line 442 "parser.tab.cpp" // lalr1.cc:616
442
+ break;
443
+
444
+ case 13: // "query"
445
+
446
+ #line 289 "parser.ypp" // lalr1.cc:616
447
+ { }
448
+ #line 449 "parser.tab.cpp" // lalr1.cc:616
449
+ break;
450
+
451
+ case 14: // "on"
452
+
453
+ #line 289 "parser.ypp" // lalr1.cc:616
454
+ { }
455
+ #line 456 "parser.tab.cpp" // lalr1.cc:616
456
+ break;
457
+
458
+ case 15: // "scalar"
459
+
460
+ #line 289 "parser.ypp" // lalr1.cc:616
461
+ { }
462
+ #line 463 "parser.tab.cpp" // lalr1.cc:616
463
+ break;
464
+
465
+ case 16: // "schema"
466
+
467
+ #line 289 "parser.ypp" // lalr1.cc:616
468
+ { }
469
+ #line 470 "parser.tab.cpp" // lalr1.cc:616
470
+ break;
471
+
472
+ case 17: // "subscription"
473
+
474
+ #line 289 "parser.ypp" // lalr1.cc:616
475
+ { }
476
+ #line 477 "parser.tab.cpp" // lalr1.cc:616
477
+ break;
478
+
479
+ case 18: // "true"
480
+
481
+ #line 289 "parser.ypp" // lalr1.cc:616
482
+ { }
483
+ #line 484 "parser.tab.cpp" // lalr1.cc:616
484
+ break;
485
+
486
+ case 19: // "type"
487
+
488
+ #line 289 "parser.ypp" // lalr1.cc:616
489
+ { }
490
+ #line 491 "parser.tab.cpp" // lalr1.cc:616
491
+ break;
492
+
493
+ case 20: // "union"
494
+
495
+ #line 289 "parser.ypp" // lalr1.cc:616
496
+ { }
497
+ #line 498 "parser.tab.cpp" // lalr1.cc:616
498
+ break;
499
+
500
+ case 33: // VARIABLE
501
+
502
+ #line 289 "parser.ypp" // lalr1.cc:616
503
+ { }
504
+ #line 505 "parser.tab.cpp" // lalr1.cc:616
505
+ break;
506
+
507
+ case 34: // INTEGER
508
+
509
+ #line 289 "parser.ypp" // lalr1.cc:616
510
+ { }
511
+ #line 512 "parser.tab.cpp" // lalr1.cc:616
512
+ break;
513
+
514
+ case 35: // FLOAT
515
+
516
+ #line 289 "parser.ypp" // lalr1.cc:616
517
+ { }
518
+ #line 519 "parser.tab.cpp" // lalr1.cc:616
519
+ break;
520
+
521
+ case 36: // STRING
522
+
523
+ #line 289 "parser.ypp" // lalr1.cc:616
524
+ { }
525
+ #line 526 "parser.tab.cpp" // lalr1.cc:616
526
+ break;
527
+
528
+ case 37: // IDENTIFIER
529
+
530
+ #line 289 "parser.ypp" // lalr1.cc:616
531
+ { }
532
+ #line 533 "parser.tab.cpp" // lalr1.cc:616
533
+ break;
534
+
535
+ case 39: // start
536
+
537
+ #line 291 "parser.ypp" // lalr1.cc:616
538
+ { }
539
+ #line 540 "parser.tab.cpp" // lalr1.cc:616
540
+ break;
541
+
542
+ case 40: // fragment_name
543
+
544
+ #line 292 "parser.ypp" // lalr1.cc:616
545
+ { delete (yysym.value.name); }
546
+ #line 547 "parser.tab.cpp" // lalr1.cc:616
547
+ break;
548
+
549
+ case 41: // name
550
+
551
+ #line 292 "parser.ypp" // lalr1.cc:616
552
+ { delete (yysym.value.name); }
553
+ #line 554 "parser.tab.cpp" // lalr1.cc:616
554
+ break;
555
+
556
+ case 42: // name_opt
557
+
558
+ #line 292 "parser.ypp" // lalr1.cc:616
559
+ { delete (yysym.value.name); }
560
+ #line 561 "parser.tab.cpp" // lalr1.cc:616
561
+ break;
562
+
563
+ case 43: // document
564
+
565
+ #line 291 "parser.ypp" // lalr1.cc:616
566
+ { }
567
+ #line 568 "parser.tab.cpp" // lalr1.cc:616
568
+ break;
569
+
570
+ case 44: // definition_list
571
+
572
+ #line 292 "parser.ypp" // lalr1.cc:616
573
+ { delete (yysym.value.definitionList); }
574
+ #line 575 "parser.tab.cpp" // lalr1.cc:616
575
+ break;
576
+
577
+ case 45: // definition
578
+
579
+ #line 292 "parser.ypp" // lalr1.cc:616
580
+ { delete (yysym.value.definition); }
581
+ #line 582 "parser.tab.cpp" // lalr1.cc:616
582
+ break;
583
+
584
+ case 46: // schema_gate
585
+
586
+ #line 292 "parser.ypp" // lalr1.cc:616
587
+ { delete (yysym.value.definition); }
588
+ #line 589 "parser.tab.cpp" // lalr1.cc:616
589
+ break;
590
+
591
+ case 47: // operation_definition
592
+
593
+ #line 292 "parser.ypp" // lalr1.cc:616
594
+ { delete (yysym.value.operationDefinition); }
595
+ #line 596 "parser.tab.cpp" // lalr1.cc:616
596
+ break;
597
+
598
+ case 48: // operation_type
599
+
600
+ #line 290 "parser.ypp" // lalr1.cc:616
601
+ { free((void *)(yysym.value.heapStr)); }
602
+ #line 603 "parser.tab.cpp" // lalr1.cc:616
603
+ break;
604
+
605
+ case 49: // variable_definitions
606
+
607
+ #line 292 "parser.ypp" // lalr1.cc:616
608
+ { delete (yysym.value.variableDefinitionList); }
609
+ #line 610 "parser.tab.cpp" // lalr1.cc:616
610
+ break;
611
+
612
+ case 50: // variable_definition_list
613
+
614
+ #line 292 "parser.ypp" // lalr1.cc:616
615
+ { delete (yysym.value.variableDefinitionList); }
616
+ #line 617 "parser.tab.cpp" // lalr1.cc:616
617
+ break;
618
+
619
+ case 51: // variable
620
+
621
+ #line 292 "parser.ypp" // lalr1.cc:616
622
+ { delete (yysym.value.variable); }
623
+ #line 624 "parser.tab.cpp" // lalr1.cc:616
624
+ break;
625
+
626
+ case 52: // variable_definition
627
+
628
+ #line 292 "parser.ypp" // lalr1.cc:616
629
+ { delete (yysym.value.variableDefinition); }
630
+ #line 631 "parser.tab.cpp" // lalr1.cc:616
631
+ break;
632
+
633
+ case 53: // default_value_opt
634
+
635
+ #line 292 "parser.ypp" // lalr1.cc:616
636
+ { delete (yysym.value.value); }
637
+ #line 638 "parser.tab.cpp" // lalr1.cc:616
638
+ break;
639
+
640
+ case 54: // default_value
641
+
642
+ #line 292 "parser.ypp" // lalr1.cc:616
643
+ { delete (yysym.value.value); }
644
+ #line 645 "parser.tab.cpp" // lalr1.cc:616
645
+ break;
646
+
647
+ case 55: // selection_set
648
+
649
+ #line 292 "parser.ypp" // lalr1.cc:616
650
+ { delete (yysym.value.selectionSet); }
651
+ #line 652 "parser.tab.cpp" // lalr1.cc:616
652
+ break;
653
+
654
+ case 56: // selection_set_opt
655
+
656
+ #line 292 "parser.ypp" // lalr1.cc:616
657
+ { delete (yysym.value.selectionSet); }
658
+ #line 659 "parser.tab.cpp" // lalr1.cc:616
659
+ break;
660
+
661
+ case 57: // selection_list
662
+
663
+ #line 292 "parser.ypp" // lalr1.cc:616
664
+ { delete (yysym.value.selectionList); }
665
+ #line 666 "parser.tab.cpp" // lalr1.cc:616
666
+ break;
667
+
668
+ case 58: // selection
669
+
670
+ #line 292 "parser.ypp" // lalr1.cc:616
671
+ { delete (yysym.value.selection); }
672
+ #line 673 "parser.tab.cpp" // lalr1.cc:616
673
+ break;
674
+
675
+ case 59: // field
676
+
677
+ #line 292 "parser.ypp" // lalr1.cc:616
678
+ { delete (yysym.value.field); }
679
+ #line 680 "parser.tab.cpp" // lalr1.cc:616
680
+ break;
681
+
682
+ case 60: // arguments
683
+
684
+ #line 292 "parser.ypp" // lalr1.cc:616
685
+ { delete (yysym.value.argumentList); }
686
+ #line 687 "parser.tab.cpp" // lalr1.cc:616
687
+ break;
688
+
689
+ case 61: // arguments_opt
690
+
691
+ #line 292 "parser.ypp" // lalr1.cc:616
692
+ { delete (yysym.value.argumentList); }
693
+ #line 694 "parser.tab.cpp" // lalr1.cc:616
694
+ break;
695
+
696
+ case 62: // argument_list
697
+
698
+ #line 292 "parser.ypp" // lalr1.cc:616
699
+ { delete (yysym.value.argumentList); }
700
+ #line 701 "parser.tab.cpp" // lalr1.cc:616
701
+ break;
702
+
703
+ case 63: // argument
704
+
705
+ #line 292 "parser.ypp" // lalr1.cc:616
706
+ { delete (yysym.value.argument); }
707
+ #line 708 "parser.tab.cpp" // lalr1.cc:616
708
+ break;
709
+
710
+ case 64: // fragment_spread
711
+
712
+ #line 292 "parser.ypp" // lalr1.cc:616
713
+ { delete (yysym.value.fragmentSpread); }
714
+ #line 715 "parser.tab.cpp" // lalr1.cc:616
715
+ break;
716
+
717
+ case 65: // inline_fragment
718
+
719
+ #line 292 "parser.ypp" // lalr1.cc:616
720
+ { delete (yysym.value.inlineFragment); }
721
+ #line 722 "parser.tab.cpp" // lalr1.cc:616
722
+ break;
723
+
724
+ case 66: // fragment_definition
725
+
726
+ #line 292 "parser.ypp" // lalr1.cc:616
727
+ { delete (yysym.value.fragmentDefinition); }
728
+ #line 729 "parser.tab.cpp" // lalr1.cc:616
729
+ break;
730
+
731
+ case 67: // type_condition
732
+
733
+ #line 292 "parser.ypp" // lalr1.cc:616
734
+ { delete (yysym.value.namedType); }
735
+ #line 736 "parser.tab.cpp" // lalr1.cc:616
736
+ break;
737
+
738
+ case 68: // value
739
+
740
+ #line 292 "parser.ypp" // lalr1.cc:616
741
+ { delete (yysym.value.value); }
742
+ #line 743 "parser.tab.cpp" // lalr1.cc:616
743
+ break;
744
+
745
+ case 69: // int_value
746
+
747
+ #line 292 "parser.ypp" // lalr1.cc:616
748
+ { delete (yysym.value.intValue); }
749
+ #line 750 "parser.tab.cpp" // lalr1.cc:616
750
+ break;
751
+
752
+ case 70: // float_value
753
+
754
+ #line 292 "parser.ypp" // lalr1.cc:616
755
+ { delete (yysym.value.floatValue); }
756
+ #line 757 "parser.tab.cpp" // lalr1.cc:616
757
+ break;
758
+
759
+ case 71: // string_value
760
+
761
+ #line 292 "parser.ypp" // lalr1.cc:616
762
+ { delete (yysym.value.stringValue); }
763
+ #line 764 "parser.tab.cpp" // lalr1.cc:616
764
+ break;
765
+
766
+ case 72: // value_const
767
+
768
+ #line 292 "parser.ypp" // lalr1.cc:616
769
+ { delete (yysym.value.value); }
770
+ #line 771 "parser.tab.cpp" // lalr1.cc:616
771
+ break;
772
+
773
+ case 73: // boolean_value
774
+
775
+ #line 292 "parser.ypp" // lalr1.cc:616
776
+ { delete (yysym.value.booleanValue); }
777
+ #line 778 "parser.tab.cpp" // lalr1.cc:616
778
+ break;
779
+
780
+ case 74: // null_value
781
+
782
+ #line 292 "parser.ypp" // lalr1.cc:616
783
+ { delete (yysym.value.nullValue); }
784
+ #line 785 "parser.tab.cpp" // lalr1.cc:616
785
+ break;
786
+
787
+ case 75: // enum_value
788
+
789
+ #line 292 "parser.ypp" // lalr1.cc:616
790
+ { delete (yysym.value.enumValue); }
791
+ #line 792 "parser.tab.cpp" // lalr1.cc:616
792
+ break;
793
+
794
+ case 76: // list_value
795
+
796
+ #line 292 "parser.ypp" // lalr1.cc:616
797
+ { delete (yysym.value.arrayValue); }
798
+ #line 799 "parser.tab.cpp" // lalr1.cc:616
799
+ break;
800
+
801
+ case 77: // value_list
802
+
803
+ #line 292 "parser.ypp" // lalr1.cc:616
804
+ { delete (yysym.value.valueList); }
805
+ #line 806 "parser.tab.cpp" // lalr1.cc:616
806
+ break;
807
+
808
+ case 78: // list_value_const
809
+
810
+ #line 292 "parser.ypp" // lalr1.cc:616
811
+ { delete (yysym.value.arrayValue); }
812
+ #line 813 "parser.tab.cpp" // lalr1.cc:616
813
+ break;
814
+
815
+ case 79: // value_const_list
816
+
817
+ #line 292 "parser.ypp" // lalr1.cc:616
818
+ { delete (yysym.value.valueList); }
819
+ #line 820 "parser.tab.cpp" // lalr1.cc:616
820
+ break;
821
+
822
+ case 80: // object_value
823
+
824
+ #line 292 "parser.ypp" // lalr1.cc:616
825
+ { delete (yysym.value.objectValue); }
826
+ #line 827 "parser.tab.cpp" // lalr1.cc:616
827
+ break;
828
+
829
+ case 81: // object_field_list
830
+
831
+ #line 292 "parser.ypp" // lalr1.cc:616
832
+ { delete (yysym.value.objectFieldList); }
833
+ #line 834 "parser.tab.cpp" // lalr1.cc:616
834
+ break;
835
+
836
+ case 82: // object_field
837
+
838
+ #line 292 "parser.ypp" // lalr1.cc:616
839
+ { delete (yysym.value.objectField); }
840
+ #line 841 "parser.tab.cpp" // lalr1.cc:616
841
+ break;
842
+
843
+ case 83: // object_value_const
844
+
845
+ #line 292 "parser.ypp" // lalr1.cc:616
846
+ { delete (yysym.value.objectValue); }
847
+ #line 848 "parser.tab.cpp" // lalr1.cc:616
848
+ break;
849
+
850
+ case 84: // object_field_const_list
851
+
852
+ #line 292 "parser.ypp" // lalr1.cc:616
853
+ { delete (yysym.value.objectFieldList); }
854
+ #line 855 "parser.tab.cpp" // lalr1.cc:616
855
+ break;
856
+
857
+ case 85: // object_field_const
858
+
859
+ #line 292 "parser.ypp" // lalr1.cc:616
860
+ { delete (yysym.value.objectField); }
861
+ #line 862 "parser.tab.cpp" // lalr1.cc:616
862
+ break;
863
+
864
+ case 86: // directives
865
+
866
+ #line 292 "parser.ypp" // lalr1.cc:616
867
+ { delete (yysym.value.directiveList); }
868
+ #line 869 "parser.tab.cpp" // lalr1.cc:616
869
+ break;
870
+
871
+ case 87: // directives_opt
872
+
873
+ #line 292 "parser.ypp" // lalr1.cc:616
874
+ { delete (yysym.value.directiveList); }
875
+ #line 876 "parser.tab.cpp" // lalr1.cc:616
876
+ break;
877
+
878
+ case 88: // directive_list
879
+
880
+ #line 292 "parser.ypp" // lalr1.cc:616
881
+ { delete (yysym.value.directiveList); }
882
+ #line 883 "parser.tab.cpp" // lalr1.cc:616
883
+ break;
884
+
885
+ case 89: // directive
886
+
887
+ #line 292 "parser.ypp" // lalr1.cc:616
888
+ { delete (yysym.value.directive); }
889
+ #line 890 "parser.tab.cpp" // lalr1.cc:616
890
+ break;
891
+
892
+ case 90: // type
893
+
894
+ #line 292 "parser.ypp" // lalr1.cc:616
895
+ { delete (yysym.value.type); }
896
+ #line 897 "parser.tab.cpp" // lalr1.cc:616
897
+ break;
898
+
899
+ case 91: // type_name
900
+
901
+ #line 292 "parser.ypp" // lalr1.cc:616
902
+ { delete (yysym.value.namedType); }
903
+ #line 904 "parser.tab.cpp" // lalr1.cc:616
904
+ break;
905
+
906
+ case 92: // list_type
907
+
908
+ #line 292 "parser.ypp" // lalr1.cc:616
909
+ { delete (yysym.value.listType); }
910
+ #line 911 "parser.tab.cpp" // lalr1.cc:616
911
+ break;
912
+
913
+ case 93: // non_null_type
914
+
915
+ #line 292 "parser.ypp" // lalr1.cc:616
916
+ { delete (yysym.value.nonNullType); }
917
+ #line 918 "parser.tab.cpp" // lalr1.cc:616
918
+ break;
919
+
920
+ case 94: // schema_definition
921
+
922
+ #line 292 "parser.ypp" // lalr1.cc:616
923
+ { delete (yysym.value.schemaDefinition); }
924
+ #line 925 "parser.tab.cpp" // lalr1.cc:616
925
+ break;
926
+
927
+ case 95: // operation_type_definition_list
928
+
929
+ #line 292 "parser.ypp" // lalr1.cc:616
930
+ { delete (yysym.value.operationTypeDefinitionList); }
931
+ #line 932 "parser.tab.cpp" // lalr1.cc:616
932
+ break;
933
+
934
+ case 96: // operation_type_definition
935
+
936
+ #line 292 "parser.ypp" // lalr1.cc:616
937
+ { delete (yysym.value.operationTypeDefinition); }
938
+ #line 939 "parser.tab.cpp" // lalr1.cc:616
939
+ break;
940
+
941
+ case 97: // scalar_type_definition
942
+
943
+ #line 292 "parser.ypp" // lalr1.cc:616
944
+ { delete (yysym.value.scalarTypeDefinition); }
945
+ #line 946 "parser.tab.cpp" // lalr1.cc:616
946
+ break;
947
+
948
+ case 98: // object_type_definition
949
+
950
+ #line 292 "parser.ypp" // lalr1.cc:616
951
+ { delete (yysym.value.objectTypeDefinition); }
952
+ #line 953 "parser.tab.cpp" // lalr1.cc:616
953
+ break;
954
+
955
+ case 99: // implements_interfaces_opt
956
+
957
+ #line 292 "parser.ypp" // lalr1.cc:616
958
+ { delete (yysym.value.typeNameList); }
959
+ #line 960 "parser.tab.cpp" // lalr1.cc:616
960
+ break;
961
+
962
+ case 100: // type_name_list
963
+
964
+ #line 292 "parser.ypp" // lalr1.cc:616
965
+ { delete (yysym.value.typeNameList); }
966
+ #line 967 "parser.tab.cpp" // lalr1.cc:616
967
+ break;
968
+
969
+ case 101: // field_definition
970
+
971
+ #line 292 "parser.ypp" // lalr1.cc:616
972
+ { delete (yysym.value.fieldDefinition); }
973
+ #line 974 "parser.tab.cpp" // lalr1.cc:616
974
+ break;
975
+
976
+ case 102: // field_definition_list
977
+
978
+ #line 292 "parser.ypp" // lalr1.cc:616
979
+ { delete (yysym.value.fieldDefinitionList); }
980
+ #line 981 "parser.tab.cpp" // lalr1.cc:616
981
+ break;
982
+
983
+ case 103: // arguments_definition_opt
984
+
985
+ #line 292 "parser.ypp" // lalr1.cc:616
986
+ { delete (yysym.value.inputValueDefinitionList); }
987
+ #line 988 "parser.tab.cpp" // lalr1.cc:616
988
+ break;
989
+
990
+ case 104: // arguments_definition
991
+
992
+ #line 292 "parser.ypp" // lalr1.cc:616
993
+ { delete (yysym.value.inputValueDefinitionList); }
994
+ #line 995 "parser.tab.cpp" // lalr1.cc:616
995
+ break;
996
+
997
+ case 105: // input_value_definition_list
998
+
999
+ #line 292 "parser.ypp" // lalr1.cc:616
1000
+ { delete (yysym.value.inputValueDefinitionList); }
1001
+ #line 1002 "parser.tab.cpp" // lalr1.cc:616
1002
+ break;
1003
+
1004
+ case 106: // input_value_definition
1005
+
1006
+ #line 292 "parser.ypp" // lalr1.cc:616
1007
+ { delete (yysym.value.inputValueDefinition); }
1008
+ #line 1009 "parser.tab.cpp" // lalr1.cc:616
1009
+ break;
1010
+
1011
+ case 107: // interface_type_definition
1012
+
1013
+ #line 292 "parser.ypp" // lalr1.cc:616
1014
+ { delete (yysym.value.interfaceTypeDefinition); }
1015
+ #line 1016 "parser.tab.cpp" // lalr1.cc:616
1016
+ break;
1017
+
1018
+ case 108: // union_type_definition
1019
+
1020
+ #line 292 "parser.ypp" // lalr1.cc:616
1021
+ { delete (yysym.value.unionTypeDefinition); }
1022
+ #line 1023 "parser.tab.cpp" // lalr1.cc:616
1023
+ break;
1024
+
1025
+ case 109: // union_members
1026
+
1027
+ #line 292 "parser.ypp" // lalr1.cc:616
1028
+ { delete (yysym.value.typeNameList); }
1029
+ #line 1030 "parser.tab.cpp" // lalr1.cc:616
1030
+ break;
1031
+
1032
+ case 110: // enum_type_definition
1033
+
1034
+ #line 292 "parser.ypp" // lalr1.cc:616
1035
+ { delete (yysym.value.enumTypeDefinition); }
1036
+ #line 1037 "parser.tab.cpp" // lalr1.cc:616
1037
+ break;
1038
+
1039
+ case 111: // enum_value_definition
1040
+
1041
+ #line 292 "parser.ypp" // lalr1.cc:616
1042
+ { delete (yysym.value.enumValueDefinition); }
1043
+ #line 1044 "parser.tab.cpp" // lalr1.cc:616
1044
+ break;
1045
+
1046
+ case 112: // enum_value_definition_list
1047
+
1048
+ #line 292 "parser.ypp" // lalr1.cc:616
1049
+ { delete (yysym.value.enumValueDefinitionList); }
1050
+ #line 1051 "parser.tab.cpp" // lalr1.cc:616
1051
+ break;
1052
+
1053
+ case 113: // input_object_type_definition
1054
+
1055
+ #line 292 "parser.ypp" // lalr1.cc:616
1056
+ { delete (yysym.value.inputObjectTypeDefinition); }
1057
+ #line 1058 "parser.tab.cpp" // lalr1.cc:616
1058
+ break;
1059
+
1060
+ case 114: // type_extension_definition
1061
+
1062
+ #line 292 "parser.ypp" // lalr1.cc:616
1063
+ { delete (yysym.value.typeExtensionDefinition); }
1064
+ #line 1065 "parser.tab.cpp" // lalr1.cc:616
1065
+ break;
1066
+
1067
+ case 115: // directive_definition
1068
+
1069
+ #line 292 "parser.ypp" // lalr1.cc:616
1070
+ { delete (yysym.value.directiveDefinition); }
1071
+ #line 1072 "parser.tab.cpp" // lalr1.cc:616
1072
+ break;
1073
+
1074
+ case 116: // directive_locations
1075
+
1076
+ #line 292 "parser.ypp" // lalr1.cc:616
1077
+ { delete (yysym.value.nameList); }
1078
+ #line 1079 "parser.tab.cpp" // lalr1.cc:616
1079
+ break;
1080
+
1081
+
1082
+ default:
1083
+ break;
1084
+ }
1085
+ }
1086
+
1087
+ #if YYDEBUG
1088
+ template <typename Base>
1089
+ void
1090
+ GraphQLParserImpl::yy_print_ (std::ostream& yyo,
1091
+ const basic_symbol<Base>& yysym) const
1092
+ {
1093
+ std::ostream& yyoutput = yyo;
1094
+ YYUSE (yyoutput);
1095
+ symbol_number_type yytype = yysym.type_get ();
1096
+ // Avoid a (spurious) G++ 4.8 warning about "array subscript is
1097
+ // below array bounds".
1098
+ if (yysym.empty ())
1099
+ std::abort ();
1100
+ yyo << (yytype < yyntokens_ ? "token" : "nterm")
1101
+ << ' ' << yytname_[yytype] << " ("
1102
+ << yysym.location << ": ";
1103
+ switch (yytype)
1104
+ {
1105
+ case 3: // "directive"
1106
+
1107
+ #line 294 "parser.ypp" // lalr1.cc:635
1108
+ { yyoutput << (yysym.value.str); }
1109
+ #line 1110 "parser.tab.cpp" // lalr1.cc:635
1110
+ break;
1111
+
1112
+ case 4: // "enum"
1113
+
1114
+ #line 294 "parser.ypp" // lalr1.cc:635
1115
+ { yyoutput << (yysym.value.str); }
1116
+ #line 1117 "parser.tab.cpp" // lalr1.cc:635
1117
+ break;
1118
+
1119
+ case 5: // "extend"
1120
+
1121
+ #line 294 "parser.ypp" // lalr1.cc:635
1122
+ { yyoutput << (yysym.value.str); }
1123
+ #line 1124 "parser.tab.cpp" // lalr1.cc:635
1124
+ break;
1125
+
1126
+ case 6: // "false"
1127
+
1128
+ #line 294 "parser.ypp" // lalr1.cc:635
1129
+ { yyoutput << (yysym.value.str); }
1130
+ #line 1131 "parser.tab.cpp" // lalr1.cc:635
1131
+ break;
1132
+
1133
+ case 7: // "fragment"
1134
+
1135
+ #line 294 "parser.ypp" // lalr1.cc:635
1136
+ { yyoutput << (yysym.value.str); }
1137
+ #line 1138 "parser.tab.cpp" // lalr1.cc:635
1138
+ break;
1139
+
1140
+ case 8: // "implements"
1141
+
1142
+ #line 294 "parser.ypp" // lalr1.cc:635
1143
+ { yyoutput << (yysym.value.str); }
1144
+ #line 1145 "parser.tab.cpp" // lalr1.cc:635
1145
+ break;
1146
+
1147
+ case 9: // "input"
1148
+
1149
+ #line 294 "parser.ypp" // lalr1.cc:635
1150
+ { yyoutput << (yysym.value.str); }
1151
+ #line 1152 "parser.tab.cpp" // lalr1.cc:635
1152
+ break;
1153
+
1154
+ case 10: // "interface"
1155
+
1156
+ #line 294 "parser.ypp" // lalr1.cc:635
1157
+ { yyoutput << (yysym.value.str); }
1158
+ #line 1159 "parser.tab.cpp" // lalr1.cc:635
1159
+ break;
1160
+
1161
+ case 11: // "mutation"
1162
+
1163
+ #line 294 "parser.ypp" // lalr1.cc:635
1164
+ { yyoutput << (yysym.value.str); }
1165
+ #line 1166 "parser.tab.cpp" // lalr1.cc:635
1166
+ break;
1167
+
1168
+ case 12: // "null"
1169
+
1170
+ #line 294 "parser.ypp" // lalr1.cc:635
1171
+ { yyoutput << (yysym.value.str); }
1172
+ #line 1173 "parser.tab.cpp" // lalr1.cc:635
1173
+ break;
1174
+
1175
+ case 13: // "query"
1176
+
1177
+ #line 294 "parser.ypp" // lalr1.cc:635
1178
+ { yyoutput << (yysym.value.str); }
1179
+ #line 1180 "parser.tab.cpp" // lalr1.cc:635
1180
+ break;
1181
+
1182
+ case 14: // "on"
1183
+
1184
+ #line 294 "parser.ypp" // lalr1.cc:635
1185
+ { yyoutput << (yysym.value.str); }
1186
+ #line 1187 "parser.tab.cpp" // lalr1.cc:635
1187
+ break;
1188
+
1189
+ case 15: // "scalar"
1190
+
1191
+ #line 294 "parser.ypp" // lalr1.cc:635
1192
+ { yyoutput << (yysym.value.str); }
1193
+ #line 1194 "parser.tab.cpp" // lalr1.cc:635
1194
+ break;
1195
+
1196
+ case 16: // "schema"
1197
+
1198
+ #line 294 "parser.ypp" // lalr1.cc:635
1199
+ { yyoutput << (yysym.value.str); }
1200
+ #line 1201 "parser.tab.cpp" // lalr1.cc:635
1201
+ break;
1202
+
1203
+ case 17: // "subscription"
1204
+
1205
+ #line 294 "parser.ypp" // lalr1.cc:635
1206
+ { yyoutput << (yysym.value.str); }
1207
+ #line 1208 "parser.tab.cpp" // lalr1.cc:635
1208
+ break;
1209
+
1210
+ case 18: // "true"
1211
+
1212
+ #line 294 "parser.ypp" // lalr1.cc:635
1213
+ { yyoutput << (yysym.value.str); }
1214
+ #line 1215 "parser.tab.cpp" // lalr1.cc:635
1215
+ break;
1216
+
1217
+ case 19: // "type"
1218
+
1219
+ #line 294 "parser.ypp" // lalr1.cc:635
1220
+ { yyoutput << (yysym.value.str); }
1221
+ #line 1222 "parser.tab.cpp" // lalr1.cc:635
1222
+ break;
1223
+
1224
+ case 20: // "union"
1225
+
1226
+ #line 294 "parser.ypp" // lalr1.cc:635
1227
+ { yyoutput << (yysym.value.str); }
1228
+ #line 1229 "parser.tab.cpp" // lalr1.cc:635
1229
+ break;
1230
+
1231
+ case 33: // VARIABLE
1232
+
1233
+ #line 294 "parser.ypp" // lalr1.cc:635
1234
+ { yyoutput << (yysym.value.str); }
1235
+ #line 1236 "parser.tab.cpp" // lalr1.cc:635
1236
+ break;
1237
+
1238
+ case 34: // INTEGER
1239
+
1240
+ #line 294 "parser.ypp" // lalr1.cc:635
1241
+ { yyoutput << (yysym.value.str); }
1242
+ #line 1243 "parser.tab.cpp" // lalr1.cc:635
1243
+ break;
1244
+
1245
+ case 35: // FLOAT
1246
+
1247
+ #line 294 "parser.ypp" // lalr1.cc:635
1248
+ { yyoutput << (yysym.value.str); }
1249
+ #line 1250 "parser.tab.cpp" // lalr1.cc:635
1250
+ break;
1251
+
1252
+ case 36: // STRING
1253
+
1254
+ #line 294 "parser.ypp" // lalr1.cc:635
1255
+ { yyoutput << (yysym.value.str); }
1256
+ #line 1257 "parser.tab.cpp" // lalr1.cc:635
1257
+ break;
1258
+
1259
+ case 37: // IDENTIFIER
1260
+
1261
+ #line 294 "parser.ypp" // lalr1.cc:635
1262
+ { yyoutput << (yysym.value.str); }
1263
+ #line 1264 "parser.tab.cpp" // lalr1.cc:635
1264
+ break;
1265
+
1266
+
1267
+ default:
1268
+ break;
1269
+ }
1270
+ yyo << ')';
1271
+ }
1272
+ #endif
1273
+
1274
+ void
1275
+ GraphQLParserImpl::yypush_ (const char* m, state_type s, symbol_type& sym)
1276
+ {
1277
+ stack_symbol_type t (s, sym);
1278
+ yypush_ (m, t);
1279
+ }
1280
+
1281
+ void
1282
+ GraphQLParserImpl::yypush_ (const char* m, stack_symbol_type& s)
1283
+ {
1284
+ if (m)
1285
+ YY_SYMBOL_PRINT (m, s);
1286
+ yystack_.push (s);
1287
+ }
1288
+
1289
+ void
1290
+ GraphQLParserImpl::yypop_ (unsigned n)
1291
+ {
1292
+ yystack_.pop (n);
1293
+ }
1294
+
1295
+ #if YYDEBUG
1296
+ std::ostream&
1297
+ GraphQLParserImpl::debug_stream () const
1298
+ {
1299
+ return *yycdebug_;
1300
+ }
1301
+
1302
+ void
1303
+ GraphQLParserImpl::set_debug_stream (std::ostream& o)
1304
+ {
1305
+ yycdebug_ = &o;
1306
+ }
1307
+
1308
+
1309
+ GraphQLParserImpl::debug_level_type
1310
+ GraphQLParserImpl::debug_level () const
1311
+ {
1312
+ return yydebug_;
1313
+ }
1314
+
1315
+ void
1316
+ GraphQLParserImpl::set_debug_level (debug_level_type l)
1317
+ {
1318
+ yydebug_ = l;
1319
+ }
1320
+ #endif // YYDEBUG
1321
+
1322
+ GraphQLParserImpl::state_type
1323
+ GraphQLParserImpl::yy_lr_goto_state_ (state_type yystate, int yysym)
1324
+ {
1325
+ int yyr = yypgoto_[yysym - yyntokens_] + yystate;
1326
+ if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
1327
+ return yytable_[yyr];
1328
+ else
1329
+ return yydefgoto_[yysym - yyntokens_];
1330
+ }
1331
+
1332
+ bool
1333
+ GraphQLParserImpl::yy_pact_value_is_default_ (int yyvalue)
1334
+ {
1335
+ return yyvalue == yypact_ninf_;
1336
+ }
1337
+
1338
+ bool
1339
+ GraphQLParserImpl::yy_table_value_is_error_ (int yyvalue)
1340
+ {
1341
+ return yyvalue == yytable_ninf_;
1342
+ }
1343
+
1344
+ int
1345
+ GraphQLParserImpl::parse ()
1346
+ {
1347
+ // State.
1348
+ int yyn;
1349
+ /// Length of the RHS of the rule being reduced.
1350
+ int yylen = 0;
1351
+
1352
+ // Error handling.
1353
+ int yynerrs_ = 0;
1354
+ int yyerrstatus_ = 0;
1355
+
1356
+ /// The lookahead symbol.
1357
+ symbol_type yyla;
1358
+
1359
+ /// The locations where the error started and ended.
1360
+ stack_symbol_type yyerror_range[3];
1361
+
1362
+ /// The return value of parse ().
1363
+ int yyresult;
1364
+
1365
+ // FIXME: This shoud be completely indented. It is not yet to
1366
+ // avoid gratuitous conflicts when merging into the master branch.
1367
+ try
1368
+ {
1369
+ YYCDEBUG << "Starting parse\n";
1370
+
1371
+
1372
+ /* Initialize the stack. The initial state will be set in
1373
+ yynewstate, since the latter expects the semantical and the
1374
+ location values to have been already stored, initialize these
1375
+ stacks with a primary value. */
1376
+ yystack_.clear ();
1377
+ yypush_ (YY_NULLPTR, 0, yyla);
1378
+
1379
+ // A new symbol was pushed on the stack.
1380
+ yynewstate:
1381
+ YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
1382
+
1383
+ // Accept?
1384
+ if (yystack_[0].state == yyfinal_)
1385
+ goto yyacceptlab;
1386
+
1387
+ goto yybackup;
1388
+
1389
+ // Backup.
1390
+ yybackup:
1391
+
1392
+ // Try to take a decision without lookahead.
1393
+ yyn = yypact_[yystack_[0].state];
1394
+ if (yy_pact_value_is_default_ (yyn))
1395
+ goto yydefault;
1396
+
1397
+ // Read a lookahead token.
1398
+ if (yyla.empty ())
1399
+ {
1400
+ YYCDEBUG << "Reading a token: ";
1401
+ try
1402
+ {
1403
+ yyla.type = yytranslate_ (yylex (&yyla.value, &yyla.location, scanner));
1404
+ }
1405
+ catch (const syntax_error& yyexc)
1406
+ {
1407
+ error (yyexc);
1408
+ goto yyerrlab1;
1409
+ }
1410
+ }
1411
+ YY_SYMBOL_PRINT ("Next token is", yyla);
1412
+
1413
+ /* If the proper action on seeing token YYLA.TYPE is to reduce or
1414
+ to detect an error, take that action. */
1415
+ yyn += yyla.type_get ();
1416
+ if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
1417
+ goto yydefault;
1418
+
1419
+ // Reduce or error.
1420
+ yyn = yytable_[yyn];
1421
+ if (yyn <= 0)
1422
+ {
1423
+ if (yy_table_value_is_error_ (yyn))
1424
+ goto yyerrlab;
1425
+ yyn = -yyn;
1426
+ goto yyreduce;
1427
+ }
1428
+
1429
+ // Count tokens shifted since error; after three, turn off error status.
1430
+ if (yyerrstatus_)
1431
+ --yyerrstatus_;
1432
+
1433
+ // Shift the lookahead token.
1434
+ yypush_ ("Shifting", yyn, yyla);
1435
+ goto yynewstate;
1436
+
1437
+ /*-----------------------------------------------------------.
1438
+ | yydefault -- do the default action for the current state. |
1439
+ `-----------------------------------------------------------*/
1440
+ yydefault:
1441
+ yyn = yydefact_[yystack_[0].state];
1442
+ if (yyn == 0)
1443
+ goto yyerrlab;
1444
+ goto yyreduce;
1445
+
1446
+ /*-----------------------------.
1447
+ | yyreduce -- Do a reduction. |
1448
+ `-----------------------------*/
1449
+ yyreduce:
1450
+ yylen = yyr2_[yyn];
1451
+ {
1452
+ stack_symbol_type yylhs;
1453
+ yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
1454
+ /* If YYLEN is nonzero, implement the default value of the
1455
+ action: '$$ = $1'. Otherwise, use the top of the stack.
1456
+
1457
+ Otherwise, the following line sets YYLHS.VALUE to garbage.
1458
+ This behavior is undocumented and Bison users should not rely
1459
+ upon it. */
1460
+ if (yylen)
1461
+ yylhs.value = yystack_[yylen - 1].value;
1462
+ else
1463
+ yylhs.value = yystack_[0].value;
1464
+
1465
+ // Default location.
1466
+ {
1467
+ slice<stack_symbol_type, stack_type> slice (yystack_, yylen);
1468
+ YYLLOC_DEFAULT (yylhs.location, slice, yylen);
1469
+ yyerror_range[1].location = yylhs.location;
1470
+ }
1471
+
1472
+ // Perform the reduction.
1473
+ YY_REDUCE_PRINT (yyn);
1474
+ try
1475
+ {
1476
+ switch (yyn)
1477
+ {
1478
+ case 2:
1479
+ #line 298 "parser.ypp" // lalr1.cc:856
1480
+ { *outAST = (yystack_[0].value.document); }
1481
+ #line 1482 "parser.tab.cpp" // lalr1.cc:856
1482
+ break;
1483
+
1484
+ case 3:
1485
+ #line 303 "parser.ypp" // lalr1.cc:856
1486
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1487
+ #line 1488 "parser.tab.cpp" // lalr1.cc:856
1488
+ break;
1489
+
1490
+ case 4:
1491
+ #line 304 "parser.ypp" // lalr1.cc:856
1492
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1493
+ #line 1494 "parser.tab.cpp" // lalr1.cc:856
1494
+ break;
1495
+
1496
+ case 5:
1497
+ #line 305 "parser.ypp" // lalr1.cc:856
1498
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1499
+ #line 1500 "parser.tab.cpp" // lalr1.cc:856
1500
+ break;
1501
+
1502
+ case 6:
1503
+ #line 306 "parser.ypp" // lalr1.cc:856
1504
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1505
+ #line 1506 "parser.tab.cpp" // lalr1.cc:856
1506
+ break;
1507
+
1508
+ case 7:
1509
+ #line 307 "parser.ypp" // lalr1.cc:856
1510
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1511
+ #line 1512 "parser.tab.cpp" // lalr1.cc:856
1512
+ break;
1513
+
1514
+ case 8:
1515
+ #line 308 "parser.ypp" // lalr1.cc:856
1516
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1517
+ #line 1518 "parser.tab.cpp" // lalr1.cc:856
1518
+ break;
1519
+
1520
+ case 9:
1521
+ #line 309 "parser.ypp" // lalr1.cc:856
1522
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1523
+ #line 1524 "parser.tab.cpp" // lalr1.cc:856
1524
+ break;
1525
+
1526
+ case 10:
1527
+ #line 310 "parser.ypp" // lalr1.cc:856
1528
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1529
+ #line 1530 "parser.tab.cpp" // lalr1.cc:856
1530
+ break;
1531
+
1532
+ case 11:
1533
+ #line 311 "parser.ypp" // lalr1.cc:856
1534
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1535
+ #line 1536 "parser.tab.cpp" // lalr1.cc:856
1536
+ break;
1537
+
1538
+ case 12:
1539
+ #line 312 "parser.ypp" // lalr1.cc:856
1540
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1541
+ #line 1542 "parser.tab.cpp" // lalr1.cc:856
1542
+ break;
1543
+
1544
+ case 13:
1545
+ #line 313 "parser.ypp" // lalr1.cc:856
1546
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1547
+ #line 1548 "parser.tab.cpp" // lalr1.cc:856
1548
+ break;
1549
+
1550
+ case 14:
1551
+ #line 314 "parser.ypp" // lalr1.cc:856
1552
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1553
+ #line 1554 "parser.tab.cpp" // lalr1.cc:856
1554
+ break;
1555
+
1556
+ case 15:
1557
+ #line 315 "parser.ypp" // lalr1.cc:856
1558
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1559
+ #line 1560 "parser.tab.cpp" // lalr1.cc:856
1560
+ break;
1561
+
1562
+ case 16:
1563
+ #line 316 "parser.ypp" // lalr1.cc:856
1564
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1565
+ #line 1566 "parser.tab.cpp" // lalr1.cc:856
1566
+ break;
1567
+
1568
+ case 17:
1569
+ #line 317 "parser.ypp" // lalr1.cc:856
1570
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1571
+ #line 1572 "parser.tab.cpp" // lalr1.cc:856
1572
+ break;
1573
+
1574
+ case 18:
1575
+ #line 318 "parser.ypp" // lalr1.cc:856
1576
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1577
+ #line 1578 "parser.tab.cpp" // lalr1.cc:856
1578
+ break;
1579
+
1580
+ case 19:
1581
+ #line 319 "parser.ypp" // lalr1.cc:856
1582
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1583
+ #line 1584 "parser.tab.cpp" // lalr1.cc:856
1584
+ break;
1585
+
1586
+ case 20:
1587
+ #line 320 "parser.ypp" // lalr1.cc:856
1588
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1589
+ #line 1590 "parser.tab.cpp" // lalr1.cc:856
1590
+ break;
1591
+
1592
+ case 22:
1593
+ #line 324 "parser.ypp" // lalr1.cc:856
1594
+ { (yylhs.value.name) = new Name(yystack_[0].location, strdup((yystack_[0].value.str))); }
1595
+ #line 1596 "parser.tab.cpp" // lalr1.cc:856
1596
+ break;
1597
+
1598
+ case 23:
1599
+ #line 328 "parser.ypp" // lalr1.cc:856
1600
+ {(yylhs.value.name) = nullptr;}
1601
+ #line 1602 "parser.tab.cpp" // lalr1.cc:856
1602
+ break;
1603
+
1604
+ case 25:
1605
+ #line 334 "parser.ypp" // lalr1.cc:856
1606
+ { (yylhs.value.document) = new Document(yylhs.location, (yystack_[0].value.definitionList)); }
1607
+ #line 1608 "parser.tab.cpp" // lalr1.cc:856
1608
+ break;
1609
+
1610
+ case 26:
1611
+ #line 337 "parser.ypp" // lalr1.cc:856
1612
+ { (yylhs.value.definitionList) = new std::vector<std::unique_ptr<Definition>>(); (yylhs.value.definitionList)->emplace_back((yystack_[0].value.definition)); }
1613
+ #line 1614 "parser.tab.cpp" // lalr1.cc:856
1614
+ break;
1615
+
1616
+ case 27:
1617
+ #line 338 "parser.ypp" // lalr1.cc:856
1618
+ { (yystack_[1].value.definitionList)->emplace_back((yystack_[0].value.definition)); (yylhs.value.definitionList) = (yystack_[1].value.definitionList); }
1619
+ #line 1620 "parser.tab.cpp" // lalr1.cc:856
1620
+ break;
1621
+
1622
+ case 28:
1623
+ #line 341 "parser.ypp" // lalr1.cc:856
1624
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.operationDefinition)); }
1625
+ #line 1626 "parser.tab.cpp" // lalr1.cc:856
1626
+ break;
1627
+
1628
+ case 29:
1629
+ #line 342 "parser.ypp" // lalr1.cc:856
1630
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.fragmentDefinition)); }
1631
+ #line 1632 "parser.tab.cpp" // lalr1.cc:856
1632
+ break;
1633
+
1634
+ case 30:
1635
+ #line 343 "parser.ypp" // lalr1.cc:856
1636
+ {
1637
+ if (!enableSchema) {
1638
+ error(yylhs.location, "schema support disabled");
1639
+ // %destructor doesn't work with YYERROR. See
1640
+ // https://www.gnu.org/software/bison/manual/html_node/Destructor-Decl.html
1641
+ delete (yylhs.value.definition);
1642
+ YYERROR;
1643
+ }
1644
+ (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.definition));
1645
+ }
1646
+ #line 1647 "parser.tab.cpp" // lalr1.cc:856
1647
+ break;
1648
+
1649
+ case 31:
1650
+ #line 355 "parser.ypp" // lalr1.cc:856
1651
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.schemaDefinition)); }
1652
+ #line 1653 "parser.tab.cpp" // lalr1.cc:856
1653
+ break;
1654
+
1655
+ case 32:
1656
+ #line 356 "parser.ypp" // lalr1.cc:856
1657
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.scalarTypeDefinition)); }
1658
+ #line 1659 "parser.tab.cpp" // lalr1.cc:856
1659
+ break;
1660
+
1661
+ case 33:
1662
+ #line 357 "parser.ypp" // lalr1.cc:856
1663
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.objectTypeDefinition)); }
1664
+ #line 1665 "parser.tab.cpp" // lalr1.cc:856
1665
+ break;
1666
+
1667
+ case 34:
1668
+ #line 358 "parser.ypp" // lalr1.cc:856
1669
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.interfaceTypeDefinition)); }
1670
+ #line 1671 "parser.tab.cpp" // lalr1.cc:856
1671
+ break;
1672
+
1673
+ case 35:
1674
+ #line 359 "parser.ypp" // lalr1.cc:856
1675
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.unionTypeDefinition)); }
1676
+ #line 1677 "parser.tab.cpp" // lalr1.cc:856
1677
+ break;
1678
+
1679
+ case 36:
1680
+ #line 360 "parser.ypp" // lalr1.cc:856
1681
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.enumTypeDefinition)); }
1682
+ #line 1683 "parser.tab.cpp" // lalr1.cc:856
1683
+ break;
1684
+
1685
+ case 37:
1686
+ #line 361 "parser.ypp" // lalr1.cc:856
1687
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.inputObjectTypeDefinition)); }
1688
+ #line 1689 "parser.tab.cpp" // lalr1.cc:856
1689
+ break;
1690
+
1691
+ case 38:
1692
+ #line 362 "parser.ypp" // lalr1.cc:856
1693
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.typeExtensionDefinition)); }
1694
+ #line 1695 "parser.tab.cpp" // lalr1.cc:856
1695
+ break;
1696
+
1697
+ case 39:
1698
+ #line 363 "parser.ypp" // lalr1.cc:856
1699
+ { (yylhs.value.definition) = static_cast<Definition *>((yystack_[0].value.directiveDefinition)); }
1700
+ #line 1701 "parser.tab.cpp" // lalr1.cc:856
1701
+ break;
1702
+
1703
+ case 40:
1704
+ #line 369 "parser.ypp" // lalr1.cc:856
1705
+ { (yylhs.value.operationDefinition) = new OperationDefinition(yylhs.location, strdup("query"), nullptr, nullptr, nullptr, (yystack_[0].value.selectionSet)); }
1706
+ #line 1707 "parser.tab.cpp" // lalr1.cc:856
1707
+ break;
1708
+
1709
+ case 41:
1710
+ #line 370 "parser.ypp" // lalr1.cc:856
1711
+ { (yylhs.value.operationDefinition) = new OperationDefinition(yylhs.location, (yystack_[2].value.heapStr), (yystack_[1].value.name), nullptr, nullptr, (yystack_[0].value.selectionSet)); }
1712
+ #line 1713 "parser.tab.cpp" // lalr1.cc:856
1713
+ break;
1714
+
1715
+ case 42:
1716
+ #line 371 "parser.ypp" // lalr1.cc:856
1717
+ { (yylhs.value.operationDefinition) = new OperationDefinition(yylhs.location, (yystack_[3].value.heapStr), (yystack_[2].value.name), (yystack_[1].value.variableDefinitionList), nullptr, (yystack_[0].value.selectionSet)); }
1718
+ #line 1719 "parser.tab.cpp" // lalr1.cc:856
1719
+ break;
1720
+
1721
+ case 43:
1722
+ #line 372 "parser.ypp" // lalr1.cc:856
1723
+ { (yylhs.value.operationDefinition) = new OperationDefinition(yylhs.location, (yystack_[3].value.heapStr), (yystack_[2].value.name), nullptr, (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1724
+ #line 1725 "parser.tab.cpp" // lalr1.cc:856
1725
+ break;
1726
+
1727
+ case 44:
1728
+ #line 373 "parser.ypp" // lalr1.cc:856
1729
+ { (yylhs.value.operationDefinition) = new OperationDefinition(yylhs.location, (yystack_[4].value.heapStr), (yystack_[3].value.name), (yystack_[2].value.variableDefinitionList), (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1730
+ #line 1731 "parser.tab.cpp" // lalr1.cc:856
1731
+ break;
1732
+
1733
+ case 45:
1734
+ #line 376 "parser.ypp" // lalr1.cc:856
1735
+ { (yylhs.value.heapStr) = strdup((yystack_[0].value.str)); }
1736
+ #line 1737 "parser.tab.cpp" // lalr1.cc:856
1737
+ break;
1738
+
1739
+ case 46:
1740
+ #line 377 "parser.ypp" // lalr1.cc:856
1741
+ { (yylhs.value.heapStr) = strdup((yystack_[0].value.str)); }
1742
+ #line 1743 "parser.tab.cpp" // lalr1.cc:856
1743
+ break;
1744
+
1745
+ case 47:
1746
+ #line 378 "parser.ypp" // lalr1.cc:856
1747
+ { (yylhs.value.heapStr) = strdup((yystack_[0].value.str)); }
1748
+ #line 1749 "parser.tab.cpp" // lalr1.cc:856
1749
+ break;
1750
+
1751
+ case 48:
1752
+ #line 382 "parser.ypp" // lalr1.cc:856
1753
+ { (yylhs.value.variableDefinitionList) = (yystack_[1].value.variableDefinitionList); }
1754
+ #line 1755 "parser.tab.cpp" // lalr1.cc:856
1755
+ break;
1756
+
1757
+ case 49:
1758
+ #line 386 "parser.ypp" // lalr1.cc:856
1759
+ { (yylhs.value.variableDefinitionList) = new std::vector<std::unique_ptr<VariableDefinition>>(); (yylhs.value.variableDefinitionList)->emplace_back((yystack_[0].value.variableDefinition)); }
1760
+ #line 1761 "parser.tab.cpp" // lalr1.cc:856
1761
+ break;
1762
+
1763
+ case 50:
1764
+ #line 387 "parser.ypp" // lalr1.cc:856
1765
+ { (yystack_[1].value.variableDefinitionList)->emplace_back((yystack_[0].value.variableDefinition)); (yylhs.value.variableDefinitionList) = (yystack_[1].value.variableDefinitionList); }
1766
+ #line 1767 "parser.tab.cpp" // lalr1.cc:856
1767
+ break;
1768
+
1769
+ case 51:
1770
+ #line 390 "parser.ypp" // lalr1.cc:856
1771
+ { (yylhs.value.variable) = new Variable(yylhs.location, new Name(yystack_[0].location, strdup((yystack_[0].value.str)))); }
1772
+ #line 1773 "parser.tab.cpp" // lalr1.cc:856
1773
+ break;
1774
+
1775
+ case 52:
1776
+ #line 394 "parser.ypp" // lalr1.cc:856
1777
+ { (yylhs.value.variableDefinition) = new VariableDefinition(yylhs.location, (yystack_[3].value.variable), (yystack_[1].value.type), (yystack_[0].value.value)); }
1778
+ #line 1779 "parser.tab.cpp" // lalr1.cc:856
1779
+ break;
1780
+
1781
+ case 53:
1782
+ #line 398 "parser.ypp" // lalr1.cc:856
1783
+ { (yylhs.value.value) = nullptr; }
1784
+ #line 1785 "parser.tab.cpp" // lalr1.cc:856
1785
+ break;
1786
+
1787
+ case 55:
1788
+ #line 402 "parser.ypp" // lalr1.cc:856
1789
+ { (yylhs.value.value) = (yystack_[0].value.value); }
1790
+ #line 1791 "parser.tab.cpp" // lalr1.cc:856
1791
+ break;
1792
+
1793
+ case 56:
1794
+ #line 406 "parser.ypp" // lalr1.cc:856
1795
+ { (yylhs.value.selectionSet) = new SelectionSet(yylhs.location, (yystack_[1].value.selectionList)); }
1796
+ #line 1797 "parser.tab.cpp" // lalr1.cc:856
1797
+ break;
1798
+
1799
+ case 57:
1800
+ #line 410 "parser.ypp" // lalr1.cc:856
1801
+ { (yylhs.value.selectionSet) = nullptr; }
1802
+ #line 1803 "parser.tab.cpp" // lalr1.cc:856
1803
+ break;
1804
+
1805
+ case 59:
1806
+ #line 413 "parser.ypp" // lalr1.cc:856
1807
+ { (yylhs.value.selectionList) = new std::vector<std::unique_ptr<Selection>>(); (yylhs.value.selectionList)->emplace_back((yystack_[0].value.selection)); }
1808
+ #line 1809 "parser.tab.cpp" // lalr1.cc:856
1809
+ break;
1810
+
1811
+ case 60:
1812
+ #line 414 "parser.ypp" // lalr1.cc:856
1813
+ { (yystack_[1].value.selectionList)->emplace_back((yystack_[0].value.selection)); (yylhs.value.selectionList) = (yystack_[1].value.selectionList); }
1814
+ #line 1815 "parser.tab.cpp" // lalr1.cc:856
1815
+ break;
1816
+
1817
+ case 61:
1818
+ #line 417 "parser.ypp" // lalr1.cc:856
1819
+ { (yylhs.value.selection) = static_cast<Selection *>((yystack_[0].value.field)); }
1820
+ #line 1821 "parser.tab.cpp" // lalr1.cc:856
1821
+ break;
1822
+
1823
+ case 62:
1824
+ #line 418 "parser.ypp" // lalr1.cc:856
1825
+ { (yylhs.value.selection) = static_cast<Selection *>((yystack_[0].value.fragmentSpread)); }
1826
+ #line 1827 "parser.tab.cpp" // lalr1.cc:856
1827
+ break;
1828
+
1829
+ case 63:
1830
+ #line 419 "parser.ypp" // lalr1.cc:856
1831
+ { (yylhs.value.selection) = static_cast<Selection *>((yystack_[0].value.inlineFragment)); }
1832
+ #line 1833 "parser.tab.cpp" // lalr1.cc:856
1833
+ break;
1834
+
1835
+ case 64:
1836
+ #line 422 "parser.ypp" // lalr1.cc:856
1837
+ { (yylhs.value.field) = new Field(yylhs.location, nullptr, (yystack_[3].value.name), (yystack_[2].value.argumentList), (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1838
+ #line 1839 "parser.tab.cpp" // lalr1.cc:856
1839
+ break;
1840
+
1841
+ case 65:
1842
+ #line 423 "parser.ypp" // lalr1.cc:856
1843
+ { (yylhs.value.field) = new Field(yylhs.location, (yystack_[5].value.name), (yystack_[3].value.name), (yystack_[2].value.argumentList), (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1844
+ #line 1845 "parser.tab.cpp" // lalr1.cc:856
1845
+ break;
1846
+
1847
+ case 66:
1848
+ #line 426 "parser.ypp" // lalr1.cc:856
1849
+ { (yylhs.value.argumentList) = (yystack_[1].value.argumentList); }
1850
+ #line 1851 "parser.tab.cpp" // lalr1.cc:856
1851
+ break;
1852
+
1853
+ case 67:
1854
+ #line 429 "parser.ypp" // lalr1.cc:856
1855
+ { (yylhs.value.argumentList) = nullptr; }
1856
+ #line 1857 "parser.tab.cpp" // lalr1.cc:856
1857
+ break;
1858
+
1859
+ case 68:
1860
+ #line 430 "parser.ypp" // lalr1.cc:856
1861
+ { (yylhs.value.argumentList) = (yystack_[0].value.argumentList); }
1862
+ #line 1863 "parser.tab.cpp" // lalr1.cc:856
1863
+ break;
1864
+
1865
+ case 69:
1866
+ #line 433 "parser.ypp" // lalr1.cc:856
1867
+ { (yylhs.value.argumentList) = new std::vector<std::unique_ptr<Argument>>(); (yylhs.value.argumentList)->emplace_back((yystack_[0].value.argument)); }
1868
+ #line 1869 "parser.tab.cpp" // lalr1.cc:856
1869
+ break;
1870
+
1871
+ case 70:
1872
+ #line 434 "parser.ypp" // lalr1.cc:856
1873
+ { (yystack_[1].value.argumentList)->emplace_back((yystack_[0].value.argument)); (yylhs.value.argumentList) = (yystack_[1].value.argumentList); }
1874
+ #line 1875 "parser.tab.cpp" // lalr1.cc:856
1875
+ break;
1876
+
1877
+ case 71:
1878
+ #line 437 "parser.ypp" // lalr1.cc:856
1879
+ { (yylhs.value.argument) = new Argument(yylhs.location, (yystack_[2].value.name), (yystack_[0].value.value)); }
1880
+ #line 1881 "parser.tab.cpp" // lalr1.cc:856
1881
+ break;
1882
+
1883
+ case 72:
1884
+ #line 442 "parser.ypp" // lalr1.cc:856
1885
+ { (yylhs.value.fragmentSpread) = new FragmentSpread(yylhs.location, (yystack_[1].value.name), (yystack_[0].value.directiveList)); }
1886
+ #line 1887 "parser.tab.cpp" // lalr1.cc:856
1887
+ break;
1888
+
1889
+ case 73:
1890
+ #line 446 "parser.ypp" // lalr1.cc:856
1891
+ { (yylhs.value.inlineFragment) = new InlineFragment(yylhs.location, (yystack_[2].value.namedType), (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1892
+ #line 1893 "parser.tab.cpp" // lalr1.cc:856
1893
+ break;
1894
+
1895
+ case 74:
1896
+ #line 447 "parser.ypp" // lalr1.cc:856
1897
+ { (yylhs.value.inlineFragment) = new InlineFragment(yylhs.location, nullptr, (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1898
+ #line 1899 "parser.tab.cpp" // lalr1.cc:856
1899
+ break;
1900
+
1901
+ case 75:
1902
+ #line 451 "parser.ypp" // lalr1.cc:856
1903
+ { (yylhs.value.fragmentDefinition) = new FragmentDefinition(yylhs.location, (yystack_[4].value.name), (yystack_[2].value.namedType), (yystack_[1].value.directiveList), (yystack_[0].value.selectionSet)); }
1904
+ #line 1905 "parser.tab.cpp" // lalr1.cc:856
1905
+ break;
1906
+
1907
+ case 77:
1908
+ #line 458 "parser.ypp" // lalr1.cc:856
1909
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.variable)); }
1910
+ #line 1911 "parser.tab.cpp" // lalr1.cc:856
1911
+ break;
1912
+
1913
+ case 78:
1914
+ #line 459 "parser.ypp" // lalr1.cc:856
1915
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.intValue)); }
1916
+ #line 1917 "parser.tab.cpp" // lalr1.cc:856
1917
+ break;
1918
+
1919
+ case 79:
1920
+ #line 460 "parser.ypp" // lalr1.cc:856
1921
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.floatValue)); }
1922
+ #line 1923 "parser.tab.cpp" // lalr1.cc:856
1923
+ break;
1924
+
1925
+ case 80:
1926
+ #line 461 "parser.ypp" // lalr1.cc:856
1927
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.stringValue)); }
1928
+ #line 1929 "parser.tab.cpp" // lalr1.cc:856
1929
+ break;
1930
+
1931
+ case 81:
1932
+ #line 462 "parser.ypp" // lalr1.cc:856
1933
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.booleanValue)); }
1934
+ #line 1935 "parser.tab.cpp" // lalr1.cc:856
1935
+ break;
1936
+
1937
+ case 82:
1938
+ #line 463 "parser.ypp" // lalr1.cc:856
1939
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.nullValue)); }
1940
+ #line 1941 "parser.tab.cpp" // lalr1.cc:856
1941
+ break;
1942
+
1943
+ case 83:
1944
+ #line 464 "parser.ypp" // lalr1.cc:856
1945
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.enumValue)); }
1946
+ #line 1947 "parser.tab.cpp" // lalr1.cc:856
1947
+ break;
1948
+
1949
+ case 84:
1950
+ #line 465 "parser.ypp" // lalr1.cc:856
1951
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.arrayValue)); }
1952
+ #line 1953 "parser.tab.cpp" // lalr1.cc:856
1953
+ break;
1954
+
1955
+ case 85:
1956
+ #line 466 "parser.ypp" // lalr1.cc:856
1957
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.objectValue)); }
1958
+ #line 1959 "parser.tab.cpp" // lalr1.cc:856
1959
+ break;
1960
+
1961
+ case 86:
1962
+ #line 469 "parser.ypp" // lalr1.cc:856
1963
+ { (yylhs.value.intValue) = new IntValue(yylhs.location, strdup((yystack_[0].value.str))); }
1964
+ #line 1965 "parser.tab.cpp" // lalr1.cc:856
1965
+ break;
1966
+
1967
+ case 87:
1968
+ #line 472 "parser.ypp" // lalr1.cc:856
1969
+ { (yylhs.value.floatValue) = new FloatValue(yylhs.location, strdup((yystack_[0].value.str))); }
1970
+ #line 1971 "parser.tab.cpp" // lalr1.cc:856
1971
+ break;
1972
+
1973
+ case 88:
1974
+ #line 475 "parser.ypp" // lalr1.cc:856
1975
+ { (yylhs.value.stringValue) = new StringValue(yylhs.location, strdup((yystack_[0].value.str))); }
1976
+ #line 1977 "parser.tab.cpp" // lalr1.cc:856
1977
+ break;
1978
+
1979
+ case 89:
1980
+ #line 478 "parser.ypp" // lalr1.cc:856
1981
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.intValue)); }
1982
+ #line 1983 "parser.tab.cpp" // lalr1.cc:856
1983
+ break;
1984
+
1985
+ case 90:
1986
+ #line 479 "parser.ypp" // lalr1.cc:856
1987
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.floatValue)); }
1988
+ #line 1989 "parser.tab.cpp" // lalr1.cc:856
1989
+ break;
1990
+
1991
+ case 91:
1992
+ #line 480 "parser.ypp" // lalr1.cc:856
1993
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.stringValue)); }
1994
+ #line 1995 "parser.tab.cpp" // lalr1.cc:856
1995
+ break;
1996
+
1997
+ case 92:
1998
+ #line 481 "parser.ypp" // lalr1.cc:856
1999
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.booleanValue)); }
2000
+ #line 2001 "parser.tab.cpp" // lalr1.cc:856
2001
+ break;
2002
+
2003
+ case 93:
2004
+ #line 482 "parser.ypp" // lalr1.cc:856
2005
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.nullValue)); }
2006
+ #line 2007 "parser.tab.cpp" // lalr1.cc:856
2007
+ break;
2008
+
2009
+ case 94:
2010
+ #line 483 "parser.ypp" // lalr1.cc:856
2011
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.enumValue)); }
2012
+ #line 2013 "parser.tab.cpp" // lalr1.cc:856
2013
+ break;
2014
+
2015
+ case 95:
2016
+ #line 484 "parser.ypp" // lalr1.cc:856
2017
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.arrayValue)); }
2018
+ #line 2019 "parser.tab.cpp" // lalr1.cc:856
2019
+ break;
2020
+
2021
+ case 96:
2022
+ #line 485 "parser.ypp" // lalr1.cc:856
2023
+ { (yylhs.value.value) = static_cast<Value *>((yystack_[0].value.objectValue)); }
2024
+ #line 2025 "parser.tab.cpp" // lalr1.cc:856
2025
+ break;
2026
+
2027
+ case 97:
2028
+ #line 488 "parser.ypp" // lalr1.cc:856
2029
+ { (yylhs.value.booleanValue) = new BooleanValue(yylhs.location, true); }
2030
+ #line 2031 "parser.tab.cpp" // lalr1.cc:856
2031
+ break;
2032
+
2033
+ case 98:
2034
+ #line 489 "parser.ypp" // lalr1.cc:856
2035
+ { (yylhs.value.booleanValue) = new BooleanValue(yylhs.location, false); }
2036
+ #line 2037 "parser.tab.cpp" // lalr1.cc:856
2037
+ break;
2038
+
2039
+ case 99:
2040
+ #line 492 "parser.ypp" // lalr1.cc:856
2041
+ { (yylhs.value.nullValue) = new NullValue(yylhs.location); }
2042
+ #line 2043 "parser.tab.cpp" // lalr1.cc:856
2043
+ break;
2044
+
2045
+ case 100:
2046
+ #line 495 "parser.ypp" // lalr1.cc:856
2047
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2048
+ #line 2049 "parser.tab.cpp" // lalr1.cc:856
2049
+ break;
2050
+
2051
+ case 101:
2052
+ #line 496 "parser.ypp" // lalr1.cc:856
2053
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2054
+ #line 2055 "parser.tab.cpp" // lalr1.cc:856
2055
+ break;
2056
+
2057
+ case 102:
2058
+ #line 497 "parser.ypp" // lalr1.cc:856
2059
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2060
+ #line 2061 "parser.tab.cpp" // lalr1.cc:856
2061
+ break;
2062
+
2063
+ case 103:
2064
+ #line 498 "parser.ypp" // lalr1.cc:856
2065
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2066
+ #line 2067 "parser.tab.cpp" // lalr1.cc:856
2067
+ break;
2068
+
2069
+ case 104:
2070
+ #line 499 "parser.ypp" // lalr1.cc:856
2071
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2072
+ #line 2073 "parser.tab.cpp" // lalr1.cc:856
2073
+ break;
2074
+
2075
+ case 105:
2076
+ #line 500 "parser.ypp" // lalr1.cc:856
2077
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2078
+ #line 2079 "parser.tab.cpp" // lalr1.cc:856
2079
+ break;
2080
+
2081
+ case 106:
2082
+ #line 501 "parser.ypp" // lalr1.cc:856
2083
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2084
+ #line 2085 "parser.tab.cpp" // lalr1.cc:856
2085
+ break;
2086
+
2087
+ case 107:
2088
+ #line 502 "parser.ypp" // lalr1.cc:856
2089
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2090
+ #line 2091 "parser.tab.cpp" // lalr1.cc:856
2091
+ break;
2092
+
2093
+ case 108:
2094
+ #line 503 "parser.ypp" // lalr1.cc:856
2095
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2096
+ #line 2097 "parser.tab.cpp" // lalr1.cc:856
2097
+ break;
2098
+
2099
+ case 109:
2100
+ #line 504 "parser.ypp" // lalr1.cc:856
2101
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2102
+ #line 2103 "parser.tab.cpp" // lalr1.cc:856
2103
+ break;
2104
+
2105
+ case 110:
2106
+ #line 505 "parser.ypp" // lalr1.cc:856
2107
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2108
+ #line 2109 "parser.tab.cpp" // lalr1.cc:856
2109
+ break;
2110
+
2111
+ case 111:
2112
+ #line 506 "parser.ypp" // lalr1.cc:856
2113
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2114
+ #line 2115 "parser.tab.cpp" // lalr1.cc:856
2115
+ break;
2116
+
2117
+ case 112:
2118
+ #line 507 "parser.ypp" // lalr1.cc:856
2119
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2120
+ #line 2121 "parser.tab.cpp" // lalr1.cc:856
2121
+ break;
2122
+
2123
+ case 113:
2124
+ #line 508 "parser.ypp" // lalr1.cc:856
2125
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2126
+ #line 2127 "parser.tab.cpp" // lalr1.cc:856
2127
+ break;
2128
+
2129
+ case 114:
2130
+ #line 509 "parser.ypp" // lalr1.cc:856
2131
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2132
+ #line 2133 "parser.tab.cpp" // lalr1.cc:856
2133
+ break;
2134
+
2135
+ case 115:
2136
+ #line 510 "parser.ypp" // lalr1.cc:856
2137
+ { (yylhs.value.enumValue) = new EnumValue(yylhs.location, strdup((yystack_[0].value.str))); }
2138
+ #line 2139 "parser.tab.cpp" // lalr1.cc:856
2139
+ break;
2140
+
2141
+ case 116:
2142
+ #line 517 "parser.ypp" // lalr1.cc:856
2143
+ { (yylhs.value.arrayValue) = new ListValue(yylhs.location, new std::vector<std::unique_ptr<Value>>()); }
2144
+ #line 2145 "parser.tab.cpp" // lalr1.cc:856
2145
+ break;
2146
+
2147
+ case 117:
2148
+ #line 518 "parser.ypp" // lalr1.cc:856
2149
+ { (yylhs.value.arrayValue) = new ListValue(yylhs.location, (yystack_[1].value.valueList)); }
2150
+ #line 2151 "parser.tab.cpp" // lalr1.cc:856
2151
+ break;
2152
+
2153
+ case 118:
2154
+ #line 521 "parser.ypp" // lalr1.cc:856
2155
+ { (yylhs.value.valueList) = new std::vector<std::unique_ptr<Value>>(); (yylhs.value.valueList)->emplace_back((yystack_[0].value.value)); }
2156
+ #line 2157 "parser.tab.cpp" // lalr1.cc:856
2157
+ break;
2158
+
2159
+ case 119:
2160
+ #line 522 "parser.ypp" // lalr1.cc:856
2161
+ { (yystack_[1].value.valueList)->emplace_back((yystack_[0].value.value)); (yylhs.value.valueList) = (yystack_[1].value.valueList); }
2162
+ #line 2163 "parser.tab.cpp" // lalr1.cc:856
2163
+ break;
2164
+
2165
+ case 120:
2166
+ #line 526 "parser.ypp" // lalr1.cc:856
2167
+ { (yylhs.value.arrayValue) = new ListValue(yylhs.location, new std::vector<std::unique_ptr<Value>>()); }
2168
+ #line 2169 "parser.tab.cpp" // lalr1.cc:856
2169
+ break;
2170
+
2171
+ case 121:
2172
+ #line 527 "parser.ypp" // lalr1.cc:856
2173
+ { (yylhs.value.arrayValue) = new ListValue(yylhs.location, (yystack_[1].value.valueList)); }
2174
+ #line 2175 "parser.tab.cpp" // lalr1.cc:856
2175
+ break;
2176
+
2177
+ case 122:
2178
+ #line 531 "parser.ypp" // lalr1.cc:856
2179
+ { (yylhs.value.valueList) = new std::vector<std::unique_ptr<Value>>(); (yylhs.value.valueList)->emplace_back((yystack_[0].value.value)); }
2180
+ #line 2181 "parser.tab.cpp" // lalr1.cc:856
2181
+ break;
2182
+
2183
+ case 123:
2184
+ #line 532 "parser.ypp" // lalr1.cc:856
2185
+ { (yystack_[1].value.valueList)->emplace_back((yystack_[0].value.value)); (yylhs.value.valueList) = (yystack_[1].value.valueList); }
2186
+ #line 2187 "parser.tab.cpp" // lalr1.cc:856
2187
+ break;
2188
+
2189
+ case 124:
2190
+ #line 537 "parser.ypp" // lalr1.cc:856
2191
+ { (yylhs.value.objectValue) = new ObjectValue(yylhs.location, new std::vector<std::unique_ptr<ObjectField>>()); }
2192
+ #line 2193 "parser.tab.cpp" // lalr1.cc:856
2193
+ break;
2194
+
2195
+ case 125:
2196
+ #line 538 "parser.ypp" // lalr1.cc:856
2197
+ { (yylhs.value.objectValue) = new ObjectValue(yylhs.location, (yystack_[1].value.objectFieldList)); }
2198
+ #line 2199 "parser.tab.cpp" // lalr1.cc:856
2199
+ break;
2200
+
2201
+ case 126:
2202
+ #line 542 "parser.ypp" // lalr1.cc:856
2203
+ { (yylhs.value.objectFieldList) = new std::vector<std::unique_ptr<ObjectField>>(); (yylhs.value.objectFieldList)->emplace_back((yystack_[0].value.objectField)); }
2204
+ #line 2205 "parser.tab.cpp" // lalr1.cc:856
2205
+ break;
2206
+
2207
+ case 127:
2208
+ #line 543 "parser.ypp" // lalr1.cc:856
2209
+ { (yystack_[1].value.objectFieldList)->emplace_back((yystack_[0].value.objectField)); (yylhs.value.objectFieldList) = (yystack_[1].value.objectFieldList); }
2210
+ #line 2211 "parser.tab.cpp" // lalr1.cc:856
2211
+ break;
2212
+
2213
+ case 128:
2214
+ #line 546 "parser.ypp" // lalr1.cc:856
2215
+ { (yylhs.value.objectField) = new ObjectField(yylhs.location, (yystack_[2].value.name), (yystack_[0].value.value)); }
2216
+ #line 2217 "parser.tab.cpp" // lalr1.cc:856
2217
+ break;
2218
+
2219
+ case 129:
2220
+ #line 550 "parser.ypp" // lalr1.cc:856
2221
+ { (yylhs.value.objectValue) = new ObjectValue(yylhs.location, new std::vector<std::unique_ptr<ObjectField>>()); }
2222
+ #line 2223 "parser.tab.cpp" // lalr1.cc:856
2223
+ break;
2224
+
2225
+ case 130:
2226
+ #line 551 "parser.ypp" // lalr1.cc:856
2227
+ { (yylhs.value.objectValue) = new ObjectValue(yylhs.location, (yystack_[1].value.objectFieldList)); }
2228
+ #line 2229 "parser.tab.cpp" // lalr1.cc:856
2229
+ break;
2230
+
2231
+ case 131:
2232
+ #line 555 "parser.ypp" // lalr1.cc:856
2233
+ { (yylhs.value.objectFieldList) = new std::vector<std::unique_ptr<ObjectField>>(); (yylhs.value.objectFieldList)->emplace_back((yystack_[0].value.objectField)); }
2234
+ #line 2235 "parser.tab.cpp" // lalr1.cc:856
2235
+ break;
2236
+
2237
+ case 132:
2238
+ #line 556 "parser.ypp" // lalr1.cc:856
2239
+ { (yystack_[1].value.objectFieldList)->emplace_back((yystack_[0].value.objectField)); (yylhs.value.objectFieldList) = (yystack_[1].value.objectFieldList); }
2240
+ #line 2241 "parser.tab.cpp" // lalr1.cc:856
2241
+ break;
2242
+
2243
+ case 133:
2244
+ #line 559 "parser.ypp" // lalr1.cc:856
2245
+ { (yylhs.value.objectField) = new ObjectField(yylhs.location, (yystack_[2].value.name), (yystack_[0].value.value)); }
2246
+ #line 2247 "parser.tab.cpp" // lalr1.cc:856
2247
+ break;
2248
+
2249
+ case 135:
2250
+ #line 567 "parser.ypp" // lalr1.cc:856
2251
+ { (yylhs.value.directiveList) = nullptr; }
2252
+ #line 2253 "parser.tab.cpp" // lalr1.cc:856
2253
+ break;
2254
+
2255
+ case 137:
2256
+ #line 571 "parser.ypp" // lalr1.cc:856
2257
+ { (yylhs.value.directiveList) = new std::vector<std::unique_ptr<Directive>>(); (yylhs.value.directiveList)->emplace_back((yystack_[0].value.directive)); }
2258
+ #line 2259 "parser.tab.cpp" // lalr1.cc:856
2259
+ break;
2260
+
2261
+ case 138:
2262
+ #line 572 "parser.ypp" // lalr1.cc:856
2263
+ { (yystack_[1].value.directiveList)->emplace_back((yystack_[0].value.directive)); (yylhs.value.directiveList) = (yystack_[1].value.directiveList); }
2264
+ #line 2265 "parser.tab.cpp" // lalr1.cc:856
2265
+ break;
2266
+
2267
+ case 139:
2268
+ #line 575 "parser.ypp" // lalr1.cc:856
2269
+ { (yylhs.value.directive) = new Directive(yylhs.location, (yystack_[1].value.name), (yystack_[0].value.argumentList)); }
2270
+ #line 2271 "parser.tab.cpp" // lalr1.cc:856
2271
+ break;
2272
+
2273
+ case 140:
2274
+ #line 580 "parser.ypp" // lalr1.cc:856
2275
+ { (yylhs.value.type) = static_cast<Type *>((yystack_[0].value.namedType)); }
2276
+ #line 2277 "parser.tab.cpp" // lalr1.cc:856
2277
+ break;
2278
+
2279
+ case 141:
2280
+ #line 581 "parser.ypp" // lalr1.cc:856
2281
+ { (yylhs.value.type) = static_cast<Type *>((yystack_[0].value.listType)); }
2282
+ #line 2283 "parser.tab.cpp" // lalr1.cc:856
2283
+ break;
2284
+
2285
+ case 142:
2286
+ #line 582 "parser.ypp" // lalr1.cc:856
2287
+ { (yylhs.value.type) = static_cast<Type *>((yystack_[0].value.nonNullType)); }
2288
+ #line 2289 "parser.tab.cpp" // lalr1.cc:856
2289
+ break;
2290
+
2291
+ case 143:
2292
+ #line 585 "parser.ypp" // lalr1.cc:856
2293
+ { (yylhs.value.namedType) = new NamedType(yylhs.location, (yystack_[0].value.name)); }
2294
+ #line 2295 "parser.tab.cpp" // lalr1.cc:856
2295
+ break;
2296
+
2297
+ case 144:
2298
+ #line 588 "parser.ypp" // lalr1.cc:856
2299
+ { (yylhs.value.listType) = new ListType(yylhs.location, (yystack_[1].value.type)); }
2300
+ #line 2301 "parser.tab.cpp" // lalr1.cc:856
2301
+ break;
2302
+
2303
+ case 145:
2304
+ #line 591 "parser.ypp" // lalr1.cc:856
2305
+ { (yylhs.value.nonNullType) = new NonNullType(yylhs.location, (yystack_[1].value.namedType)); }
2306
+ #line 2307 "parser.tab.cpp" // lalr1.cc:856
2307
+ break;
2308
+
2309
+ case 146:
2310
+ #line 592 "parser.ypp" // lalr1.cc:856
2311
+ { (yylhs.value.nonNullType) = new NonNullType(yylhs.location, (yystack_[1].value.listType)); }
2312
+ #line 2313 "parser.tab.cpp" // lalr1.cc:856
2313
+ break;
2314
+
2315
+ case 147:
2316
+ #line 597 "parser.ypp" // lalr1.cc:856
2317
+ { (yylhs.value.schemaDefinition) = new SchemaDefinition(yylhs.location, (yystack_[3].value.directiveList), (yystack_[1].value.operationTypeDefinitionList)); }
2318
+ #line 2319 "parser.tab.cpp" // lalr1.cc:856
2319
+ break;
2320
+
2321
+ case 148:
2322
+ #line 601 "parser.ypp" // lalr1.cc:856
2323
+ { (yylhs.value.operationTypeDefinitionList) = new std::vector<std::unique_ptr<OperationTypeDefinition>>(); (yylhs.value.operationTypeDefinitionList)->emplace_back((yystack_[0].value.operationTypeDefinition)); }
2324
+ #line 2325 "parser.tab.cpp" // lalr1.cc:856
2325
+ break;
2326
+
2327
+ case 149:
2328
+ #line 602 "parser.ypp" // lalr1.cc:856
2329
+ { (yystack_[1].value.operationTypeDefinitionList)->emplace_back((yystack_[0].value.operationTypeDefinition)); (yylhs.value.operationTypeDefinitionList) = (yystack_[1].value.operationTypeDefinitionList); }
2330
+ #line 2331 "parser.tab.cpp" // lalr1.cc:856
2331
+ break;
2332
+
2333
+ case 150:
2334
+ #line 606 "parser.ypp" // lalr1.cc:856
2335
+ { (yylhs.value.operationTypeDefinition) = new OperationTypeDefinition(yylhs.location, (yystack_[2].value.heapStr), (yystack_[0].value.namedType)); }
2336
+ #line 2337 "parser.tab.cpp" // lalr1.cc:856
2337
+ break;
2338
+
2339
+ case 151:
2340
+ #line 609 "parser.ypp" // lalr1.cc:856
2341
+ { (yylhs.value.scalarTypeDefinition) = new ScalarTypeDefinition(yylhs.location, (yystack_[1].value.name), (yystack_[0].value.directiveList)); }
2342
+ #line 2343 "parser.tab.cpp" // lalr1.cc:856
2343
+ break;
2344
+
2345
+ case 152:
2346
+ #line 612 "parser.ypp" // lalr1.cc:856
2347
+ { (yylhs.value.objectTypeDefinition) = new ObjectTypeDefinition(yylhs.location, (yystack_[5].value.name), (yystack_[4].value.typeNameList), (yystack_[3].value.directiveList), (yystack_[1].value.fieldDefinitionList)); }
2348
+ #line 2349 "parser.tab.cpp" // lalr1.cc:856
2349
+ break;
2350
+
2351
+ case 153:
2352
+ #line 615 "parser.ypp" // lalr1.cc:856
2353
+ { (yylhs.value.typeNameList) = nullptr; }
2354
+ #line 2355 "parser.tab.cpp" // lalr1.cc:856
2355
+ break;
2356
+
2357
+ case 154:
2358
+ #line 616 "parser.ypp" // lalr1.cc:856
2359
+ { (yylhs.value.typeNameList) = (yystack_[0].value.typeNameList); }
2360
+ #line 2361 "parser.tab.cpp" // lalr1.cc:856
2361
+ break;
2362
+
2363
+ case 155:
2364
+ #line 619 "parser.ypp" // lalr1.cc:856
2365
+ { (yylhs.value.typeNameList) = new std::vector<std::unique_ptr<NamedType>>(); (yylhs.value.typeNameList)->emplace_back((yystack_[0].value.namedType)); }
2366
+ #line 2367 "parser.tab.cpp" // lalr1.cc:856
2367
+ break;
2368
+
2369
+ case 156:
2370
+ #line 620 "parser.ypp" // lalr1.cc:856
2371
+ { (yystack_[1].value.typeNameList)->emplace_back((yystack_[0].value.namedType)); (yylhs.value.typeNameList) = (yystack_[1].value.typeNameList); }
2372
+ #line 2373 "parser.tab.cpp" // lalr1.cc:856
2373
+ break;
2374
+
2375
+ case 157:
2376
+ #line 623 "parser.ypp" // lalr1.cc:856
2377
+ { (yylhs.value.fieldDefinition) = new FieldDefinition(yylhs.location, (yystack_[4].value.name), (yystack_[3].value.inputValueDefinitionList), (yystack_[1].value.type), (yystack_[0].value.directiveList)); }
2378
+ #line 2379 "parser.tab.cpp" // lalr1.cc:856
2379
+ break;
2380
+
2381
+ case 158:
2382
+ #line 627 "parser.ypp" // lalr1.cc:856
2383
+ { (yylhs.value.fieldDefinitionList) = new std::vector<std::unique_ptr<FieldDefinition>>(); (yylhs.value.fieldDefinitionList)->emplace_back((yystack_[0].value.fieldDefinition)); }
2384
+ #line 2385 "parser.tab.cpp" // lalr1.cc:856
2385
+ break;
2386
+
2387
+ case 159:
2388
+ #line 628 "parser.ypp" // lalr1.cc:856
2389
+ { (yystack_[1].value.fieldDefinitionList)->emplace_back((yystack_[0].value.fieldDefinition)); (yylhs.value.fieldDefinitionList) = (yystack_[1].value.fieldDefinitionList); }
2390
+ #line 2391 "parser.tab.cpp" // lalr1.cc:856
2391
+ break;
2392
+
2393
+ case 160:
2394
+ #line 631 "parser.ypp" // lalr1.cc:856
2395
+ { (yylhs.value.inputValueDefinitionList) = nullptr; }
2396
+ #line 2397 "parser.tab.cpp" // lalr1.cc:856
2397
+ break;
2398
+
2399
+ case 161:
2400
+ #line 632 "parser.ypp" // lalr1.cc:856
2401
+ { (yylhs.value.inputValueDefinitionList) = (yystack_[0].value.inputValueDefinitionList); }
2402
+ #line 2403 "parser.tab.cpp" // lalr1.cc:856
2403
+ break;
2404
+
2405
+ case 162:
2406
+ #line 635 "parser.ypp" // lalr1.cc:856
2407
+ { (yylhs.value.inputValueDefinitionList) = (yystack_[1].value.inputValueDefinitionList); }
2408
+ #line 2409 "parser.tab.cpp" // lalr1.cc:856
2409
+ break;
2410
+
2411
+ case 163:
2412
+ #line 638 "parser.ypp" // lalr1.cc:856
2413
+ { (yylhs.value.inputValueDefinitionList) = new std::vector<std::unique_ptr<InputValueDefinition>>(); (yylhs.value.inputValueDefinitionList)->emplace_back((yystack_[0].value.inputValueDefinition)); }
2414
+ #line 2415 "parser.tab.cpp" // lalr1.cc:856
2415
+ break;
2416
+
2417
+ case 164:
2418
+ #line 639 "parser.ypp" // lalr1.cc:856
2419
+ { (yystack_[1].value.inputValueDefinitionList)->emplace_back((yystack_[0].value.inputValueDefinition)); (yylhs.value.inputValueDefinitionList) = (yystack_[1].value.inputValueDefinitionList); }
2420
+ #line 2421 "parser.tab.cpp" // lalr1.cc:856
2421
+ break;
2422
+
2423
+ case 165:
2424
+ #line 642 "parser.ypp" // lalr1.cc:856
2425
+ { (yylhs.value.inputValueDefinition) = new InputValueDefinition(yylhs.location, (yystack_[4].value.name), (yystack_[2].value.type), (yystack_[1].value.value), (yystack_[0].value.directiveList)); }
2426
+ #line 2427 "parser.tab.cpp" // lalr1.cc:856
2427
+ break;
2428
+
2429
+ case 166:
2430
+ #line 644 "parser.ypp" // lalr1.cc:856
2431
+ { (yylhs.value.interfaceTypeDefinition) = new InterfaceTypeDefinition(yylhs.location, (yystack_[4].value.name), (yystack_[3].value.directiveList), (yystack_[1].value.fieldDefinitionList)); }
2432
+ #line 2433 "parser.tab.cpp" // lalr1.cc:856
2433
+ break;
2434
+
2435
+ case 167:
2436
+ #line 647 "parser.ypp" // lalr1.cc:856
2437
+ { (yylhs.value.unionTypeDefinition) = new UnionTypeDefinition(yylhs.location, (yystack_[3].value.name), (yystack_[2].value.directiveList), (yystack_[0].value.typeNameList)); }
2438
+ #line 2439 "parser.tab.cpp" // lalr1.cc:856
2439
+ break;
2440
+
2441
+ case 168:
2442
+ #line 650 "parser.ypp" // lalr1.cc:856
2443
+ { (yylhs.value.typeNameList) = new std::vector<std::unique_ptr<NamedType>>(); (yylhs.value.typeNameList)->emplace_back((yystack_[0].value.namedType)); }
2444
+ #line 2445 "parser.tab.cpp" // lalr1.cc:856
2445
+ break;
2446
+
2447
+ case 169:
2448
+ #line 651 "parser.ypp" // lalr1.cc:856
2449
+ { (yystack_[2].value.typeNameList)->emplace_back((yystack_[0].value.namedType)); (yylhs.value.typeNameList) = (yystack_[2].value.typeNameList); }
2450
+ #line 2451 "parser.tab.cpp" // lalr1.cc:856
2451
+ break;
2452
+
2453
+ case 170:
2454
+ #line 654 "parser.ypp" // lalr1.cc:856
2455
+ { (yylhs.value.enumTypeDefinition) = new EnumTypeDefinition(yylhs.location, (yystack_[4].value.name), (yystack_[3].value.directiveList), (yystack_[1].value.enumValueDefinitionList)); }
2456
+ #line 2457 "parser.tab.cpp" // lalr1.cc:856
2457
+ break;
2458
+
2459
+ case 171:
2460
+ #line 657 "parser.ypp" // lalr1.cc:856
2461
+ { (yylhs.value.enumValueDefinition) = new EnumValueDefinition(yylhs.location, (yystack_[1].value.name), (yystack_[0].value.directiveList)); }
2462
+ #line 2463 "parser.tab.cpp" // lalr1.cc:856
2463
+ break;
2464
+
2465
+ case 172:
2466
+ #line 661 "parser.ypp" // lalr1.cc:856
2467
+ { (yylhs.value.enumValueDefinitionList) = new std::vector<std::unique_ptr<EnumValueDefinition>>(); (yylhs.value.enumValueDefinitionList)->emplace_back((yystack_[0].value.enumValueDefinition)); }
2468
+ #line 2469 "parser.tab.cpp" // lalr1.cc:856
2469
+ break;
2470
+
2471
+ case 173:
2472
+ #line 662 "parser.ypp" // lalr1.cc:856
2473
+ { (yystack_[1].value.enumValueDefinitionList)->emplace_back((yystack_[0].value.enumValueDefinition)); (yylhs.value.enumValueDefinitionList) = (yystack_[1].value.enumValueDefinitionList); }
2474
+ #line 2475 "parser.tab.cpp" // lalr1.cc:856
2475
+ break;
2476
+
2477
+ case 174:
2478
+ #line 665 "parser.ypp" // lalr1.cc:856
2479
+ { (yylhs.value.inputObjectTypeDefinition) = new InputObjectTypeDefinition(yylhs.location, (yystack_[4].value.name), (yystack_[3].value.directiveList), (yystack_[1].value.inputValueDefinitionList)); }
2480
+ #line 2481 "parser.tab.cpp" // lalr1.cc:856
2481
+ break;
2482
+
2483
+ case 175:
2484
+ #line 668 "parser.ypp" // lalr1.cc:856
2485
+ { (yylhs.value.typeExtensionDefinition) = new TypeExtensionDefinition(yylhs.location, (yystack_[0].value.objectTypeDefinition)); }
2486
+ #line 2487 "parser.tab.cpp" // lalr1.cc:856
2487
+ break;
2488
+
2489
+ case 176:
2490
+ #line 671 "parser.ypp" // lalr1.cc:856
2491
+ { (yylhs.value.directiveDefinition) = new DirectiveDefinition(yylhs.location, (yystack_[3].value.name), (yystack_[2].value.inputValueDefinitionList), (yystack_[0].value.nameList)); }
2492
+ #line 2493 "parser.tab.cpp" // lalr1.cc:856
2493
+ break;
2494
+
2495
+ case 177:
2496
+ #line 675 "parser.ypp" // lalr1.cc:856
2497
+ { (yylhs.value.nameList) = new std::vector<std::unique_ptr<Name>>(); (yylhs.value.nameList)->emplace_back((yystack_[0].value.name)); }
2498
+ #line 2499 "parser.tab.cpp" // lalr1.cc:856
2499
+ break;
2500
+
2501
+ case 178:
2502
+ #line 676 "parser.ypp" // lalr1.cc:856
2503
+ { (yystack_[2].value.nameList)->emplace_back((yystack_[0].value.name)); (yylhs.value.nameList) = (yystack_[2].value.nameList); }
2504
+ #line 2505 "parser.tab.cpp" // lalr1.cc:856
2505
+ break;
2506
+
2507
+
2508
+ #line 2509 "parser.tab.cpp" // lalr1.cc:856
2509
+ default:
2510
+ break;
2511
+ }
2512
+ }
2513
+ catch (const syntax_error& yyexc)
2514
+ {
2515
+ error (yyexc);
2516
+ YYERROR;
2517
+ }
2518
+ YY_SYMBOL_PRINT ("-> $$ =", yylhs);
2519
+ yypop_ (yylen);
2520
+ yylen = 0;
2521
+ YY_STACK_PRINT ();
2522
+
2523
+ // Shift the result of the reduction.
2524
+ yypush_ (YY_NULLPTR, yylhs);
2525
+ }
2526
+ goto yynewstate;
2527
+
2528
+ /*--------------------------------------.
2529
+ | yyerrlab -- here on detecting error. |
2530
+ `--------------------------------------*/
2531
+ yyerrlab:
2532
+ // If not already recovering from an error, report this error.
2533
+ if (!yyerrstatus_)
2534
+ {
2535
+ ++yynerrs_;
2536
+ error (yyla.location, yysyntax_error_ (yystack_[0].state, yyla));
2537
+ }
2538
+
2539
+
2540
+ yyerror_range[1].location = yyla.location;
2541
+ if (yyerrstatus_ == 3)
2542
+ {
2543
+ /* If just tried and failed to reuse lookahead token after an
2544
+ error, discard it. */
2545
+
2546
+ // Return failure if at end of input.
2547
+ if (yyla.type_get () == yyeof_)
2548
+ YYABORT;
2549
+ else if (!yyla.empty ())
2550
+ {
2551
+ yy_destroy_ ("Error: discarding", yyla);
2552
+ yyla.clear ();
2553
+ }
2554
+ }
2555
+
2556
+ // Else will try to reuse lookahead token after shifting the error token.
2557
+ goto yyerrlab1;
2558
+
2559
+
2560
+ /*---------------------------------------------------.
2561
+ | yyerrorlab -- error raised explicitly by YYERROR. |
2562
+ `---------------------------------------------------*/
2563
+ yyerrorlab:
2564
+
2565
+ /* Pacify compilers like GCC when the user code never invokes
2566
+ YYERROR and the label yyerrorlab therefore never appears in user
2567
+ code. */
2568
+ if (false)
2569
+ goto yyerrorlab;
2570
+ /* Do not reclaim the symbols of the rule whose action triggered
2571
+ this YYERROR. */
2572
+ yypop_ (yylen);
2573
+ yylen = 0;
2574
+ goto yyerrlab1;
2575
+
2576
+ /*-------------------------------------------------------------.
2577
+ | yyerrlab1 -- common code for both syntax error and YYERROR. |
2578
+ `-------------------------------------------------------------*/
2579
+ yyerrlab1:
2580
+ yyerrstatus_ = 3; // Each real token shifted decrements this.
2581
+ {
2582
+ stack_symbol_type error_token;
2583
+ for (;;)
2584
+ {
2585
+ yyn = yypact_[yystack_[0].state];
2586
+ if (!yy_pact_value_is_default_ (yyn))
2587
+ {
2588
+ yyn += yyterror_;
2589
+ if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
2590
+ {
2591
+ yyn = yytable_[yyn];
2592
+ if (0 < yyn)
2593
+ break;
2594
+ }
2595
+ }
2596
+
2597
+ // Pop the current state because it cannot handle the error token.
2598
+ if (yystack_.size () == 1)
2599
+ YYABORT;
2600
+
2601
+ yyerror_range[1].location = yystack_[0].location;
2602
+ yy_destroy_ ("Error: popping", yystack_[0]);
2603
+ yypop_ ();
2604
+ YY_STACK_PRINT ();
2605
+ }
2606
+
2607
+ yyerror_range[2].location = yyla.location;
2608
+ YYLLOC_DEFAULT (error_token.location, yyerror_range, 2);
2609
+
2610
+ // Shift the error token.
2611
+ error_token.state = yyn;
2612
+ yypush_ ("Shifting", error_token);
2613
+ }
2614
+ goto yynewstate;
2615
+
2616
+ // Accept.
2617
+ yyacceptlab:
2618
+ yyresult = 0;
2619
+ goto yyreturn;
2620
+
2621
+ // Abort.
2622
+ yyabortlab:
2623
+ yyresult = 1;
2624
+ goto yyreturn;
2625
+
2626
+ yyreturn:
2627
+ if (!yyla.empty ())
2628
+ yy_destroy_ ("Cleanup: discarding lookahead", yyla);
2629
+
2630
+ /* Do not reclaim the symbols of the rule whose action triggered
2631
+ this YYABORT or YYACCEPT. */
2632
+ yypop_ (yylen);
2633
+ while (1 < yystack_.size ())
2634
+ {
2635
+ yy_destroy_ ("Cleanup: popping", yystack_[0]);
2636
+ yypop_ ();
2637
+ }
2638
+
2639
+ return yyresult;
2640
+ }
2641
+ catch (...)
2642
+ {
2643
+ YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
2644
+ // Do not try to display the values of the reclaimed symbols,
2645
+ // as their printer might throw an exception.
2646
+ if (!yyla.empty ())
2647
+ yy_destroy_ (YY_NULLPTR, yyla);
2648
+
2649
+ while (1 < yystack_.size ())
2650
+ {
2651
+ yy_destroy_ (YY_NULLPTR, yystack_[0]);
2652
+ yypop_ ();
2653
+ }
2654
+ throw;
2655
+ }
2656
+ }
2657
+
2658
+ void
2659
+ GraphQLParserImpl::error (const syntax_error& yyexc)
2660
+ {
2661
+ error (yyexc.location, yyexc.what ());
2662
+ }
2663
+
2664
+ // Generate an error message.
2665
+ std::string
2666
+ GraphQLParserImpl::yysyntax_error_ (state_type yystate, const symbol_type& yyla) const
2667
+ {
2668
+ // Number of reported tokens (one for the "unexpected", one per
2669
+ // "expected").
2670
+ size_t yycount = 0;
2671
+ // Its maximum.
2672
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2673
+ // Arguments of yyformat.
2674
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2675
+
2676
+ /* There are many possibilities here to consider:
2677
+ - If this state is a consistent state with a default action, then
2678
+ the only way this function was invoked is if the default action
2679
+ is an error action. In that case, don't check for expected
2680
+ tokens because there are none.
2681
+ - The only way there can be no lookahead present (in yyla) is
2682
+ if this state is a consistent state with a default action.
2683
+ Thus, detecting the absence of a lookahead is sufficient to
2684
+ determine that there is no unexpected or expected token to
2685
+ report. In that case, just report a simple "syntax error".
2686
+ - Don't assume there isn't a lookahead just because this state is
2687
+ a consistent state with a default action. There might have
2688
+ been a previous inconsistent state, consistent state with a
2689
+ non-default action, or user semantic action that manipulated
2690
+ yyla. (However, yyla is currently not documented for users.)
2691
+ - Of course, the expected token list depends on states to have
2692
+ correct lookahead information, and it depends on the parser not
2693
+ to perform extra reductions after fetching a lookahead from the
2694
+ scanner and before detecting a syntax error. Thus, state
2695
+ merging (from LALR or IELR) and default reductions corrupt the
2696
+ expected token list. However, the list is correct for
2697
+ canonical LR with one exception: it will still contain any
2698
+ token that will not be accepted due to an error action in a
2699
+ later state.
2700
+ */
2701
+ if (!yyla.empty ())
2702
+ {
2703
+ int yytoken = yyla.type_get ();
2704
+ yyarg[yycount++] = yytname_[yytoken];
2705
+ int yyn = yypact_[yystate];
2706
+ if (!yy_pact_value_is_default_ (yyn))
2707
+ {
2708
+ /* Start YYX at -YYN if negative to avoid negative indexes in
2709
+ YYCHECK. In other words, skip the first -YYN actions for
2710
+ this state because they are default actions. */
2711
+ int yyxbegin = yyn < 0 ? -yyn : 0;
2712
+ // Stay within bounds of both yycheck and yytname.
2713
+ int yychecklim = yylast_ - yyn + 1;
2714
+ int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_;
2715
+ for (int yyx = yyxbegin; yyx < yyxend; ++yyx)
2716
+ if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_
2717
+ && !yy_table_value_is_error_ (yytable_[yyx + yyn]))
2718
+ {
2719
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2720
+ {
2721
+ yycount = 1;
2722
+ break;
2723
+ }
2724
+ else
2725
+ yyarg[yycount++] = yytname_[yyx];
2726
+ }
2727
+ }
2728
+ }
2729
+
2730
+ char const* yyformat = YY_NULLPTR;
2731
+ switch (yycount)
2732
+ {
2733
+ #define YYCASE_(N, S) \
2734
+ case N: \
2735
+ yyformat = S; \
2736
+ break
2737
+ default: // Avoid compiler warnings.
2738
+ YYCASE_ (0, YY_("syntax error"));
2739
+ YYCASE_ (1, YY_("syntax error, unexpected %s"));
2740
+ YYCASE_ (2, YY_("syntax error, unexpected %s, expecting %s"));
2741
+ YYCASE_ (3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2742
+ YYCASE_ (4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2743
+ YYCASE_ (5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2744
+ #undef YYCASE_
2745
+ }
2746
+
2747
+ std::string yyres;
2748
+ // Argument number.
2749
+ size_t yyi = 0;
2750
+ for (char const* yyp = yyformat; *yyp; ++yyp)
2751
+ if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount)
2752
+ {
2753
+ yyres += yytnamerr_ (yyarg[yyi++]);
2754
+ ++yyp;
2755
+ }
2756
+ else
2757
+ yyres += *yyp;
2758
+ return yyres;
2759
+ }
2760
+
2761
+
2762
+ const short int GraphQLParserImpl::yypact_ninf_ = -228;
2763
+
2764
+ const signed char GraphQLParserImpl::yytable_ninf_ = -1;
2765
+
2766
+ const short int
2767
+ GraphQLParserImpl::yypact_[] =
2768
+ {
2769
+ 198, -11, 895, 6, 918, 895, 895, -228, -228, 895,
2770
+ 13, -228, 895, 895, 440, 50, -228, 198, -228, -228,
2771
+ -228, 895, -228, -228, -228, -228, -228, -228, -228, -228,
2772
+ -228, -228, -228, 895, -228, -228, -228, -228, -228, -228,
2773
+ -228, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2774
+ -228, -228, -228, -228, 13, -228, 58, 13, 13, 13,
2775
+ 895, -228, 44, 13, -228, 79, 13, 475, 74, 405,
2776
+ -228, -228, -228, -228, -228, -228, -228, 76, 54, 52,
2777
+ 895, 65, 67, -228, 94, 100, -228, 895, 13, 84,
2778
+ 895, 13, 89, 895, 895, -228, 13, -228, -228, 87,
2779
+ 88, -228, 89, 895, 109, -228, 895, -228, 13, -228,
2780
+ 895, 895, -228, 99, 68, -228, -228, 895, 95, 895,
2781
+ 13, -228, -228, 101, 510, -228, 94, 89, -228, -9,
2782
+ 103, -228, -228, 89, -228, 104, 545, -228, 895, 13,
2783
+ -228, 580, 89, 615, 54, -228, 650, 895, -228, -228,
2784
+ -228, 895, -228, 102, 89, 265, -228, -228, 13, -228,
2785
+ -228, -228, -228, 685, -228, 685, -228, -228, -228, 106,
2786
+ -228, -228, -228, -228, -228, 105, -228, -228, -228, 720,
2787
+ 895, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2788
+ -228, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2789
+ 150, 755, -228, -228, -228, -228, -228, -228, -228, -228,
2790
+ -228, -228, -228, -228, -228, -228, 89, 685, 112, 110,
2791
+ 111, -228, 112, 895, 685, -228, -228, -228, -228, 228,
2792
+ -228, 115, 790, -228, -228, 113, 370, -228, -228, -228,
2793
+ -228, 13, -228, 13, -228, -228, 265, -228, -228, -228,
2794
+ 300, 825, -228, -228, -228, -228, -228, -228, -228, -228,
2795
+ -228, -228, -228, -228, -228, -228, 335, -228, 118, 860,
2796
+ -228, -228, -228, 370, -228, -228, -228
2797
+ };
2798
+
2799
+ const unsigned char
2800
+ GraphQLParserImpl::yydefact_[] =
2801
+ {
2802
+ 0, 0, 0, 0, 0, 0, 0, 46, 45, 0,
2803
+ 135, 47, 0, 0, 0, 0, 2, 25, 26, 30,
2804
+ 28, 23, 40, 29, 31, 32, 33, 34, 35, 36,
2805
+ 37, 38, 39, 0, 3, 4, 5, 6, 7, 9,
2806
+ 10, 11, 12, 13, 14, 22, 15, 16, 17, 18,
2807
+ 19, 20, 8, 21, 135, 175, 0, 135, 135, 135,
2808
+ 0, 136, 0, 134, 137, 153, 135, 135, 67, 0,
2809
+ 59, 61, 62, 63, 1, 27, 24, 0, 160, 0,
2810
+ 0, 0, 0, 151, 67, 0, 138, 0, 135, 0,
2811
+ 0, 135, 0, 0, 0, 68, 135, 56, 60, 0,
2812
+ 0, 41, 0, 0, 0, 161, 0, 143, 135, 76,
2813
+ 0, 0, 139, 0, 0, 148, 155, 154, 0, 0,
2814
+ 135, 72, 74, 0, 0, 69, 67, 57, 51, 0,
2815
+ 0, 49, 42, 0, 43, 0, 0, 163, 0, 135,
2816
+ 172, 0, 0, 0, 160, 158, 0, 0, 147, 149,
2817
+ 156, 0, 168, 167, 0, 0, 66, 70, 135, 58,
2818
+ 64, 48, 50, 0, 44, 0, 162, 164, 177, 176,
2819
+ 171, 170, 173, 75, 174, 0, 166, 159, 150, 0,
2820
+ 0, 73, 100, 101, 102, 98, 103, 105, 106, 107,
2821
+ 108, 99, 110, 109, 111, 112, 113, 97, 114, 115,
2822
+ 0, 0, 86, 87, 88, 104, 77, 71, 78, 79,
2823
+ 80, 81, 82, 83, 84, 85, 57, 0, 53, 140,
2824
+ 141, 142, 53, 0, 0, 152, 169, 116, 118, 0,
2825
+ 124, 0, 0, 126, 65, 0, 0, 52, 54, 145,
2826
+ 146, 135, 178, 135, 117, 119, 0, 125, 127, 144,
2827
+ 0, 0, 89, 90, 91, 55, 92, 93, 94, 95,
2828
+ 96, 165, 157, 128, 120, 122, 0, 129, 0, 0,
2829
+ 131, 121, 123, 0, 130, 132, 133
2830
+ };
2831
+
2832
+ const short int
2833
+ GraphQLParserImpl::yypgoto_[] =
2834
+ {
2835
+ -228, -228, 1, -2, -228, -228, -228, 128, -228, -228,
2836
+ -52, -228, -228, -84, 17, -87, -228, -64, -69, -228,
2837
+ 81, -228, -228, -82, -228, 24, -228, -228, -228, 61,
2838
+ -194, -227, -218, -193, -224, -189, -180, -161, -228, -228,
2839
+ -228, -228, -228, -228, -61, -228, -228, -97, -12, -37,
2840
+ -228, 119, -164, -53, -228, -228, -228, -228, 59, -228,
2841
+ 171, -228, -228, -138, 25, 31, -228, 71, -29, -228,
2842
+ -228, -228, -228, 47, -228, -228, -228, -228, -228
2843
+ };
2844
+
2845
+ const short int
2846
+ GraphQLParserImpl::yydefgoto_[] =
2847
+ {
2848
+ -1, 15, 53, 107, 77, 16, 17, 18, 19, 20,
2849
+ 21, 100, 129, 206, 131, 237, 238, 22, 160, 69,
2850
+ 70, 71, 95, 96, 124, 125, 72, 73, 23, 108,
2851
+ 207, 208, 209, 210, 255, 211, 212, 213, 214, 229,
2852
+ 259, 266, 215, 232, 233, 260, 269, 270, 61, 62,
2853
+ 63, 64, 218, 219, 220, 221, 24, 114, 115, 25,
2854
+ 26, 88, 117, 145, 146, 104, 105, 136, 137, 27,
2855
+ 28, 153, 29, 140, 141, 30, 31, 32, 169
2856
+ };
2857
+
2858
+ const unsigned short int
2859
+ GraphQLParserImpl::yytable_[] =
2860
+ {
2861
+ 54, 222, 112, 57, 58, 56, 228, 59, 177, 252,
2862
+ 65, 66, 68, 101, 161, 130, 33, 79, 253, 76,
2863
+ 81, 82, 83, 252, 128, 12, 265, 109, 122, 89,
2864
+ 92, 78, 253, 113, 116, 245, 132, 109, 134, 252,
2865
+ 60, 177, 272, 254, 158, 130, 252, 256, 253, 276,
2866
+ 74, 118, 263, 235, 121, 253, 257, 254, 84, 127,
2867
+ 243, 256, 113, 159, 150, 102, 152, 68, 91, 164,
2868
+ 257, 142, 80, 254, 85, 258, 103, 256, 173, 7,
2869
+ 254, 8, 106, 154, 256, 11, 257, 87, 133, 258,
2870
+ 181, 123, 126, 257, 178, 110, 93, 111, 99, 94,
2871
+ 148, 135, 170, 60, 139, 258, 14, 167, 135, 144,
2872
+ 119, 7, 258, 8, 167, 60, 93, 11, 14, 14,
2873
+ 128, 216, 123, 138, 147, 151, 155, 226, 163, 165,
2874
+ 224, 239, 240, 180, 135, 241, 168, 223, 236, 139,
2875
+ 246, 135, 249, 273, 144, 75, 162, 234, 157, 144,
2876
+ 98, 120, 159, 182, 183, 184, 185, 186, 187, 188,
2877
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
2878
+ 199, 248, 275, 149, 55, 175, 179, 144, 200, 227,
2879
+ 201, 143, 86, 128, 202, 203, 204, 205, 172, 0,
2880
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 231,
2881
+ 0, 1, 2, 3, 261, 4, 262, 5, 6, 7,
2882
+ 0, 8, 0, 9, 10, 11, 0, 12, 13, 0,
2883
+ 0, 242, 0, 0, 0, 0, 0, 0, 14, 0,
2884
+ 231, 182, 183, 184, 185, 186, 187, 188, 189, 190,
2885
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 268,
2886
+ 0, 0, 0, 0, 0, 0, 200, 244, 201, 0,
2887
+ 0, 128, 202, 203, 204, 205, 0, 268, 182, 183,
2888
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
2889
+ 194, 195, 196, 197, 198, 199, 0, 0, 0, 0,
2890
+ 0, 0, 0, 200, 0, 201, 0, 0, 128, 202,
2891
+ 203, 204, 205, 182, 183, 184, 185, 186, 187, 188,
2892
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
2893
+ 199, 0, 0, 0, 0, 0, 0, 0, 250, 264,
2894
+ 251, 0, 0, 0, 202, 203, 204, 205, 182, 183,
2895
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
2896
+ 194, 195, 196, 197, 198, 199, 0, 0, 0, 0,
2897
+ 0, 0, 0, 250, 271, 251, 0, 0, 0, 202,
2898
+ 203, 204, 205, 182, 183, 184, 185, 186, 187, 188,
2899
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
2900
+ 199, 0, 0, 0, 0, 0, 0, 0, 250, 0,
2901
+ 251, 0, 0, 0, 202, 203, 204, 205, 34, 35,
2902
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2903
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 67,
2904
+ 0, 0, 0, 0, 0, 0, 0, 97, 0, 0,
2905
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2906
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2907
+ 51, 0, 0, 0, 67, 0, 0, 0, 0, 0,
2908
+ 0, 0, 0, 0, 0, 0, 0, 52, 34, 35,
2909
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 90,
2910
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
2911
+ 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
2912
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2913
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2914
+ 51, 0, 0, 156, 0, 0, 0, 0, 0, 0,
2915
+ 0, 0, 0, 0, 0, 0, 0, 52, 34, 35,
2916
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2917
+ 46, 47, 48, 49, 50, 51, 0, 0, 166, 0,
2918
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2919
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2920
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2921
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2922
+ 0, 0, 171, 0, 0, 0, 0, 52, 34, 35,
2923
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2924
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
2925
+ 0, 0, 0, 0, 0, 0, 0, 174, 0, 0,
2926
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2927
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2928
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2929
+ 0, 0, 176, 0, 0, 0, 0, 52, 34, 35,
2930
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2931
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
2932
+ 0, 0, 0, 217, 0, 0, 0, 0, 0, 0,
2933
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2934
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2935
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2936
+ 0, 0, 225, 0, 0, 0, 0, 52, 34, 35,
2937
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2938
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
2939
+ 0, 0, 0, 0, 0, 0, 0, 230, 0, 0,
2940
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2941
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2942
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2943
+ 0, 0, 247, 0, 0, 0, 0, 52, 34, 35,
2944
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2945
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
2946
+ 0, 0, 0, 0, 0, 0, 0, 267, 0, 0,
2947
+ 0, 0, 52, 34, 35, 36, 37, 38, 39, 40,
2948
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
2949
+ 51, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2950
+ 0, 0, 274, 0, 0, 0, 0, 52, 34, 35,
2951
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
2952
+ 46, 47, 48, 49, 50, 51, 0, 0, 0, 0,
2953
+ 0, 34, 35, 36, 37, 38, 39, 40, 41, 42,
2954
+ 43, 44, 52, 46, 47, 48, 49, 50, 51, 0,
2955
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2956
+ 0, 0, 0, 0, 0, 52
2957
+ };
2958
+
2959
+ const short int
2960
+ GraphQLParserImpl::yycheck_[] =
2961
+ {
2962
+ 2, 165, 84, 5, 6, 4, 200, 9, 146, 236,
2963
+ 12, 13, 14, 77, 23, 99, 27, 54, 236, 21,
2964
+ 57, 58, 59, 250, 33, 19, 250, 80, 92, 66,
2965
+ 67, 33, 250, 85, 87, 229, 100, 90, 102, 266,
2966
+ 27, 179, 266, 236, 126, 129, 273, 236, 266, 273,
2967
+ 0, 88, 246, 217, 91, 273, 236, 250, 60, 96,
2968
+ 224, 250, 114, 127, 117, 77, 119, 69, 67, 133,
2969
+ 250, 108, 14, 266, 30, 236, 22, 266, 142, 11,
2970
+ 273, 13, 30, 120, 273, 17, 266, 8, 100, 250,
2971
+ 154, 93, 94, 273, 147, 30, 22, 30, 22, 25,
2972
+ 32, 103, 139, 27, 106, 266, 30, 136, 110, 111,
2973
+ 26, 11, 273, 13, 143, 27, 22, 17, 30, 30,
2974
+ 33, 158, 124, 14, 25, 30, 25, 180, 25, 25,
2975
+ 25, 21, 21, 31, 136, 222, 138, 31, 26, 141,
2976
+ 25, 143, 29, 25, 146, 17, 129, 216, 124, 151,
2977
+ 69, 90, 216, 3, 4, 5, 6, 7, 8, 9,
2978
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
2979
+ 20, 232, 269, 114, 3, 144, 151, 179, 28, 29,
2980
+ 30, 110, 63, 33, 34, 35, 36, 37, 141, -1,
2981
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 201,
2982
+ -1, 3, 4, 5, 241, 7, 243, 9, 10, 11,
2983
+ -1, 13, -1, 15, 16, 17, -1, 19, 20, -1,
2984
+ -1, 223, -1, -1, -1, -1, -1, -1, 30, -1,
2985
+ 232, 3, 4, 5, 6, 7, 8, 9, 10, 11,
2986
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 251,
2987
+ -1, -1, -1, -1, -1, -1, 28, 29, 30, -1,
2988
+ -1, 33, 34, 35, 36, 37, -1, 269, 3, 4,
2989
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2990
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
2991
+ -1, -1, -1, 28, -1, 30, -1, -1, 33, 34,
2992
+ 35, 36, 37, 3, 4, 5, 6, 7, 8, 9,
2993
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
2994
+ 20, -1, -1, -1, -1, -1, -1, -1, 28, 29,
2995
+ 30, -1, -1, -1, 34, 35, 36, 37, 3, 4,
2996
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2997
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
2998
+ -1, -1, -1, 28, 29, 30, -1, -1, -1, 34,
2999
+ 35, 36, 37, 3, 4, 5, 6, 7, 8, 9,
3000
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3001
+ 20, -1, -1, -1, -1, -1, -1, -1, 28, -1,
3002
+ 30, -1, -1, -1, 34, 35, 36, 37, 3, 4,
3003
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3004
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, 24,
3005
+ -1, -1, -1, -1, -1, -1, -1, 32, -1, -1,
3006
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3007
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3008
+ 20, -1, -1, -1, 24, -1, -1, -1, -1, -1,
3009
+ -1, -1, -1, -1, -1, -1, -1, 37, 3, 4,
3010
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3011
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
3012
+ -1, -1, 27, -1, -1, -1, -1, -1, -1, -1,
3013
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3014
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3015
+ 20, -1, -1, 23, -1, -1, -1, -1, -1, -1,
3016
+ -1, -1, -1, -1, -1, -1, -1, 37, 3, 4,
3017
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3018
+ 15, 16, 17, 18, 19, 20, -1, -1, 23, -1,
3019
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3020
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3021
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3022
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3023
+ -1, -1, 32, -1, -1, -1, -1, 37, 3, 4,
3024
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3025
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
3026
+ -1, -1, -1, -1, -1, -1, -1, 32, -1, -1,
3027
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3028
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3029
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3030
+ -1, -1, 32, -1, -1, -1, -1, 37, 3, 4,
3031
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3032
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
3033
+ -1, -1, -1, 28, -1, -1, -1, -1, -1, -1,
3034
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3035
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3036
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3037
+ -1, -1, 32, -1, -1, -1, -1, 37, 3, 4,
3038
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3039
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
3040
+ -1, -1, -1, -1, -1, -1, -1, 32, -1, -1,
3041
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3042
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3043
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3044
+ -1, -1, 32, -1, -1, -1, -1, 37, 3, 4,
3045
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3046
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
3047
+ -1, -1, -1, -1, -1, -1, -1, 32, -1, -1,
3048
+ -1, -1, 37, 3, 4, 5, 6, 7, 8, 9,
3049
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
3050
+ 20, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3051
+ -1, -1, 32, -1, -1, -1, -1, 37, 3, 4,
3052
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3053
+ 15, 16, 17, 18, 19, 20, -1, -1, -1, -1,
3054
+ -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
3055
+ 12, 13, 37, 15, 16, 17, 18, 19, 20, -1,
3056
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3057
+ -1, -1, -1, -1, -1, 37
3058
+ };
3059
+
3060
+ const unsigned char
3061
+ GraphQLParserImpl::yystos_[] =
3062
+ {
3063
+ 0, 3, 4, 5, 7, 9, 10, 11, 13, 15,
3064
+ 16, 17, 19, 20, 30, 39, 43, 44, 45, 46,
3065
+ 47, 48, 55, 66, 94, 97, 98, 107, 108, 110,
3066
+ 113, 114, 115, 27, 3, 4, 5, 6, 7, 8,
3067
+ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
3068
+ 19, 20, 37, 40, 41, 98, 40, 41, 41, 41,
3069
+ 27, 86, 87, 88, 89, 41, 41, 24, 41, 57,
3070
+ 58, 59, 64, 65, 0, 45, 41, 42, 41, 87,
3071
+ 14, 87, 87, 87, 41, 30, 89, 8, 99, 87,
3072
+ 14, 40, 87, 22, 25, 60, 61, 32, 58, 22,
3073
+ 49, 55, 86, 22, 103, 104, 30, 41, 67, 91,
3074
+ 30, 30, 61, 48, 95, 96, 91, 100, 87, 26,
3075
+ 67, 87, 55, 41, 62, 63, 41, 87, 33, 50,
3076
+ 51, 52, 55, 86, 55, 41, 105, 106, 14, 41,
3077
+ 111, 112, 87, 105, 41, 101, 102, 25, 32, 96,
3078
+ 91, 30, 91, 109, 87, 25, 23, 63, 61, 55,
3079
+ 56, 23, 52, 25, 55, 25, 23, 106, 41, 116,
3080
+ 87, 32, 111, 55, 32, 103, 32, 101, 91, 102,
3081
+ 31, 55, 3, 4, 5, 6, 7, 8, 9, 10,
3082
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
3083
+ 28, 30, 34, 35, 36, 37, 51, 68, 69, 70,
3084
+ 71, 73, 74, 75, 76, 80, 87, 28, 90, 91,
3085
+ 92, 93, 90, 31, 25, 32, 91, 29, 68, 77,
3086
+ 32, 41, 81, 82, 56, 90, 26, 53, 54, 21,
3087
+ 21, 53, 41, 90, 29, 68, 25, 32, 82, 29,
3088
+ 28, 30, 69, 70, 71, 72, 73, 74, 75, 78,
3089
+ 83, 87, 87, 68, 29, 72, 79, 32, 41, 84,
3090
+ 85, 29, 72, 25, 32, 85, 72
3091
+ };
3092
+
3093
+ const unsigned char
3094
+ GraphQLParserImpl::yyr1_[] =
3095
+ {
3096
+ 0, 38, 39, 40, 40, 40, 40, 40, 40, 40,
3097
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
3098
+ 40, 41, 41, 42, 42, 43, 44, 44, 45, 45,
3099
+ 45, 46, 46, 46, 46, 46, 46, 46, 46, 46,
3100
+ 47, 47, 47, 47, 47, 48, 48, 48, 49, 50,
3101
+ 50, 51, 52, 53, 53, 54, 55, 56, 56, 57,
3102
+ 57, 58, 58, 58, 59, 59, 60, 61, 61, 62,
3103
+ 62, 63, 64, 65, 65, 66, 67, 68, 68, 68,
3104
+ 68, 68, 68, 68, 68, 68, 69, 70, 71, 72,
3105
+ 72, 72, 72, 72, 72, 72, 72, 73, 73, 74,
3106
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
3107
+ 75, 75, 75, 75, 75, 75, 76, 76, 77, 77,
3108
+ 78, 78, 79, 79, 80, 80, 81, 81, 82, 83,
3109
+ 83, 84, 84, 85, 86, 87, 87, 88, 88, 89,
3110
+ 90, 90, 90, 91, 92, 93, 93, 94, 95, 95,
3111
+ 96, 97, 98, 99, 99, 100, 100, 101, 102, 102,
3112
+ 103, 103, 104, 105, 105, 106, 107, 108, 109, 109,
3113
+ 110, 111, 112, 112, 113, 114, 115, 116, 116
3114
+ };
3115
+
3116
+ const unsigned char
3117
+ GraphQLParserImpl::yyr2_[] =
3118
+ {
3119
+ 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
3120
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3121
+ 1, 1, 1, 0, 1, 1, 1, 2, 1, 1,
3122
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3123
+ 1, 3, 4, 4, 5, 1, 1, 1, 3, 1,
3124
+ 2, 1, 4, 0, 1, 2, 3, 0, 1, 1,
3125
+ 2, 1, 1, 1, 4, 6, 3, 0, 1, 1,
3126
+ 2, 3, 3, 5, 3, 6, 1, 1, 1, 1,
3127
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3128
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3129
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3130
+ 1, 1, 1, 1, 1, 1, 2, 3, 1, 2,
3131
+ 2, 3, 1, 2, 2, 3, 1, 2, 3, 2,
3132
+ 3, 1, 2, 3, 1, 0, 1, 1, 2, 3,
3133
+ 1, 1, 1, 1, 3, 2, 2, 5, 1, 2,
3134
+ 3, 3, 7, 0, 2, 1, 2, 5, 1, 2,
3135
+ 0, 1, 3, 1, 2, 5, 6, 5, 1, 3,
3136
+ 6, 2, 1, 2, 6, 2, 6, 1, 3
3137
+ };
3138
+
3139
+
3140
+
3141
+ // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
3142
+ // First, the terminals, then, starting at \a yyntokens_, nonterminals.
3143
+ const char*
3144
+ const GraphQLParserImpl::yytname_[] =
3145
+ {
3146
+ "EOF", "error", "$undefined", "\"directive\"", "\"enum\"", "\"extend\"",
3147
+ "\"false\"", "\"fragment\"", "\"implements\"", "\"input\"",
3148
+ "\"interface\"", "\"mutation\"", "\"null\"", "\"query\"", "\"on\"",
3149
+ "\"scalar\"", "\"schema\"", "\"subscription\"", "\"true\"", "\"type\"",
3150
+ "\"union\"", "\"!\"", "\"(\"", "\")\"", "\"...\"", "\":\"", "\"=\"",
3151
+ "\"@\"", "\"[\"", "\"]\"", "\"{\"", "\"|\"", "\"}\"", "VARIABLE",
3152
+ "INTEGER", "FLOAT", "STRING", "IDENTIFIER", "$accept", "start",
3153
+ "fragment_name", "name", "name_opt", "document", "definition_list",
3154
+ "definition", "schema_gate", "operation_definition", "operation_type",
3155
+ "variable_definitions", "variable_definition_list", "variable",
3156
+ "variable_definition", "default_value_opt", "default_value",
3157
+ "selection_set", "selection_set_opt", "selection_list", "selection",
3158
+ "field", "arguments", "arguments_opt", "argument_list", "argument",
3159
+ "fragment_spread", "inline_fragment", "fragment_definition",
3160
+ "type_condition", "value", "int_value", "float_value", "string_value",
3161
+ "value_const", "boolean_value", "null_value", "enum_value", "list_value",
3162
+ "value_list", "list_value_const", "value_const_list", "object_value",
3163
+ "object_field_list", "object_field", "object_value_const",
3164
+ "object_field_const_list", "object_field_const", "directives",
3165
+ "directives_opt", "directive_list", "directive", "type", "type_name",
3166
+ "list_type", "non_null_type", "schema_definition",
3167
+ "operation_type_definition_list", "operation_type_definition",
3168
+ "scalar_type_definition", "object_type_definition",
3169
+ "implements_interfaces_opt", "type_name_list", "field_definition",
3170
+ "field_definition_list", "arguments_definition_opt",
3171
+ "arguments_definition", "input_value_definition_list",
3172
+ "input_value_definition", "interface_type_definition",
3173
+ "union_type_definition", "union_members", "enum_type_definition",
3174
+ "enum_value_definition", "enum_value_definition_list",
3175
+ "input_object_type_definition", "type_extension_definition",
3176
+ "directive_definition", "directive_locations", YY_NULLPTR
3177
+ };
3178
+
3179
+ #if YYDEBUG
3180
+ const unsigned short int
3181
+ GraphQLParserImpl::yyrline_[] =
3182
+ {
3183
+ 0, 298, 298, 303, 304, 305, 306, 307, 308, 309,
3184
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
3185
+ 320, 323, 324, 328, 329, 334, 337, 338, 341, 342,
3186
+ 343, 355, 356, 357, 358, 359, 360, 361, 362, 363,
3187
+ 369, 370, 371, 372, 373, 376, 377, 378, 382, 386,
3188
+ 387, 390, 394, 398, 399, 402, 406, 410, 411, 413,
3189
+ 414, 417, 418, 419, 422, 423, 426, 429, 430, 433,
3190
+ 434, 437, 442, 446, 447, 451, 454, 458, 459, 460,
3191
+ 461, 462, 463, 464, 465, 466, 469, 472, 475, 478,
3192
+ 479, 480, 481, 482, 483, 484, 485, 488, 489, 492,
3193
+ 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
3194
+ 505, 506, 507, 508, 509, 510, 517, 518, 521, 522,
3195
+ 526, 527, 531, 532, 537, 538, 542, 543, 546, 550,
3196
+ 551, 555, 556, 559, 564, 567, 568, 571, 572, 575,
3197
+ 580, 581, 582, 585, 588, 591, 592, 597, 601, 602,
3198
+ 606, 609, 612, 615, 616, 619, 620, 623, 627, 628,
3199
+ 631, 632, 635, 638, 639, 642, 644, 647, 650, 651,
3200
+ 654, 657, 661, 662, 665, 668, 671, 675, 676
3201
+ };
3202
+
3203
+ // Print the state stack on the debug stream.
3204
+ void
3205
+ GraphQLParserImpl::yystack_print_ ()
3206
+ {
3207
+ *yycdebug_ << "Stack now";
3208
+ for (stack_type::const_iterator
3209
+ i = yystack_.begin (),
3210
+ i_end = yystack_.end ();
3211
+ i != i_end; ++i)
3212
+ *yycdebug_ << ' ' << i->state;
3213
+ *yycdebug_ << '\n';
3214
+ }
3215
+
3216
+ // Report on the debug stream that the rule \a yyrule is going to be reduced.
3217
+ void
3218
+ GraphQLParserImpl::yy_reduce_print_ (int yyrule)
3219
+ {
3220
+ unsigned yylno = yyrline_[yyrule];
3221
+ int yynrhs = yyr2_[yyrule];
3222
+ // Print the symbols being reduced, and their result.
3223
+ *yycdebug_ << "Reducing stack by rule " << yyrule - 1
3224
+ << " (line " << yylno << "):\n";
3225
+ // The symbols being reduced.
3226
+ for (int yyi = 0; yyi < yynrhs; yyi++)
3227
+ YY_SYMBOL_PRINT (" $" << yyi + 1 << " =",
3228
+ yystack_[(yynrhs) - (yyi + 1)]);
3229
+ }
3230
+ #endif // YYDEBUG
3231
+
3232
+ // Symbol number corresponding to token number t.
3233
+ GraphQLParserImpl::token_number_type
3234
+ GraphQLParserImpl::yytranslate_ (int t)
3235
+ {
3236
+ static
3237
+ const token_number_type
3238
+ translate_table[] =
3239
+ {
3240
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3241
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3242
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3243
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3244
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3245
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3246
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3247
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3248
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3249
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3250
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3251
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3252
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3253
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3254
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3255
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3256
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3257
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3258
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3259
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3260
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3261
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3262
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3263
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3264
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3265
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3266
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3267
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3268
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3269
+ 35, 36, 37
3270
+ };
3271
+ const unsigned user_token_number_max_ = 292;
3272
+ const token_number_type undef_token_ = 2;
3273
+
3274
+ if (static_cast<int> (t) <= yyeof_)
3275
+ return yyeof_;
3276
+ else if (static_cast<unsigned> (t) <= user_token_number_max_)
3277
+ return translate_table[t];
3278
+ else
3279
+ return undef_token_;
3280
+ }
3281
+
3282
+
3283
+ } // yy
3284
+ #line 3285 "parser.tab.cpp" // lalr1.cc:1163
3285
+ #line 679 "parser.ypp" // lalr1.cc:1164
3286
+
3287
+
3288
+ void yy::GraphQLParserImpl::error(const yy::location &loc, const std::string &str) {
3289
+ std::ostringstream out;
3290
+ out << loc << ": " << str;
3291
+ if (outError) {
3292
+ *outError = strdup(out.str().c_str());
3293
+ }
3294
+ }
3295
+
3296
+ /* Workaround for syntax_error ctor being marked inline, which causes link
3297
+ errors if used from lexer.lpp. */
3298
+ yy::GraphQLParserImpl::syntax_error make_error(const yy::location &loc, const std::string &str) {
3299
+ return yy::GraphQLParserImpl::syntax_error(loc, str);
3300
+ }