diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml
index df000281..4dad05ed 100644
--- a/.github/workflows/config.yml
+++ b/.github/workflows/config.yml
@@ -33,4 +33,4 @@ jobs:
key: cljdeps-${{ hashFiles('deps.edn') }}
- name: Execute tests
- run: clojure -X:dev:test
+ run: clojure -T:build compile-java && clojure -X:dev:test
diff --git a/build.clj b/build.clj
index fcfa1978..3d6baf11 100644
--- a/build.clj
+++ b/build.clj
@@ -21,16 +21,25 @@
(def lib 'com.walmartlabs/lacinia)
(def version (-> "VERSION.txt" slurp string/trim))
+(def class-dir "target/classes")
(def jar-params {:project-name lib
- :version version})
+ :version version
+ :class-dir class-dir})
(defn clean
[_params]
(build/delete {:path "target"}))
+(defn compile-java [_]
+ (build/javac {:src-dirs ["java"]
+ :class-dir class-dir
+ :basis (build/create-basis)
+ :javac-opts ["--release" "11"]}))
+
(defn jar
[_params]
+ (compile-java nil)
(b/create-jar jar-params))
(defn deploy
diff --git a/codegen.sh b/codegen.sh
new file mode 100755
index 00000000..cba88a07
--- /dev/null
+++ b/codegen.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -x
+
+pip install antlr4-tools
+
+export ANTLR4_TOOLS_ANTLR_VERSION=4.13.1
+
+PACKAGE_NAME=com.walmartlabs.lacinia
+DIR=$(echo $PACKAGE_NAME | tr . /)
+
+antlr4 resources/$DIR/Graphql.g4 -o java/$DIR -Xexact-output-dir -package $PACKAGE_NAME
+antlr4 resources/$DIR/GraphqlSchema.g4 -o java/$DIR -Xexact-output-dir -package $PACKAGE_NAME
diff --git a/deps.edn b/deps.edn
index 5cd03a3f..203b3e3f 100644
--- a/deps.edn
+++ b/deps.edn
@@ -1,8 +1,14 @@
{:deps {org.clojure/clojure {:mvn/version "1.11.1"}
- clj-antlr/clj-antlr {:mvn/version "0.2.12"}
+ org.antlr/antlr4-runtime {:mvn/version "4.13.1"}
org.flatland/ordered {:mvn/version "1.15.10"}
org.clojure/data.json {:mvn/version "2.4.0"}}
- :paths ["src" "resources"]
+ :paths ["src" "resources" "target/classes"]
+
+ :deps/prep-lib
+ {:ensure "target/classes"
+ :alias :build
+ :fn compile-java}
+
:aliases
{:dev
{:extra-deps {criterium/criterium {:mvn/version "0.4.6"}
diff --git a/java/com/walmartlabs/lacinia/Graphql.interp b/java/com/walmartlabs/lacinia/Graphql.interp
new file mode 100644
index 00000000..0389f1bc
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/Graphql.interp
@@ -0,0 +1,104 @@
+token literal names:
+null
+'query'
+'mutation'
+'subscription'
+'('
+')'
+':'
+'$'
+'='
+'{'
+'}'
+'...'
+'on'
+'fragment'
+'['
+']'
+'@'
+'!'
+null
+null
+'null'
+null
+null
+null
+'-'
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+BooleanValue
+NullValue
+Null
+NameId
+IntValue
+FloatValue
+Sign
+IntegerPart
+NonZeroDigit
+ExponentPart
+Digit
+StringValue
+BlockStringValue
+Ignored
+
+rule names:
+document
+definition
+operationDefinition
+name
+operationType
+variableDefinitions
+variableDefinition
+variable
+defaultValue
+selectionSet
+selection
+field
+alias
+arguments
+argument
+fragmentSpread
+inlineFragment
+fragmentDefinition
+fragmentName
+typeCondition
+value
+enumValue
+arrayValue
+objectValue
+objectField
+directives
+directive
+type
+typeName
+listType
+nonNullType
+
+
+atn:
+[4, 1, 31, 243, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 1, 0, 4, 0, 64, 8, 0, 11, 0, 12, 0, 65, 1, 1, 1, 1, 3, 1, 70, 8, 1, 1, 2, 1, 2, 1, 2, 3, 2, 75, 8, 2, 1, 2, 3, 2, 78, 8, 2, 1, 2, 3, 2, 81, 8, 2, 1, 2, 1, 2, 3, 2, 85, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 4, 5, 93, 8, 5, 11, 5, 12, 5, 94, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 103, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 4, 9, 113, 8, 9, 11, 9, 12, 9, 114, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 3, 10, 122, 8, 10, 1, 11, 3, 11, 125, 8, 11, 1, 11, 1, 11, 3, 11, 129, 8, 11, 1, 11, 3, 11, 132, 8, 11, 1, 11, 3, 11, 135, 8, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 4, 13, 142, 8, 13, 11, 13, 12, 13, 143, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 155, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 161, 8, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 170, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 188, 8, 20, 1, 21, 1, 21, 1, 22, 1, 22, 5, 22, 194, 8, 22, 10, 22, 12, 22, 197, 9, 22, 1, 22, 1, 22, 1, 23, 1, 23, 5, 23, 203, 8, 23, 10, 23, 12, 23, 206, 9, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 4, 25, 215, 8, 25, 11, 25, 12, 25, 216, 1, 26, 1, 26, 1, 26, 3, 26, 222, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 227, 8, 27, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 241, 8, 30, 1, 30, 0, 0, 31, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 0, 2, 2, 0, 1, 3, 21, 21, 1, 0, 1, 3, 246, 0, 63, 1, 0, 0, 0, 2, 69, 1, 0, 0, 0, 4, 84, 1, 0, 0, 0, 6, 86, 1, 0, 0, 0, 8, 88, 1, 0, 0, 0, 10, 90, 1, 0, 0, 0, 12, 98, 1, 0, 0, 0, 14, 104, 1, 0, 0, 0, 16, 107, 1, 0, 0, 0, 18, 110, 1, 0, 0, 0, 20, 121, 1, 0, 0, 0, 22, 124, 1, 0, 0, 0, 24, 136, 1, 0, 0, 0, 26, 139, 1, 0, 0, 0, 28, 147, 1, 0, 0, 0, 30, 151, 1, 0, 0, 0, 32, 156, 1, 0, 0, 0, 34, 164, 1, 0, 0, 0, 36, 173, 1, 0, 0, 0, 38, 175, 1, 0, 0, 0, 40, 187, 1, 0, 0, 0, 42, 189, 1, 0, 0, 0, 44, 191, 1, 0, 0, 0, 46, 200, 1, 0, 0, 0, 48, 209, 1, 0, 0, 0, 50, 214, 1, 0, 0, 0, 52, 218, 1, 0, 0, 0, 54, 226, 1, 0, 0, 0, 56, 228, 1, 0, 0, 0, 58, 230, 1, 0, 0, 0, 60, 240, 1, 0, 0, 0, 62, 64, 3, 2, 1, 0, 63, 62, 1, 0, 0, 0, 64, 65, 1, 0, 0, 0, 65, 63, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 1, 1, 0, 0, 0, 67, 70, 3, 4, 2, 0, 68, 70, 3, 34, 17, 0, 69, 67, 1, 0, 0, 0, 69, 68, 1, 0, 0, 0, 70, 3, 1, 0, 0, 0, 71, 85, 3, 18, 9, 0, 72, 74, 3, 8, 4, 0, 73, 75, 3, 6, 3, 0, 74, 73, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 77, 1, 0, 0, 0, 76, 78, 3, 10, 5, 0, 77, 76, 1, 0, 0, 0, 77, 78, 1, 0, 0, 0, 78, 80, 1, 0, 0, 0, 79, 81, 3, 50, 25, 0, 80, 79, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 82, 1, 0, 0, 0, 82, 83, 3, 18, 9, 0, 83, 85, 1, 0, 0, 0, 84, 71, 1, 0, 0, 0, 84, 72, 1, 0, 0, 0, 85, 5, 1, 0, 0, 0, 86, 87, 7, 0, 0, 0, 87, 7, 1, 0, 0, 0, 88, 89, 7, 1, 0, 0, 89, 9, 1, 0, 0, 0, 90, 92, 5, 4, 0, 0, 91, 93, 3, 12, 6, 0, 92, 91, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 94, 95, 1, 0, 0, 0, 95, 96, 1, 0, 0, 0, 96, 97, 5, 5, 0, 0, 97, 11, 1, 0, 0, 0, 98, 99, 3, 14, 7, 0, 99, 100, 5, 6, 0, 0, 100, 102, 3, 54, 27, 0, 101, 103, 3, 16, 8, 0, 102, 101, 1, 0, 0, 0, 102, 103, 1, 0, 0, 0, 103, 13, 1, 0, 0, 0, 104, 105, 5, 7, 0, 0, 105, 106, 3, 6, 3, 0, 106, 15, 1, 0, 0, 0, 107, 108, 5, 8, 0, 0, 108, 109, 3, 40, 20, 0, 109, 17, 1, 0, 0, 0, 110, 112, 5, 9, 0, 0, 111, 113, 3, 20, 10, 0, 112, 111, 1, 0, 0, 0, 113, 114, 1, 0, 0, 0, 114, 112, 1, 0, 0, 0, 114, 115, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 117, 5, 10, 0, 0, 117, 19, 1, 0, 0, 0, 118, 122, 3, 22, 11, 0, 119, 122, 3, 30, 15, 0, 120, 122, 3, 32, 16, 0, 121, 118, 1, 0, 0, 0, 121, 119, 1, 0, 0, 0, 121, 120, 1, 0, 0, 0, 122, 21, 1, 0, 0, 0, 123, 125, 3, 24, 12, 0, 124, 123, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 126, 1, 0, 0, 0, 126, 128, 3, 6, 3, 0, 127, 129, 3, 26, 13, 0, 128, 127, 1, 0, 0, 0, 128, 129, 1, 0, 0, 0, 129, 131, 1, 0, 0, 0, 130, 132, 3, 50, 25, 0, 131, 130, 1, 0, 0, 0, 131, 132, 1, 0, 0, 0, 132, 134, 1, 0, 0, 0, 133, 135, 3, 18, 9, 0, 134, 133, 1, 0, 0, 0, 134, 135, 1, 0, 0, 0, 135, 23, 1, 0, 0, 0, 136, 137, 3, 6, 3, 0, 137, 138, 5, 6, 0, 0, 138, 25, 1, 0, 0, 0, 139, 141, 5, 4, 0, 0, 140, 142, 3, 28, 14, 0, 141, 140, 1, 0, 0, 0, 142, 143, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 5, 5, 0, 0, 146, 27, 1, 0, 0, 0, 147, 148, 3, 6, 3, 0, 148, 149, 5, 6, 0, 0, 149, 150, 3, 40, 20, 0, 150, 29, 1, 0, 0, 0, 151, 152, 5, 11, 0, 0, 152, 154, 3, 36, 18, 0, 153, 155, 3, 50, 25, 0, 154, 153, 1, 0, 0, 0, 154, 155, 1, 0, 0, 0, 155, 31, 1, 0, 0, 0, 156, 157, 5, 11, 0, 0, 157, 158, 5, 12, 0, 0, 158, 160, 3, 38, 19, 0, 159, 161, 3, 50, 25, 0, 160, 159, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 163, 3, 18, 9, 0, 163, 33, 1, 0, 0, 0, 164, 165, 5, 13, 0, 0, 165, 166, 3, 36, 18, 0, 166, 167, 5, 12, 0, 0, 167, 169, 3, 38, 19, 0, 168, 170, 3, 50, 25, 0, 169, 168, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 3, 18, 9, 0, 172, 35, 1, 0, 0, 0, 173, 174, 3, 6, 3, 0, 174, 37, 1, 0, 0, 0, 175, 176, 3, 56, 28, 0, 176, 39, 1, 0, 0, 0, 177, 188, 5, 22, 0, 0, 178, 188, 5, 23, 0, 0, 179, 188, 5, 29, 0, 0, 180, 188, 5, 30, 0, 0, 181, 188, 5, 18, 0, 0, 182, 188, 5, 19, 0, 0, 183, 188, 3, 42, 21, 0, 184, 188, 3, 44, 22, 0, 185, 188, 3, 46, 23, 0, 186, 188, 3, 14, 7, 0, 187, 177, 1, 0, 0, 0, 187, 178, 1, 0, 0, 0, 187, 179, 1, 0, 0, 0, 187, 180, 1, 0, 0, 0, 187, 181, 1, 0, 0, 0, 187, 182, 1, 0, 0, 0, 187, 183, 1, 0, 0, 0, 187, 184, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 186, 1, 0, 0, 0, 188, 41, 1, 0, 0, 0, 189, 190, 3, 6, 3, 0, 190, 43, 1, 0, 0, 0, 191, 195, 5, 14, 0, 0, 192, 194, 3, 40, 20, 0, 193, 192, 1, 0, 0, 0, 194, 197, 1, 0, 0, 0, 195, 193, 1, 0, 0, 0, 195, 196, 1, 0, 0, 0, 196, 198, 1, 0, 0, 0, 197, 195, 1, 0, 0, 0, 198, 199, 5, 15, 0, 0, 199, 45, 1, 0, 0, 0, 200, 204, 5, 9, 0, 0, 201, 203, 3, 48, 24, 0, 202, 201, 1, 0, 0, 0, 203, 206, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 204, 205, 1, 0, 0, 0, 205, 207, 1, 0, 0, 0, 206, 204, 1, 0, 0, 0, 207, 208, 5, 10, 0, 0, 208, 47, 1, 0, 0, 0, 209, 210, 3, 6, 3, 0, 210, 211, 5, 6, 0, 0, 211, 212, 3, 40, 20, 0, 212, 49, 1, 0, 0, 0, 213, 215, 3, 52, 26, 0, 214, 213, 1, 0, 0, 0, 215, 216, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 51, 1, 0, 0, 0, 218, 219, 5, 16, 0, 0, 219, 221, 3, 6, 3, 0, 220, 222, 3, 26, 13, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 53, 1, 0, 0, 0, 223, 227, 3, 56, 28, 0, 224, 227, 3, 58, 29, 0, 225, 227, 3, 60, 30, 0, 226, 223, 1, 0, 0, 0, 226, 224, 1, 0, 0, 0, 226, 225, 1, 0, 0, 0, 227, 55, 1, 0, 0, 0, 228, 229, 3, 6, 3, 0, 229, 57, 1, 0, 0, 0, 230, 231, 5, 14, 0, 0, 231, 232, 3, 54, 27, 0, 232, 233, 5, 15, 0, 0, 233, 59, 1, 0, 0, 0, 234, 235, 3, 56, 28, 0, 235, 236, 5, 17, 0, 0, 236, 241, 1, 0, 0, 0, 237, 238, 3, 58, 29, 0, 238, 239, 5, 17, 0, 0, 239, 241, 1, 0, 0, 0, 240, 234, 1, 0, 0, 0, 240, 237, 1, 0, 0, 0, 241, 61, 1, 0, 0, 0, 25, 65, 69, 74, 77, 80, 84, 94, 102, 114, 121, 124, 128, 131, 134, 143, 154, 160, 169, 187, 195, 204, 216, 221, 226, 240]
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/Graphql.tokens b/java/com/walmartlabs/lacinia/Graphql.tokens
new file mode 100644
index 00000000..7660c485
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/Graphql.tokens
@@ -0,0 +1,50 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+T__9=10
+T__10=11
+T__11=12
+T__12=13
+T__13=14
+T__14=15
+T__15=16
+T__16=17
+BooleanValue=18
+NullValue=19
+Null=20
+NameId=21
+IntValue=22
+FloatValue=23
+Sign=24
+IntegerPart=25
+NonZeroDigit=26
+ExponentPart=27
+Digit=28
+StringValue=29
+BlockStringValue=30
+Ignored=31
+'query'=1
+'mutation'=2
+'subscription'=3
+'('=4
+')'=5
+':'=6
+'$'=7
+'='=8
+'{'=9
+'}'=10
+'...'=11
+'on'=12
+'fragment'=13
+'['=14
+']'=15
+'@'=16
+'!'=17
+'null'=20
+'-'=24
diff --git a/java/com/walmartlabs/lacinia/GraphqlBaseListener.java b/java/com/walmartlabs/lacinia/GraphqlBaseListener.java
new file mode 100644
index 00000000..2eed4d3d
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlBaseListener.java
@@ -0,0 +1,412 @@
+// Generated from resources/com/walmartlabs/lacinia/Graphql.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link GraphqlListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+@SuppressWarnings("CheckReturnValue")
+public class GraphqlBaseListener implements GraphqlListener {
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation does nothing.
+ */
+ @Override public void enterDocument(GraphqlParser.DocumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDocument(GraphqlParser.DocumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDefinition(GraphqlParser.DefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDefinition(GraphqlParser.DefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOperationDefinition(GraphqlParser.OperationDefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOperationDefinition(GraphqlParser.OperationDefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterName(GraphqlParser.NameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitName(GraphqlParser.NameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOperationType(GraphqlParser.OperationTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOperationType(GraphqlParser.OperationTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDefinitions(GraphqlParser.VariableDefinitionsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDefinitions(GraphqlParser.VariableDefinitionsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDefinition(GraphqlParser.VariableDefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDefinition(GraphqlParser.VariableDefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariable(GraphqlParser.VariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariable(GraphqlParser.VariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDefaultValue(GraphqlParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDefaultValue(GraphqlParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelectionSet(GraphqlParser.SelectionSetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelectionSet(GraphqlParser.SelectionSetContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSelection(GraphqlParser.SelectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSelection(GraphqlParser.SelectionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterField(GraphqlParser.FieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitField(GraphqlParser.FieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAlias(GraphqlParser.AliasContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAlias(GraphqlParser.AliasContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArguments(GraphqlParser.ArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArguments(GraphqlParser.ArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArgument(GraphqlParser.ArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArgument(GraphqlParser.ArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFragmentSpread(GraphqlParser.FragmentSpreadContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFragmentSpread(GraphqlParser.FragmentSpreadContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInlineFragment(GraphqlParser.InlineFragmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInlineFragment(GraphqlParser.InlineFragmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFragmentDefinition(GraphqlParser.FragmentDefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFragmentDefinition(GraphqlParser.FragmentDefinitionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFragmentName(GraphqlParser.FragmentNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFragmentName(GraphqlParser.FragmentNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeCondition(GraphqlParser.TypeConditionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeCondition(GraphqlParser.TypeConditionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterValue(GraphqlParser.ValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitValue(GraphqlParser.ValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumValue(GraphqlParser.EnumValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumValue(GraphqlParser.EnumValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayValue(GraphqlParser.ArrayValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayValue(GraphqlParser.ArrayValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterObjectValue(GraphqlParser.ObjectValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitObjectValue(GraphqlParser.ObjectValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterObjectField(GraphqlParser.ObjectFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitObjectField(GraphqlParser.ObjectFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectives(GraphqlParser.DirectivesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectives(GraphqlParser.DirectivesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirective(GraphqlParser.DirectiveContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirective(GraphqlParser.DirectiveContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterType(GraphqlParser.TypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitType(GraphqlParser.TypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeName(GraphqlParser.TypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeName(GraphqlParser.TypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterListType(GraphqlParser.ListTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitListType(GraphqlParser.ListTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNonNullType(GraphqlParser.NonNullTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNonNullType(GraphqlParser.NonNullTypeContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitTerminal(TerminalNode node) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitErrorNode(ErrorNode node) { }
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlLexer.interp b/java/com/walmartlabs/lacinia/GraphqlLexer.interp
new file mode 100644
index 00000000..2652efaf
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlLexer.interp
@@ -0,0 +1,119 @@
+token literal names:
+null
+'query'
+'mutation'
+'subscription'
+'('
+')'
+':'
+'$'
+'='
+'{'
+'}'
+'...'
+'on'
+'fragment'
+'['
+']'
+'@'
+'!'
+null
+null
+'null'
+null
+null
+null
+'-'
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+BooleanValue
+NullValue
+Null
+NameId
+IntValue
+FloatValue
+Sign
+IntegerPart
+NonZeroDigit
+ExponentPart
+Digit
+StringValue
+BlockStringValue
+Ignored
+
+rule names:
+T__0
+T__1
+T__2
+T__3
+T__4
+T__5
+T__6
+T__7
+T__8
+T__9
+T__10
+T__11
+T__12
+T__13
+T__14
+T__15
+T__16
+BooleanValue
+NullValue
+Null
+NameId
+IntValue
+FloatValue
+Sign
+IntegerPart
+NonZeroDigit
+ExponentPart
+Digit
+StringValue
+BlockStringValue
+EscapedChar
+Unicode
+DoubleQuote
+TripleQuote
+Hex
+Ignored
+Comment
+LineTerminator
+Whitespace
+Comma
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[4, 0, 31, 276, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 157, 8, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 5, 20, 168, 8, 20, 10, 20, 12, 20, 171, 9, 20, 1, 21, 3, 21, 174, 8, 21, 1, 21, 1, 21, 1, 22, 3, 22, 179, 8, 22, 1, 22, 1, 22, 1, 22, 4, 22, 184, 8, 22, 11, 22, 12, 22, 185, 3, 22, 188, 8, 22, 1, 22, 3, 22, 191, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 4, 24, 199, 8, 24, 11, 24, 12, 24, 200, 3, 24, 203, 8, 24, 1, 25, 1, 25, 1, 26, 1, 26, 3, 26, 209, 8, 26, 1, 26, 4, 26, 212, 8, 26, 11, 26, 12, 26, 213, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 221, 8, 28, 10, 28, 12, 28, 224, 9, 28, 1, 28, 1, 28, 1, 29, 1, 29, 5, 29, 230, 8, 29, 10, 29, 12, 29, 233, 9, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 3, 30, 240, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 260, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 5, 36, 266, 8, 36, 10, 36, 12, 36, 269, 9, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 231, 0, 40, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 0, 63, 0, 65, 0, 67, 0, 69, 0, 71, 31, 73, 0, 75, 0, 77, 0, 79, 0, 1, 0, 8, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 69, 69, 101, 101, 5, 0, 10, 10, 13, 13, 34, 34, 92, 92, 8232, 8233, 8, 0, 34, 34, 47, 47, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 10, 10, 13, 13, 8232, 8233, 4, 0, 9, 9, 11, 12, 32, 32, 160, 160, 286, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 1, 81, 1, 0, 0, 0, 3, 87, 1, 0, 0, 0, 5, 96, 1, 0, 0, 0, 7, 109, 1, 0, 0, 0, 9, 111, 1, 0, 0, 0, 11, 113, 1, 0, 0, 0, 13, 115, 1, 0, 0, 0, 15, 117, 1, 0, 0, 0, 17, 119, 1, 0, 0, 0, 19, 121, 1, 0, 0, 0, 21, 123, 1, 0, 0, 0, 23, 127, 1, 0, 0, 0, 25, 130, 1, 0, 0, 0, 27, 139, 1, 0, 0, 0, 29, 141, 1, 0, 0, 0, 31, 143, 1, 0, 0, 0, 33, 145, 1, 0, 0, 0, 35, 156, 1, 0, 0, 0, 37, 158, 1, 0, 0, 0, 39, 160, 1, 0, 0, 0, 41, 165, 1, 0, 0, 0, 43, 173, 1, 0, 0, 0, 45, 178, 1, 0, 0, 0, 47, 192, 1, 0, 0, 0, 49, 202, 1, 0, 0, 0, 51, 204, 1, 0, 0, 0, 53, 206, 1, 0, 0, 0, 55, 215, 1, 0, 0, 0, 57, 217, 1, 0, 0, 0, 59, 227, 1, 0, 0, 0, 61, 236, 1, 0, 0, 0, 63, 241, 1, 0, 0, 0, 65, 247, 1, 0, 0, 0, 67, 249, 1, 0, 0, 0, 69, 253, 1, 0, 0, 0, 71, 259, 1, 0, 0, 0, 73, 263, 1, 0, 0, 0, 75, 270, 1, 0, 0, 0, 77, 272, 1, 0, 0, 0, 79, 274, 1, 0, 0, 0, 81, 82, 5, 113, 0, 0, 82, 83, 5, 117, 0, 0, 83, 84, 5, 101, 0, 0, 84, 85, 5, 114, 0, 0, 85, 86, 5, 121, 0, 0, 86, 2, 1, 0, 0, 0, 87, 88, 5, 109, 0, 0, 88, 89, 5, 117, 0, 0, 89, 90, 5, 116, 0, 0, 90, 91, 5, 97, 0, 0, 91, 92, 5, 116, 0, 0, 92, 93, 5, 105, 0, 0, 93, 94, 5, 111, 0, 0, 94, 95, 5, 110, 0, 0, 95, 4, 1, 0, 0, 0, 96, 97, 5, 115, 0, 0, 97, 98, 5, 117, 0, 0, 98, 99, 5, 98, 0, 0, 99, 100, 5, 115, 0, 0, 100, 101, 5, 99, 0, 0, 101, 102, 5, 114, 0, 0, 102, 103, 5, 105, 0, 0, 103, 104, 5, 112, 0, 0, 104, 105, 5, 116, 0, 0, 105, 106, 5, 105, 0, 0, 106, 107, 5, 111, 0, 0, 107, 108, 5, 110, 0, 0, 108, 6, 1, 0, 0, 0, 109, 110, 5, 40, 0, 0, 110, 8, 1, 0, 0, 0, 111, 112, 5, 41, 0, 0, 112, 10, 1, 0, 0, 0, 113, 114, 5, 58, 0, 0, 114, 12, 1, 0, 0, 0, 115, 116, 5, 36, 0, 0, 116, 14, 1, 0, 0, 0, 117, 118, 5, 61, 0, 0, 118, 16, 1, 0, 0, 0, 119, 120, 5, 123, 0, 0, 120, 18, 1, 0, 0, 0, 121, 122, 5, 125, 0, 0, 122, 20, 1, 0, 0, 0, 123, 124, 5, 46, 0, 0, 124, 125, 5, 46, 0, 0, 125, 126, 5, 46, 0, 0, 126, 22, 1, 0, 0, 0, 127, 128, 5, 111, 0, 0, 128, 129, 5, 110, 0, 0, 129, 24, 1, 0, 0, 0, 130, 131, 5, 102, 0, 0, 131, 132, 5, 114, 0, 0, 132, 133, 5, 97, 0, 0, 133, 134, 5, 103, 0, 0, 134, 135, 5, 109, 0, 0, 135, 136, 5, 101, 0, 0, 136, 137, 5, 110, 0, 0, 137, 138, 5, 116, 0, 0, 138, 26, 1, 0, 0, 0, 139, 140, 5, 91, 0, 0, 140, 28, 1, 0, 0, 0, 141, 142, 5, 93, 0, 0, 142, 30, 1, 0, 0, 0, 143, 144, 5, 64, 0, 0, 144, 32, 1, 0, 0, 0, 145, 146, 5, 33, 0, 0, 146, 34, 1, 0, 0, 0, 147, 148, 5, 116, 0, 0, 148, 149, 5, 114, 0, 0, 149, 150, 5, 117, 0, 0, 150, 157, 5, 101, 0, 0, 151, 152, 5, 102, 0, 0, 152, 153, 5, 97, 0, 0, 153, 154, 5, 108, 0, 0, 154, 155, 5, 115, 0, 0, 155, 157, 5, 101, 0, 0, 156, 147, 1, 0, 0, 0, 156, 151, 1, 0, 0, 0, 157, 36, 1, 0, 0, 0, 158, 159, 3, 39, 19, 0, 159, 38, 1, 0, 0, 0, 160, 161, 5, 110, 0, 0, 161, 162, 5, 117, 0, 0, 162, 163, 5, 108, 0, 0, 163, 164, 5, 108, 0, 0, 164, 40, 1, 0, 0, 0, 165, 169, 7, 0, 0, 0, 166, 168, 7, 1, 0, 0, 167, 166, 1, 0, 0, 0, 168, 171, 1, 0, 0, 0, 169, 167, 1, 0, 0, 0, 169, 170, 1, 0, 0, 0, 170, 42, 1, 0, 0, 0, 171, 169, 1, 0, 0, 0, 172, 174, 3, 47, 23, 0, 173, 172, 1, 0, 0, 0, 173, 174, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 176, 3, 49, 24, 0, 176, 44, 1, 0, 0, 0, 177, 179, 3, 47, 23, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 187, 3, 49, 24, 0, 181, 183, 5, 46, 0, 0, 182, 184, 3, 55, 27, 0, 183, 182, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 188, 1, 0, 0, 0, 187, 181, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 190, 1, 0, 0, 0, 189, 191, 3, 53, 26, 0, 190, 189, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 46, 1, 0, 0, 0, 192, 193, 5, 45, 0, 0, 193, 48, 1, 0, 0, 0, 194, 203, 5, 48, 0, 0, 195, 203, 3, 51, 25, 0, 196, 198, 3, 51, 25, 0, 197, 199, 3, 55, 27, 0, 198, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 203, 1, 0, 0, 0, 202, 194, 1, 0, 0, 0, 202, 195, 1, 0, 0, 0, 202, 196, 1, 0, 0, 0, 203, 50, 1, 0, 0, 0, 204, 205, 2, 49, 57, 0, 205, 52, 1, 0, 0, 0, 206, 208, 7, 2, 0, 0, 207, 209, 3, 47, 23, 0, 208, 207, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 211, 1, 0, 0, 0, 210, 212, 3, 55, 27, 0, 211, 210, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 54, 1, 0, 0, 0, 215, 216, 2, 48, 57, 0, 216, 56, 1, 0, 0, 0, 217, 222, 3, 65, 32, 0, 218, 221, 8, 3, 0, 0, 219, 221, 3, 61, 30, 0, 220, 218, 1, 0, 0, 0, 220, 219, 1, 0, 0, 0, 221, 224, 1, 0, 0, 0, 222, 220, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 225, 1, 0, 0, 0, 224, 222, 1, 0, 0, 0, 225, 226, 3, 65, 32, 0, 226, 58, 1, 0, 0, 0, 227, 231, 3, 67, 33, 0, 228, 230, 9, 0, 0, 0, 229, 228, 1, 0, 0, 0, 230, 233, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 234, 1, 0, 0, 0, 233, 231, 1, 0, 0, 0, 234, 235, 3, 67, 33, 0, 235, 60, 1, 0, 0, 0, 236, 239, 5, 92, 0, 0, 237, 240, 7, 4, 0, 0, 238, 240, 3, 63, 31, 0, 239, 237, 1, 0, 0, 0, 239, 238, 1, 0, 0, 0, 240, 62, 1, 0, 0, 0, 241, 242, 5, 117, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 69, 34, 0, 244, 245, 3, 69, 34, 0, 245, 246, 3, 69, 34, 0, 246, 64, 1, 0, 0, 0, 247, 248, 5, 34, 0, 0, 248, 66, 1, 0, 0, 0, 249, 250, 5, 34, 0, 0, 250, 251, 5, 34, 0, 0, 251, 252, 5, 34, 0, 0, 252, 68, 1, 0, 0, 0, 253, 254, 7, 5, 0, 0, 254, 70, 1, 0, 0, 0, 255, 260, 3, 77, 38, 0, 256, 260, 3, 79, 39, 0, 257, 260, 3, 75, 37, 0, 258, 260, 3, 73, 36, 0, 259, 255, 1, 0, 0, 0, 259, 256, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 259, 258, 1, 0, 0, 0, 260, 261, 1, 0, 0, 0, 261, 262, 6, 35, 0, 0, 262, 72, 1, 0, 0, 0, 263, 267, 5, 35, 0, 0, 264, 266, 8, 6, 0, 0, 265, 264, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 74, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 270, 271, 7, 6, 0, 0, 271, 76, 1, 0, 0, 0, 272, 273, 7, 7, 0, 0, 273, 78, 1, 0, 0, 0, 274, 275, 5, 44, 0, 0, 275, 80, 1, 0, 0, 0, 18, 0, 156, 169, 173, 178, 185, 187, 190, 200, 202, 208, 213, 220, 222, 231, 239, 259, 267, 1, 6, 0, 0]
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlLexer.java b/java/com/walmartlabs/lacinia/GraphqlLexer.java
new file mode 100644
index 00000000..a7df1c98
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlLexer.java
@@ -0,0 +1,304 @@
+// Generated from resources/com/walmartlabs/lacinia/Graphql.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
+public class GraphqlLexer extends Lexer {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
+ T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
+ BooleanValue=18, NullValue=19, Null=20, NameId=21, IntValue=22, FloatValue=23,
+ Sign=24, IntegerPart=25, NonZeroDigit=26, ExponentPart=27, Digit=28, StringValue=29,
+ BlockStringValue=30, Ignored=31;
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static String[] modeNames = {
+ "DEFAULT_MODE"
+ };
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
+ "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
+ "BooleanValue", "NullValue", "Null", "NameId", "IntValue", "FloatValue",
+ "Sign", "IntegerPart", "NonZeroDigit", "ExponentPart", "Digit", "StringValue",
+ "BlockStringValue", "EscapedChar", "Unicode", "DoubleQuote", "TripleQuote",
+ "Hex", "Ignored", "Comment", "LineTerminator", "Whitespace", "Comma"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'query'", "'mutation'", "'subscription'", "'('", "')'", "':'",
+ "'$'", "'='", "'{'", "'}'", "'...'", "'on'", "'fragment'", "'['", "']'",
+ "'@'", "'!'", null, null, "'null'", null, null, null, "'-'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, "BooleanValue", "NullValue", "Null",
+ "NameId", "IntValue", "FloatValue", "Sign", "IntegerPart", "NonZeroDigit",
+ "ExponentPart", "Digit", "StringValue", "BlockStringValue", "Ignored"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+
+ public GraphqlLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Graphql.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getChannelNames() { return channelNames; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\u0004\u0000\u001f\u0114\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+
+ "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+
+ "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+
+ "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+
+ "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+
+ "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+
+ "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+
+ "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+
+ "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+
+ "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+
+ "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+
+ "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002"+
+ "&\u0007&\u0002\'\u0007\'\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002"+
+ "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
+ "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+
+ "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+
+ "\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001"+
+ "\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001"+
+ "\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f"+
+ "\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f"+
+ "\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
+ "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011"+
+ "\u009d\b\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0005\u0014\u00a8\b\u0014"+
+ "\n\u0014\f\u0014\u00ab\t\u0014\u0001\u0015\u0003\u0015\u00ae\b\u0015\u0001"+
+ "\u0015\u0001\u0015\u0001\u0016\u0003\u0016\u00b3\b\u0016\u0001\u0016\u0001"+
+ "\u0016\u0001\u0016\u0004\u0016\u00b8\b\u0016\u000b\u0016\f\u0016\u00b9"+
+ "\u0003\u0016\u00bc\b\u0016\u0001\u0016\u0003\u0016\u00bf\b\u0016\u0001"+
+ "\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0004"+
+ "\u0018\u00c7\b\u0018\u000b\u0018\f\u0018\u00c8\u0003\u0018\u00cb\b\u0018"+
+ "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0003\u001a\u00d1\b\u001a"+
+ "\u0001\u001a\u0004\u001a\u00d4\b\u001a\u000b\u001a\f\u001a\u00d5\u0001"+
+ "\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u00dd"+
+ "\b\u001c\n\u001c\f\u001c\u00e0\t\u001c\u0001\u001c\u0001\u001c\u0001\u001d"+
+ "\u0001\u001d\u0005\u001d\u00e6\b\u001d\n\u001d\f\u001d\u00e9\t\u001d\u0001"+
+ "\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0003\u001e\u00f0"+
+ "\b\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+
+ "\u001f\u0001 \u0001 \u0001!\u0001!\u0001!\u0001!\u0001\"\u0001\"\u0001"+
+ "#\u0001#\u0001#\u0001#\u0003#\u0104\b#\u0001#\u0001#\u0001$\u0001$\u0005"+
+ "$\u010a\b$\n$\f$\u010d\t$\u0001%\u0001%\u0001&\u0001&\u0001\'\u0001\'"+
+ "\u0001\u00e7\u0000(\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t"+
+ "\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f"+
+ "\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014"+
+ ")\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e"+
+ "=\u0000?\u0000A\u0000C\u0000E\u0000G\u001fI\u0000K\u0000M\u0000O\u0000"+
+ "\u0001\u0000\b\u0003\u0000AZ__az\u0004\u000009AZ__az\u0002\u0000EEee\u0005"+
+ "\u0000\n\n\r\r\"\"\\\\\u2028\u2029\b\u0000\"\"//\\\\bbffnnrrtt\u0003\u0000"+
+ "09AFaf\u0003\u0000\n\n\r\r\u2028\u2029\u0004\u0000\t\t\u000b\f \u00a0"+
+ "\u00a0\u011e\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003\u0001\u0000"+
+ "\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000"+
+ "\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000"+
+ "\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000"+
+ "\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000"+
+ "\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000"+
+ "\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000"+
+ "\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000"+
+ "\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%"+
+ "\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000)\u0001"+
+ "\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001\u0000\u0000"+
+ "\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000\u0000\u0000"+
+ "3\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u00007\u0001"+
+ "\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001\u0000\u0000"+
+ "\u0000\u0000G\u0001\u0000\u0000\u0000\u0001Q\u0001\u0000\u0000\u0000\u0003"+
+ "W\u0001\u0000\u0000\u0000\u0005`\u0001\u0000\u0000\u0000\u0007m\u0001"+
+ "\u0000\u0000\u0000\to\u0001\u0000\u0000\u0000\u000bq\u0001\u0000\u0000"+
+ "\u0000\rs\u0001\u0000\u0000\u0000\u000fu\u0001\u0000\u0000\u0000\u0011"+
+ "w\u0001\u0000\u0000\u0000\u0013y\u0001\u0000\u0000\u0000\u0015{\u0001"+
+ "\u0000\u0000\u0000\u0017\u007f\u0001\u0000\u0000\u0000\u0019\u0082\u0001"+
+ "\u0000\u0000\u0000\u001b\u008b\u0001\u0000\u0000\u0000\u001d\u008d\u0001"+
+ "\u0000\u0000\u0000\u001f\u008f\u0001\u0000\u0000\u0000!\u0091\u0001\u0000"+
+ "\u0000\u0000#\u009c\u0001\u0000\u0000\u0000%\u009e\u0001\u0000\u0000\u0000"+
+ "\'\u00a0\u0001\u0000\u0000\u0000)\u00a5\u0001\u0000\u0000\u0000+\u00ad"+
+ "\u0001\u0000\u0000\u0000-\u00b2\u0001\u0000\u0000\u0000/\u00c0\u0001\u0000"+
+ "\u0000\u00001\u00ca\u0001\u0000\u0000\u00003\u00cc\u0001\u0000\u0000\u0000"+
+ "5\u00ce\u0001\u0000\u0000\u00007\u00d7\u0001\u0000\u0000\u00009\u00d9"+
+ "\u0001\u0000\u0000\u0000;\u00e3\u0001\u0000\u0000\u0000=\u00ec\u0001\u0000"+
+ "\u0000\u0000?\u00f1\u0001\u0000\u0000\u0000A\u00f7\u0001\u0000\u0000\u0000"+
+ "C\u00f9\u0001\u0000\u0000\u0000E\u00fd\u0001\u0000\u0000\u0000G\u0103"+
+ "\u0001\u0000\u0000\u0000I\u0107\u0001\u0000\u0000\u0000K\u010e\u0001\u0000"+
+ "\u0000\u0000M\u0110\u0001\u0000\u0000\u0000O\u0112\u0001\u0000\u0000\u0000"+
+ "QR\u0005q\u0000\u0000RS\u0005u\u0000\u0000ST\u0005e\u0000\u0000TU\u0005"+
+ "r\u0000\u0000UV\u0005y\u0000\u0000V\u0002\u0001\u0000\u0000\u0000WX\u0005"+
+ "m\u0000\u0000XY\u0005u\u0000\u0000YZ\u0005t\u0000\u0000Z[\u0005a\u0000"+
+ "\u0000[\\\u0005t\u0000\u0000\\]\u0005i\u0000\u0000]^\u0005o\u0000\u0000"+
+ "^_\u0005n\u0000\u0000_\u0004\u0001\u0000\u0000\u0000`a\u0005s\u0000\u0000"+
+ "ab\u0005u\u0000\u0000bc\u0005b\u0000\u0000cd\u0005s\u0000\u0000de\u0005"+
+ "c\u0000\u0000ef\u0005r\u0000\u0000fg\u0005i\u0000\u0000gh\u0005p\u0000"+
+ "\u0000hi\u0005t\u0000\u0000ij\u0005i\u0000\u0000jk\u0005o\u0000\u0000"+
+ "kl\u0005n\u0000\u0000l\u0006\u0001\u0000\u0000\u0000mn\u0005(\u0000\u0000"+
+ "n\b\u0001\u0000\u0000\u0000op\u0005)\u0000\u0000p\n\u0001\u0000\u0000"+
+ "\u0000qr\u0005:\u0000\u0000r\f\u0001\u0000\u0000\u0000st\u0005$\u0000"+
+ "\u0000t\u000e\u0001\u0000\u0000\u0000uv\u0005=\u0000\u0000v\u0010\u0001"+
+ "\u0000\u0000\u0000wx\u0005{\u0000\u0000x\u0012\u0001\u0000\u0000\u0000"+
+ "yz\u0005}\u0000\u0000z\u0014\u0001\u0000\u0000\u0000{|\u0005.\u0000\u0000"+
+ "|}\u0005.\u0000\u0000}~\u0005.\u0000\u0000~\u0016\u0001\u0000\u0000\u0000"+
+ "\u007f\u0080\u0005o\u0000\u0000\u0080\u0081\u0005n\u0000\u0000\u0081\u0018"+
+ "\u0001\u0000\u0000\u0000\u0082\u0083\u0005f\u0000\u0000\u0083\u0084\u0005"+
+ "r\u0000\u0000\u0084\u0085\u0005a\u0000\u0000\u0085\u0086\u0005g\u0000"+
+ "\u0000\u0086\u0087\u0005m\u0000\u0000\u0087\u0088\u0005e\u0000\u0000\u0088"+
+ "\u0089\u0005n\u0000\u0000\u0089\u008a\u0005t\u0000\u0000\u008a\u001a\u0001"+
+ "\u0000\u0000\u0000\u008b\u008c\u0005[\u0000\u0000\u008c\u001c\u0001\u0000"+
+ "\u0000\u0000\u008d\u008e\u0005]\u0000\u0000\u008e\u001e\u0001\u0000\u0000"+
+ "\u0000\u008f\u0090\u0005@\u0000\u0000\u0090 \u0001\u0000\u0000\u0000\u0091"+
+ "\u0092\u0005!\u0000\u0000\u0092\"\u0001\u0000\u0000\u0000\u0093\u0094"+
+ "\u0005t\u0000\u0000\u0094\u0095\u0005r\u0000\u0000\u0095\u0096\u0005u"+
+ "\u0000\u0000\u0096\u009d\u0005e\u0000\u0000\u0097\u0098\u0005f\u0000\u0000"+
+ "\u0098\u0099\u0005a\u0000\u0000\u0099\u009a\u0005l\u0000\u0000\u009a\u009b"+
+ "\u0005s\u0000\u0000\u009b\u009d\u0005e\u0000\u0000\u009c\u0093\u0001\u0000"+
+ "\u0000\u0000\u009c\u0097\u0001\u0000\u0000\u0000\u009d$\u0001\u0000\u0000"+
+ "\u0000\u009e\u009f\u0003\'\u0013\u0000\u009f&\u0001\u0000\u0000\u0000"+
+ "\u00a0\u00a1\u0005n\u0000\u0000\u00a1\u00a2\u0005u\u0000\u0000\u00a2\u00a3"+
+ "\u0005l\u0000\u0000\u00a3\u00a4\u0005l\u0000\u0000\u00a4(\u0001\u0000"+
+ "\u0000\u0000\u00a5\u00a9\u0007\u0000\u0000\u0000\u00a6\u00a8\u0007\u0001"+
+ "\u0000\u0000\u00a7\u00a6\u0001\u0000\u0000\u0000\u00a8\u00ab\u0001\u0000"+
+ "\u0000\u0000\u00a9\u00a7\u0001\u0000\u0000\u0000\u00a9\u00aa\u0001\u0000"+
+ "\u0000\u0000\u00aa*\u0001\u0000\u0000\u0000\u00ab\u00a9\u0001\u0000\u0000"+
+ "\u0000\u00ac\u00ae\u0003/\u0017\u0000\u00ad\u00ac\u0001\u0000\u0000\u0000"+
+ "\u00ad\u00ae\u0001\u0000\u0000\u0000\u00ae\u00af\u0001\u0000\u0000\u0000"+
+ "\u00af\u00b0\u00031\u0018\u0000\u00b0,\u0001\u0000\u0000\u0000\u00b1\u00b3"+
+ "\u0003/\u0017\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000\u00b2\u00b3\u0001"+
+ "\u0000\u0000\u0000\u00b3\u00b4\u0001\u0000\u0000\u0000\u00b4\u00bb\u0003"+
+ "1\u0018\u0000\u00b5\u00b7\u0005.\u0000\u0000\u00b6\u00b8\u00037\u001b"+
+ "\u0000\u00b7\u00b6\u0001\u0000\u0000\u0000\u00b8\u00b9\u0001\u0000\u0000"+
+ "\u0000\u00b9\u00b7\u0001\u0000\u0000\u0000\u00b9\u00ba\u0001\u0000\u0000"+
+ "\u0000\u00ba\u00bc\u0001\u0000\u0000\u0000\u00bb\u00b5\u0001\u0000\u0000"+
+ "\u0000\u00bb\u00bc\u0001\u0000\u0000\u0000\u00bc\u00be\u0001\u0000\u0000"+
+ "\u0000\u00bd\u00bf\u00035\u001a\u0000\u00be\u00bd\u0001\u0000\u0000\u0000"+
+ "\u00be\u00bf\u0001\u0000\u0000\u0000\u00bf.\u0001\u0000\u0000\u0000\u00c0"+
+ "\u00c1\u0005-\u0000\u0000\u00c10\u0001\u0000\u0000\u0000\u00c2\u00cb\u0005"+
+ "0\u0000\u0000\u00c3\u00cb\u00033\u0019\u0000\u00c4\u00c6\u00033\u0019"+
+ "\u0000\u00c5\u00c7\u00037\u001b\u0000\u00c6\u00c5\u0001\u0000\u0000\u0000"+
+ "\u00c7\u00c8\u0001\u0000\u0000\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000"+
+ "\u00c8\u00c9\u0001\u0000\u0000\u0000\u00c9\u00cb\u0001\u0000\u0000\u0000"+
+ "\u00ca\u00c2\u0001\u0000\u0000\u0000\u00ca\u00c3\u0001\u0000\u0000\u0000"+
+ "\u00ca\u00c4\u0001\u0000\u0000\u0000\u00cb2\u0001\u0000\u0000\u0000\u00cc"+
+ "\u00cd\u000219\u0000\u00cd4\u0001\u0000\u0000\u0000\u00ce\u00d0\u0007"+
+ "\u0002\u0000\u0000\u00cf\u00d1\u0003/\u0017\u0000\u00d0\u00cf\u0001\u0000"+
+ "\u0000\u0000\u00d0\u00d1\u0001\u0000\u0000\u0000\u00d1\u00d3\u0001\u0000"+
+ "\u0000\u0000\u00d2\u00d4\u00037\u001b\u0000\u00d3\u00d2\u0001\u0000\u0000"+
+ "\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5\u00d3\u0001\u0000\u0000"+
+ "\u0000\u00d5\u00d6\u0001\u0000\u0000\u0000\u00d66\u0001\u0000\u0000\u0000"+
+ "\u00d7\u00d8\u000209\u0000\u00d88\u0001\u0000\u0000\u0000\u00d9\u00de"+
+ "\u0003A \u0000\u00da\u00dd\b\u0003\u0000\u0000\u00db\u00dd\u0003=\u001e"+
+ "\u0000\u00dc\u00da\u0001\u0000\u0000\u0000\u00dc\u00db\u0001\u0000\u0000"+
+ "\u0000\u00dd\u00e0\u0001\u0000\u0000\u0000\u00de\u00dc\u0001\u0000\u0000"+
+ "\u0000\u00de\u00df\u0001\u0000\u0000\u0000\u00df\u00e1\u0001\u0000\u0000"+
+ "\u0000\u00e0\u00de\u0001\u0000\u0000\u0000\u00e1\u00e2\u0003A \u0000\u00e2"+
+ ":\u0001\u0000\u0000\u0000\u00e3\u00e7\u0003C!\u0000\u00e4\u00e6\t\u0000"+
+ "\u0000\u0000\u00e5\u00e4\u0001\u0000\u0000\u0000\u00e6\u00e9\u0001\u0000"+
+ "\u0000\u0000\u00e7\u00e8\u0001\u0000\u0000\u0000\u00e7\u00e5\u0001\u0000"+
+ "\u0000\u0000\u00e8\u00ea\u0001\u0000\u0000\u0000\u00e9\u00e7\u0001\u0000"+
+ "\u0000\u0000\u00ea\u00eb\u0003C!\u0000\u00eb<\u0001\u0000\u0000\u0000"+
+ "\u00ec\u00ef\u0005\\\u0000\u0000\u00ed\u00f0\u0007\u0004\u0000\u0000\u00ee"+
+ "\u00f0\u0003?\u001f\u0000\u00ef\u00ed\u0001\u0000\u0000\u0000\u00ef\u00ee"+
+ "\u0001\u0000\u0000\u0000\u00f0>\u0001\u0000\u0000\u0000\u00f1\u00f2\u0005"+
+ "u\u0000\u0000\u00f2\u00f3\u0003E\"\u0000\u00f3\u00f4\u0003E\"\u0000\u00f4"+
+ "\u00f5\u0003E\"\u0000\u00f5\u00f6\u0003E\"\u0000\u00f6@\u0001\u0000\u0000"+
+ "\u0000\u00f7\u00f8\u0005\"\u0000\u0000\u00f8B\u0001\u0000\u0000\u0000"+
+ "\u00f9\u00fa\u0005\"\u0000\u0000\u00fa\u00fb\u0005\"\u0000\u0000\u00fb"+
+ "\u00fc\u0005\"\u0000\u0000\u00fcD\u0001\u0000\u0000\u0000\u00fd\u00fe"+
+ "\u0007\u0005\u0000\u0000\u00feF\u0001\u0000\u0000\u0000\u00ff\u0104\u0003"+
+ "M&\u0000\u0100\u0104\u0003O\'\u0000\u0101\u0104\u0003K%\u0000\u0102\u0104"+
+ "\u0003I$\u0000\u0103\u00ff\u0001\u0000\u0000\u0000\u0103\u0100\u0001\u0000"+
+ "\u0000\u0000\u0103\u0101\u0001\u0000\u0000\u0000\u0103\u0102\u0001\u0000"+
+ "\u0000\u0000\u0104\u0105\u0001\u0000\u0000\u0000\u0105\u0106\u0006#\u0000"+
+ "\u0000\u0106H\u0001\u0000\u0000\u0000\u0107\u010b\u0005#\u0000\u0000\u0108"+
+ "\u010a\b\u0006\u0000\u0000\u0109\u0108\u0001\u0000\u0000\u0000\u010a\u010d"+
+ "\u0001\u0000\u0000\u0000\u010b\u0109\u0001\u0000\u0000\u0000\u010b\u010c"+
+ "\u0001\u0000\u0000\u0000\u010cJ\u0001\u0000\u0000\u0000\u010d\u010b\u0001"+
+ "\u0000\u0000\u0000\u010e\u010f\u0007\u0006\u0000\u0000\u010fL\u0001\u0000"+
+ "\u0000\u0000\u0110\u0111\u0007\u0007\u0000\u0000\u0111N\u0001\u0000\u0000"+
+ "\u0000\u0112\u0113\u0005,\u0000\u0000\u0113P\u0001\u0000\u0000\u0000\u0012"+
+ "\u0000\u009c\u00a9\u00ad\u00b2\u00b9\u00bb\u00be\u00c8\u00ca\u00d0\u00d5"+
+ "\u00dc\u00de\u00e7\u00ef\u0103\u010b\u0001\u0006\u0000\u0000";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlLexer.tokens b/java/com/walmartlabs/lacinia/GraphqlLexer.tokens
new file mode 100644
index 00000000..7660c485
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlLexer.tokens
@@ -0,0 +1,50 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+T__9=10
+T__10=11
+T__11=12
+T__12=13
+T__13=14
+T__14=15
+T__15=16
+T__16=17
+BooleanValue=18
+NullValue=19
+Null=20
+NameId=21
+IntValue=22
+FloatValue=23
+Sign=24
+IntegerPart=25
+NonZeroDigit=26
+ExponentPart=27
+Digit=28
+StringValue=29
+BlockStringValue=30
+Ignored=31
+'query'=1
+'mutation'=2
+'subscription'=3
+'('=4
+')'=5
+':'=6
+'$'=7
+'='=8
+'{'=9
+'}'=10
+'...'=11
+'on'=12
+'fragment'=13
+'['=14
+']'=15
+'@'=16
+'!'=17
+'null'=20
+'-'=24
diff --git a/java/com/walmartlabs/lacinia/GraphqlListener.java b/java/com/walmartlabs/lacinia/GraphqlListener.java
new file mode 100644
index 00000000..74e99be1
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlListener.java
@@ -0,0 +1,320 @@
+// Generated from resources/com/walmartlabs/lacinia/Graphql.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link GraphqlParser}.
+ */
+public interface GraphqlListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#document}.
+ * @param ctx the parse tree
+ */
+ void enterDocument(GraphqlParser.DocumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#document}.
+ * @param ctx the parse tree
+ */
+ void exitDocument(GraphqlParser.DocumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#definition}.
+ * @param ctx the parse tree
+ */
+ void enterDefinition(GraphqlParser.DefinitionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#definition}.
+ * @param ctx the parse tree
+ */
+ void exitDefinition(GraphqlParser.DefinitionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#operationDefinition}.
+ * @param ctx the parse tree
+ */
+ void enterOperationDefinition(GraphqlParser.OperationDefinitionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#operationDefinition}.
+ * @param ctx the parse tree
+ */
+ void exitOperationDefinition(GraphqlParser.OperationDefinitionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#name}.
+ * @param ctx the parse tree
+ */
+ void enterName(GraphqlParser.NameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#name}.
+ * @param ctx the parse tree
+ */
+ void exitName(GraphqlParser.NameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#operationType}.
+ * @param ctx the parse tree
+ */
+ void enterOperationType(GraphqlParser.OperationTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#operationType}.
+ * @param ctx the parse tree
+ */
+ void exitOperationType(GraphqlParser.OperationTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#variableDefinitions}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDefinitions(GraphqlParser.VariableDefinitionsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#variableDefinitions}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDefinitions(GraphqlParser.VariableDefinitionsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#variableDefinition}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDefinition(GraphqlParser.VariableDefinitionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#variableDefinition}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDefinition(GraphqlParser.VariableDefinitionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#variable}.
+ * @param ctx the parse tree
+ */
+ void enterVariable(GraphqlParser.VariableContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#variable}.
+ * @param ctx the parse tree
+ */
+ void exitVariable(GraphqlParser.VariableContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void enterDefaultValue(GraphqlParser.DefaultValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void exitDefaultValue(GraphqlParser.DefaultValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#selectionSet}.
+ * @param ctx the parse tree
+ */
+ void enterSelectionSet(GraphqlParser.SelectionSetContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#selectionSet}.
+ * @param ctx the parse tree
+ */
+ void exitSelectionSet(GraphqlParser.SelectionSetContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#selection}.
+ * @param ctx the parse tree
+ */
+ void enterSelection(GraphqlParser.SelectionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#selection}.
+ * @param ctx the parse tree
+ */
+ void exitSelection(GraphqlParser.SelectionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#field}.
+ * @param ctx the parse tree
+ */
+ void enterField(GraphqlParser.FieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#field}.
+ * @param ctx the parse tree
+ */
+ void exitField(GraphqlParser.FieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#alias}.
+ * @param ctx the parse tree
+ */
+ void enterAlias(GraphqlParser.AliasContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#alias}.
+ * @param ctx the parse tree
+ */
+ void exitAlias(GraphqlParser.AliasContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#arguments}.
+ * @param ctx the parse tree
+ */
+ void enterArguments(GraphqlParser.ArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#arguments}.
+ * @param ctx the parse tree
+ */
+ void exitArguments(GraphqlParser.ArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#argument}.
+ * @param ctx the parse tree
+ */
+ void enterArgument(GraphqlParser.ArgumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#argument}.
+ * @param ctx the parse tree
+ */
+ void exitArgument(GraphqlParser.ArgumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#fragmentSpread}.
+ * @param ctx the parse tree
+ */
+ void enterFragmentSpread(GraphqlParser.FragmentSpreadContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#fragmentSpread}.
+ * @param ctx the parse tree
+ */
+ void exitFragmentSpread(GraphqlParser.FragmentSpreadContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#inlineFragment}.
+ * @param ctx the parse tree
+ */
+ void enterInlineFragment(GraphqlParser.InlineFragmentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#inlineFragment}.
+ * @param ctx the parse tree
+ */
+ void exitInlineFragment(GraphqlParser.InlineFragmentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#fragmentDefinition}.
+ * @param ctx the parse tree
+ */
+ void enterFragmentDefinition(GraphqlParser.FragmentDefinitionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#fragmentDefinition}.
+ * @param ctx the parse tree
+ */
+ void exitFragmentDefinition(GraphqlParser.FragmentDefinitionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#fragmentName}.
+ * @param ctx the parse tree
+ */
+ void enterFragmentName(GraphqlParser.FragmentNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#fragmentName}.
+ * @param ctx the parse tree
+ */
+ void exitFragmentName(GraphqlParser.FragmentNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#typeCondition}.
+ * @param ctx the parse tree
+ */
+ void enterTypeCondition(GraphqlParser.TypeConditionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#typeCondition}.
+ * @param ctx the parse tree
+ */
+ void exitTypeCondition(GraphqlParser.TypeConditionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#value}.
+ * @param ctx the parse tree
+ */
+ void enterValue(GraphqlParser.ValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#value}.
+ * @param ctx the parse tree
+ */
+ void exitValue(GraphqlParser.ValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#enumValue}.
+ * @param ctx the parse tree
+ */
+ void enterEnumValue(GraphqlParser.EnumValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#enumValue}.
+ * @param ctx the parse tree
+ */
+ void exitEnumValue(GraphqlParser.EnumValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#arrayValue}.
+ * @param ctx the parse tree
+ */
+ void enterArrayValue(GraphqlParser.ArrayValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#arrayValue}.
+ * @param ctx the parse tree
+ */
+ void exitArrayValue(GraphqlParser.ArrayValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#objectValue}.
+ * @param ctx the parse tree
+ */
+ void enterObjectValue(GraphqlParser.ObjectValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#objectValue}.
+ * @param ctx the parse tree
+ */
+ void exitObjectValue(GraphqlParser.ObjectValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#objectField}.
+ * @param ctx the parse tree
+ */
+ void enterObjectField(GraphqlParser.ObjectFieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#objectField}.
+ * @param ctx the parse tree
+ */
+ void exitObjectField(GraphqlParser.ObjectFieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#directives}.
+ * @param ctx the parse tree
+ */
+ void enterDirectives(GraphqlParser.DirectivesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#directives}.
+ * @param ctx the parse tree
+ */
+ void exitDirectives(GraphqlParser.DirectivesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#directive}.
+ * @param ctx the parse tree
+ */
+ void enterDirective(GraphqlParser.DirectiveContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#directive}.
+ * @param ctx the parse tree
+ */
+ void exitDirective(GraphqlParser.DirectiveContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#type}.
+ * @param ctx the parse tree
+ */
+ void enterType(GraphqlParser.TypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#type}.
+ * @param ctx the parse tree
+ */
+ void exitType(GraphqlParser.TypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#typeName}.
+ * @param ctx the parse tree
+ */
+ void enterTypeName(GraphqlParser.TypeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#typeName}.
+ * @param ctx the parse tree
+ */
+ void exitTypeName(GraphqlParser.TypeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#listType}.
+ * @param ctx the parse tree
+ */
+ void enterListType(GraphqlParser.ListTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#listType}.
+ * @param ctx the parse tree
+ */
+ void exitListType(GraphqlParser.ListTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlParser#nonNullType}.
+ * @param ctx the parse tree
+ */
+ void enterNonNullType(GraphqlParser.NonNullTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlParser#nonNullType}.
+ * @param ctx the parse tree
+ */
+ void exitNonNullType(GraphqlParser.NonNullTypeContext ctx);
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlParser.java b/java/com/walmartlabs/lacinia/GraphqlParser.java
new file mode 100644
index 00000000..9bd697fa
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlParser.java
@@ -0,0 +1,2088 @@
+// Generated from resources/com/walmartlabs/lacinia/Graphql.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class GraphqlParser extends Parser {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
+ T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
+ BooleanValue=18, NullValue=19, Null=20, NameId=21, IntValue=22, FloatValue=23,
+ Sign=24, IntegerPart=25, NonZeroDigit=26, ExponentPart=27, Digit=28, StringValue=29,
+ BlockStringValue=30, Ignored=31;
+ public static final int
+ RULE_document = 0, RULE_definition = 1, RULE_operationDefinition = 2,
+ RULE_name = 3, RULE_operationType = 4, RULE_variableDefinitions = 5, RULE_variableDefinition = 6,
+ RULE_variable = 7, RULE_defaultValue = 8, RULE_selectionSet = 9, RULE_selection = 10,
+ RULE_field = 11, RULE_alias = 12, RULE_arguments = 13, RULE_argument = 14,
+ RULE_fragmentSpread = 15, RULE_inlineFragment = 16, RULE_fragmentDefinition = 17,
+ RULE_fragmentName = 18, RULE_typeCondition = 19, RULE_value = 20, RULE_enumValue = 21,
+ RULE_arrayValue = 22, RULE_objectValue = 23, RULE_objectField = 24, RULE_directives = 25,
+ RULE_directive = 26, RULE_type = 27, RULE_typeName = 28, RULE_listType = 29,
+ RULE_nonNullType = 30;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "document", "definition", "operationDefinition", "name", "operationType",
+ "variableDefinitions", "variableDefinition", "variable", "defaultValue",
+ "selectionSet", "selection", "field", "alias", "arguments", "argument",
+ "fragmentSpread", "inlineFragment", "fragmentDefinition", "fragmentName",
+ "typeCondition", "value", "enumValue", "arrayValue", "objectValue", "objectField",
+ "directives", "directive", "type", "typeName", "listType", "nonNullType"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'query'", "'mutation'", "'subscription'", "'('", "')'", "':'",
+ "'$'", "'='", "'{'", "'}'", "'...'", "'on'", "'fragment'", "'['", "']'",
+ "'@'", "'!'", null, null, "'null'", null, null, null, "'-'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, "BooleanValue", "NullValue", "Null",
+ "NameId", "IntValue", "FloatValue", "Sign", "IntegerPart", "NonZeroDigit",
+ "ExponentPart", "Digit", "StringValue", "BlockStringValue", "Ignored"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Graphql.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public GraphqlParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DocumentContext extends ParserRuleContext {
+ public List definition() {
+ return getRuleContexts(DefinitionContext.class);
+ }
+ public DefinitionContext definition(int i) {
+ return getRuleContext(DefinitionContext.class,i);
+ }
+ public DocumentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_document; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterDocument(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitDocument(this);
+ }
+ }
+
+ public final DocumentContext document() throws RecognitionException {
+ DocumentContext _localctx = new DocumentContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_document);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(63);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(62);
+ definition();
+ }
+ }
+ setState(65);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 8718L) != 0) );
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DefinitionContext extends ParserRuleContext {
+ public OperationDefinitionContext operationDefinition() {
+ return getRuleContext(OperationDefinitionContext.class,0);
+ }
+ public FragmentDefinitionContext fragmentDefinition() {
+ return getRuleContext(FragmentDefinitionContext.class,0);
+ }
+ public DefinitionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_definition; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterDefinition(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitDefinition(this);
+ }
+ }
+
+ public final DefinitionContext definition() throws RecognitionException {
+ DefinitionContext _localctx = new DefinitionContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_definition);
+ try {
+ setState(69);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case T__1:
+ case T__2:
+ case T__8:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(67);
+ operationDefinition();
+ }
+ break;
+ case T__12:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(68);
+ fragmentDefinition();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OperationDefinitionContext extends ParserRuleContext {
+ public SelectionSetContext selectionSet() {
+ return getRuleContext(SelectionSetContext.class,0);
+ }
+ public OperationTypeContext operationType() {
+ return getRuleContext(OperationTypeContext.class,0);
+ }
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public VariableDefinitionsContext variableDefinitions() {
+ return getRuleContext(VariableDefinitionsContext.class,0);
+ }
+ public DirectivesContext directives() {
+ return getRuleContext(DirectivesContext.class,0);
+ }
+ public OperationDefinitionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_operationDefinition; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterOperationDefinition(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitOperationDefinition(this);
+ }
+ }
+
+ public final OperationDefinitionContext operationDefinition() throws RecognitionException {
+ OperationDefinitionContext _localctx = new OperationDefinitionContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_operationDefinition);
+ int _la;
+ try {
+ setState(84);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__8:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(71);
+ selectionSet();
+ }
+ break;
+ case T__0:
+ case T__1:
+ case T__2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(72);
+ operationType();
+ setState(74);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 2097166L) != 0)) {
+ {
+ setState(73);
+ name();
+ }
+ }
+
+ setState(77);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__3) {
+ {
+ setState(76);
+ variableDefinitions();
+ }
+ }
+
+ setState(80);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__15) {
+ {
+ setState(79);
+ directives();
+ }
+ }
+
+ setState(82);
+ selectionSet();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NameContext extends ParserRuleContext {
+ public TerminalNode NameId() { return getToken(GraphqlParser.NameId, 0); }
+ public NameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_name; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitName(this);
+ }
+ }
+
+ public final NameContext name() throws RecognitionException {
+ NameContext _localctx = new NameContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_name);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(86);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 2097166L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OperationTypeContext extends ParserRuleContext {
+ public OperationTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_operationType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterOperationType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitOperationType(this);
+ }
+ }
+
+ public final OperationTypeContext operationType() throws RecognitionException {
+ OperationTypeContext _localctx = new OperationTypeContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_operationType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(88);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 14L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableDefinitionsContext extends ParserRuleContext {
+ public List variableDefinition() {
+ return getRuleContexts(VariableDefinitionContext.class);
+ }
+ public VariableDefinitionContext variableDefinition(int i) {
+ return getRuleContext(VariableDefinitionContext.class,i);
+ }
+ public VariableDefinitionsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDefinitions; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterVariableDefinitions(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitVariableDefinitions(this);
+ }
+ }
+
+ public final VariableDefinitionsContext variableDefinitions() throws RecognitionException {
+ VariableDefinitionsContext _localctx = new VariableDefinitionsContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_variableDefinitions);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(90);
+ match(T__3);
+ setState(92);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(91);
+ variableDefinition();
+ }
+ }
+ setState(94);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==T__6 );
+ setState(96);
+ match(T__4);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableDefinitionContext extends ParserRuleContext {
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public DefaultValueContext defaultValue() {
+ return getRuleContext(DefaultValueContext.class,0);
+ }
+ public VariableDefinitionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDefinition; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterVariableDefinition(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitVariableDefinition(this);
+ }
+ }
+
+ public final VariableDefinitionContext variableDefinition() throws RecognitionException {
+ VariableDefinitionContext _localctx = new VariableDefinitionContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_variableDefinition);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(98);
+ variable();
+ setState(99);
+ match(T__5);
+ setState(100);
+ type();
+ setState(102);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__7) {
+ {
+ setState(101);
+ defaultValue();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public VariableContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variable; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterVariable(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitVariable(this);
+ }
+ }
+
+ public final VariableContext variable() throws RecognitionException {
+ VariableContext _localctx = new VariableContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_variable);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(104);
+ match(T__6);
+ setState(105);
+ name();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DefaultValueContext extends ParserRuleContext {
+ public ValueContext value() {
+ return getRuleContext(ValueContext.class,0);
+ }
+ public DefaultValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_defaultValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterDefaultValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitDefaultValue(this);
+ }
+ }
+
+ public final DefaultValueContext defaultValue() throws RecognitionException {
+ DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_defaultValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(107);
+ match(T__7);
+ setState(108);
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectionSetContext extends ParserRuleContext {
+ public List selection() {
+ return getRuleContexts(SelectionContext.class);
+ }
+ public SelectionContext selection(int i) {
+ return getRuleContext(SelectionContext.class,i);
+ }
+ public SelectionSetContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selectionSet; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterSelectionSet(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitSelectionSet(this);
+ }
+ }
+
+ public final SelectionSetContext selectionSet() throws RecognitionException {
+ SelectionSetContext _localctx = new SelectionSetContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_selectionSet);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(110);
+ match(T__8);
+ setState(112);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(111);
+ selection();
+ }
+ }
+ setState(114);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 2099214L) != 0) );
+ setState(116);
+ match(T__9);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SelectionContext extends ParserRuleContext {
+ public FieldContext field() {
+ return getRuleContext(FieldContext.class,0);
+ }
+ public FragmentSpreadContext fragmentSpread() {
+ return getRuleContext(FragmentSpreadContext.class,0);
+ }
+ public InlineFragmentContext inlineFragment() {
+ return getRuleContext(InlineFragmentContext.class,0);
+ }
+ public SelectionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_selection; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterSelection(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitSelection(this);
+ }
+ }
+
+ public final SelectionContext selection() throws RecognitionException {
+ SelectionContext _localctx = new SelectionContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_selection);
+ try {
+ setState(121);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(118);
+ field();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(119);
+ fragmentSpread();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(120);
+ inlineFragment();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public AliasContext alias() {
+ return getRuleContext(AliasContext.class,0);
+ }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public DirectivesContext directives() {
+ return getRuleContext(DirectivesContext.class,0);
+ }
+ public SelectionSetContext selectionSet() {
+ return getRuleContext(SelectionSetContext.class,0);
+ }
+ public FieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_field; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitField(this);
+ }
+ }
+
+ public final FieldContext field() throws RecognitionException {
+ FieldContext _localctx = new FieldContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_field);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(124);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+ case 1:
+ {
+ setState(123);
+ alias();
+ }
+ break;
+ }
+ setState(126);
+ name();
+ setState(128);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__3) {
+ {
+ setState(127);
+ arguments();
+ }
+ }
+
+ setState(131);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__15) {
+ {
+ setState(130);
+ directives();
+ }
+ }
+
+ setState(134);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__8) {
+ {
+ setState(133);
+ selectionSet();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AliasContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public AliasContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_alias; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterAlias(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitAlias(this);
+ }
+ }
+
+ public final AliasContext alias() throws RecognitionException {
+ AliasContext _localctx = new AliasContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_alias);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(136);
+ name();
+ setState(137);
+ match(T__5);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArgumentsContext extends ParserRuleContext {
+ public List argument() {
+ return getRuleContexts(ArgumentContext.class);
+ }
+ public ArgumentContext argument(int i) {
+ return getRuleContext(ArgumentContext.class,i);
+ }
+ public ArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitArguments(this);
+ }
+ }
+
+ public final ArgumentsContext arguments() throws RecognitionException {
+ ArgumentsContext _localctx = new ArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_arguments);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(139);
+ match(T__3);
+ setState(141);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(140);
+ argument();
+ }
+ }
+ setState(143);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 2097166L) != 0) );
+ setState(145);
+ match(T__4);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArgumentContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public ValueContext value() {
+ return getRuleContext(ValueContext.class,0);
+ }
+ public ArgumentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_argument; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterArgument(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitArgument(this);
+ }
+ }
+
+ public final ArgumentContext argument() throws RecognitionException {
+ ArgumentContext _localctx = new ArgumentContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_argument);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(147);
+ name();
+ setState(148);
+ match(T__5);
+ setState(149);
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FragmentSpreadContext extends ParserRuleContext {
+ public FragmentNameContext fragmentName() {
+ return getRuleContext(FragmentNameContext.class,0);
+ }
+ public DirectivesContext directives() {
+ return getRuleContext(DirectivesContext.class,0);
+ }
+ public FragmentSpreadContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fragmentSpread; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterFragmentSpread(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitFragmentSpread(this);
+ }
+ }
+
+ public final FragmentSpreadContext fragmentSpread() throws RecognitionException {
+ FragmentSpreadContext _localctx = new FragmentSpreadContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_fragmentSpread);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(151);
+ match(T__10);
+ setState(152);
+ fragmentName();
+ setState(154);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__15) {
+ {
+ setState(153);
+ directives();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InlineFragmentContext extends ParserRuleContext {
+ public TypeConditionContext typeCondition() {
+ return getRuleContext(TypeConditionContext.class,0);
+ }
+ public SelectionSetContext selectionSet() {
+ return getRuleContext(SelectionSetContext.class,0);
+ }
+ public DirectivesContext directives() {
+ return getRuleContext(DirectivesContext.class,0);
+ }
+ public InlineFragmentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inlineFragment; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterInlineFragment(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitInlineFragment(this);
+ }
+ }
+
+ public final InlineFragmentContext inlineFragment() throws RecognitionException {
+ InlineFragmentContext _localctx = new InlineFragmentContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_inlineFragment);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(156);
+ match(T__10);
+ setState(157);
+ match(T__11);
+ setState(158);
+ typeCondition();
+ setState(160);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__15) {
+ {
+ setState(159);
+ directives();
+ }
+ }
+
+ setState(162);
+ selectionSet();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FragmentDefinitionContext extends ParserRuleContext {
+ public FragmentNameContext fragmentName() {
+ return getRuleContext(FragmentNameContext.class,0);
+ }
+ public TypeConditionContext typeCondition() {
+ return getRuleContext(TypeConditionContext.class,0);
+ }
+ public SelectionSetContext selectionSet() {
+ return getRuleContext(SelectionSetContext.class,0);
+ }
+ public DirectivesContext directives() {
+ return getRuleContext(DirectivesContext.class,0);
+ }
+ public FragmentDefinitionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fragmentDefinition; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterFragmentDefinition(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitFragmentDefinition(this);
+ }
+ }
+
+ public final FragmentDefinitionContext fragmentDefinition() throws RecognitionException {
+ FragmentDefinitionContext _localctx = new FragmentDefinitionContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_fragmentDefinition);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(164);
+ match(T__12);
+ setState(165);
+ fragmentName();
+ setState(166);
+ match(T__11);
+ setState(167);
+ typeCondition();
+ setState(169);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__15) {
+ {
+ setState(168);
+ directives();
+ }
+ }
+
+ setState(171);
+ selectionSet();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FragmentNameContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public FragmentNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fragmentName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterFragmentName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitFragmentName(this);
+ }
+ }
+
+ public final FragmentNameContext fragmentName() throws RecognitionException {
+ FragmentNameContext _localctx = new FragmentNameContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_fragmentName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(173);
+ name();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeConditionContext extends ParserRuleContext {
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TypeConditionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeCondition; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterTypeCondition(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitTypeCondition(this);
+ }
+ }
+
+ public final TypeConditionContext typeCondition() throws RecognitionException {
+ TypeConditionContext _localctx = new TypeConditionContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_typeCondition);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(175);
+ typeName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ValueContext extends ParserRuleContext {
+ public TerminalNode IntValue() { return getToken(GraphqlParser.IntValue, 0); }
+ public TerminalNode FloatValue() { return getToken(GraphqlParser.FloatValue, 0); }
+ public TerminalNode StringValue() { return getToken(GraphqlParser.StringValue, 0); }
+ public TerminalNode BlockStringValue() { return getToken(GraphqlParser.BlockStringValue, 0); }
+ public TerminalNode BooleanValue() { return getToken(GraphqlParser.BooleanValue, 0); }
+ public TerminalNode NullValue() { return getToken(GraphqlParser.NullValue, 0); }
+ public EnumValueContext enumValue() {
+ return getRuleContext(EnumValueContext.class,0);
+ }
+ public ArrayValueContext arrayValue() {
+ return getRuleContext(ArrayValueContext.class,0);
+ }
+ public ObjectValueContext objectValue() {
+ return getRuleContext(ObjectValueContext.class,0);
+ }
+ public VariableContext variable() {
+ return getRuleContext(VariableContext.class,0);
+ }
+ public ValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_value; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitValue(this);
+ }
+ }
+
+ public final ValueContext value() throws RecognitionException {
+ ValueContext _localctx = new ValueContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_value);
+ try {
+ setState(187);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IntValue:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(177);
+ match(IntValue);
+ }
+ break;
+ case FloatValue:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(178);
+ match(FloatValue);
+ }
+ break;
+ case StringValue:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(179);
+ match(StringValue);
+ }
+ break;
+ case BlockStringValue:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(180);
+ match(BlockStringValue);
+ }
+ break;
+ case BooleanValue:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(181);
+ match(BooleanValue);
+ }
+ break;
+ case NullValue:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(182);
+ match(NullValue);
+ }
+ break;
+ case T__0:
+ case T__1:
+ case T__2:
+ case NameId:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(183);
+ enumValue();
+ }
+ break;
+ case T__13:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(184);
+ arrayValue();
+ }
+ break;
+ case T__8:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(185);
+ objectValue();
+ }
+ break;
+ case T__6:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(186);
+ variable();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumValueContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public EnumValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterEnumValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitEnumValue(this);
+ }
+ }
+
+ public final EnumValueContext enumValue() throws RecognitionException {
+ EnumValueContext _localctx = new EnumValueContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_enumValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(189);
+ name();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayValueContext extends ParserRuleContext {
+ public List value() {
+ return getRuleContexts(ValueContext.class);
+ }
+ public ValueContext value(int i) {
+ return getRuleContext(ValueContext.class,i);
+ }
+ public ArrayValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterArrayValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitArrayValue(this);
+ }
+ }
+
+ public final ArrayValueContext arrayValue() throws RecognitionException {
+ ArrayValueContext _localctx = new ArrayValueContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_arrayValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(191);
+ match(T__13);
+ setState(195);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 1626096270L) != 0)) {
+ {
+ {
+ setState(192);
+ value();
+ }
+ }
+ setState(197);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(198);
+ match(T__14);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ObjectValueContext extends ParserRuleContext {
+ public List objectField() {
+ return getRuleContexts(ObjectFieldContext.class);
+ }
+ public ObjectFieldContext objectField(int i) {
+ return getRuleContext(ObjectFieldContext.class,i);
+ }
+ public ObjectValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_objectValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterObjectValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitObjectValue(this);
+ }
+ }
+
+ public final ObjectValueContext objectValue() throws RecognitionException {
+ ObjectValueContext _localctx = new ObjectValueContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_objectValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(200);
+ match(T__8);
+ setState(204);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 2097166L) != 0)) {
+ {
+ {
+ setState(201);
+ objectField();
+ }
+ }
+ setState(206);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(207);
+ match(T__9);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ObjectFieldContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public ValueContext value() {
+ return getRuleContext(ValueContext.class,0);
+ }
+ public ObjectFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_objectField; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterObjectField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitObjectField(this);
+ }
+ }
+
+ public final ObjectFieldContext objectField() throws RecognitionException {
+ ObjectFieldContext _localctx = new ObjectFieldContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_objectField);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(209);
+ name();
+ setState(210);
+ match(T__5);
+ setState(211);
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectivesContext extends ParserRuleContext {
+ public List directive() {
+ return getRuleContexts(DirectiveContext.class);
+ }
+ public DirectiveContext directive(int i) {
+ return getRuleContext(DirectiveContext.class,i);
+ }
+ public DirectivesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directives; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterDirectives(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitDirectives(this);
+ }
+ }
+
+ public final DirectivesContext directives() throws RecognitionException {
+ DirectivesContext _localctx = new DirectivesContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_directives);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(214);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(213);
+ directive();
+ }
+ }
+ setState(216);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==T__15 );
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public ArgumentsContext arguments() {
+ return getRuleContext(ArgumentsContext.class,0);
+ }
+ public DirectiveContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directive; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterDirective(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitDirective(this);
+ }
+ }
+
+ public final DirectiveContext directive() throws RecognitionException {
+ DirectiveContext _localctx = new DirectiveContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_directive);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(218);
+ match(T__15);
+ setState(219);
+ name();
+ setState(221);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__3) {
+ {
+ setState(220);
+ arguments();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeContext extends ParserRuleContext {
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public ListTypeContext listType() {
+ return getRuleContext(ListTypeContext.class,0);
+ }
+ public NonNullTypeContext nonNullType() {
+ return getRuleContext(NonNullTypeContext.class,0);
+ }
+ public TypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_type; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitType(this);
+ }
+ }
+
+ public final TypeContext type() throws RecognitionException {
+ TypeContext _localctx = new TypeContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_type);
+ try {
+ setState(226);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(223);
+ typeName();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(224);
+ listType();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(225);
+ nonNullType();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeNameContext extends ParserRuleContext {
+ public NameContext name() {
+ return getRuleContext(NameContext.class,0);
+ }
+ public TypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitTypeName(this);
+ }
+ }
+
+ public final TypeNameContext typeName() throws RecognitionException {
+ TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_typeName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(228);
+ name();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ListTypeContext extends ParserRuleContext {
+ public TypeContext type() {
+ return getRuleContext(TypeContext.class,0);
+ }
+ public ListTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_listType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterListType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitListType(this);
+ }
+ }
+
+ public final ListTypeContext listType() throws RecognitionException {
+ ListTypeContext _localctx = new ListTypeContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_listType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(230);
+ match(T__13);
+ setState(231);
+ type();
+ setState(232);
+ match(T__14);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NonNullTypeContext extends ParserRuleContext {
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public ListTypeContext listType() {
+ return getRuleContext(ListTypeContext.class,0);
+ }
+ public NonNullTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nonNullType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).enterNonNullType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlListener ) ((GraphqlListener)listener).exitNonNullType(this);
+ }
+ }
+
+ public final NonNullTypeContext nonNullType() throws RecognitionException {
+ NonNullTypeContext _localctx = new NonNullTypeContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_nonNullType);
+ try {
+ setState(240);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case T__0:
+ case T__1:
+ case T__2:
+ case NameId:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(234);
+ typeName();
+ setState(235);
+ match(T__16);
+ }
+ break;
+ case T__13:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(237);
+ listType();
+ setState(238);
+ match(T__16);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0001\u001f\u00f3\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
+ "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
+ "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
+ "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
+ "\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
+ "\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
+ "\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
+ "\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
+ "\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
+ "\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
+ "\u001e\u0001\u0000\u0004\u0000@\b\u0000\u000b\u0000\f\u0000A\u0001\u0001"+
+ "\u0001\u0001\u0003\u0001F\b\u0001\u0001\u0002\u0001\u0002\u0001\u0002"+
+ "\u0003\u0002K\b\u0002\u0001\u0002\u0003\u0002N\b\u0002\u0001\u0002\u0003"+
+ "\u0002Q\b\u0002\u0001\u0002\u0001\u0002\u0003\u0002U\b\u0002\u0001\u0003"+
+ "\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0004\u0005"+
+ "]\b\u0005\u000b\u0005\f\u0005^\u0001\u0005\u0001\u0005\u0001\u0006\u0001"+
+ "\u0006\u0001\u0006\u0001\u0006\u0003\u0006g\b\u0006\u0001\u0007\u0001"+
+ "\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0004\tq\b"+
+ "\t\u000b\t\f\tr\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0003\nz\b\n\u0001"+
+ "\u000b\u0003\u000b}\b\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0081"+
+ "\b\u000b\u0001\u000b\u0003\u000b\u0084\b\u000b\u0001\u000b\u0003\u000b"+
+ "\u0087\b\u000b\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0004\r\u008e\b"+
+ "\r\u000b\r\f\r\u008f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e"+
+ "\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u009b\b\u000f"+
+ "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003\u0010\u00a1\b\u0010"+
+ "\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
+ "\u0001\u0011\u0003\u0011\u00aa\b\u0011\u0001\u0011\u0001\u0011\u0001\u0012"+
+ "\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014"+
+ "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014"+
+ "\u0001\u0014\u0003\u0014\u00bc\b\u0014\u0001\u0015\u0001\u0015\u0001\u0016"+
+ "\u0001\u0016\u0005\u0016\u00c2\b\u0016\n\u0016\f\u0016\u00c5\t\u0016\u0001"+
+ "\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0005\u0017\u00cb\b\u0017\n"+
+ "\u0017\f\u0017\u00ce\t\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001"+
+ "\u0018\u0001\u0018\u0001\u0018\u0001\u0019\u0004\u0019\u00d7\b\u0019\u000b"+
+ "\u0019\f\u0019\u00d8\u0001\u001a\u0001\u001a\u0001\u001a\u0003\u001a\u00de"+
+ "\b\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b\u00e3\b\u001b"+
+ "\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d"+
+ "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+
+ "\u0003\u001e\u00f1\b\u001e\u0001\u001e\u0000\u0000\u001f\u0000\u0002\u0004"+
+ "\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \""+
+ "$&(*,.02468:<\u0000\u0002\u0002\u0000\u0001\u0003\u0015\u0015\u0001\u0000"+
+ "\u0001\u0003\u00f6\u0000?\u0001\u0000\u0000\u0000\u0002E\u0001\u0000\u0000"+
+ "\u0000\u0004T\u0001\u0000\u0000\u0000\u0006V\u0001\u0000\u0000\u0000\b"+
+ "X\u0001\u0000\u0000\u0000\nZ\u0001\u0000\u0000\u0000\fb\u0001\u0000\u0000"+
+ "\u0000\u000eh\u0001\u0000\u0000\u0000\u0010k\u0001\u0000\u0000\u0000\u0012"+
+ "n\u0001\u0000\u0000\u0000\u0014y\u0001\u0000\u0000\u0000\u0016|\u0001"+
+ "\u0000\u0000\u0000\u0018\u0088\u0001\u0000\u0000\u0000\u001a\u008b\u0001"+
+ "\u0000\u0000\u0000\u001c\u0093\u0001\u0000\u0000\u0000\u001e\u0097\u0001"+
+ "\u0000\u0000\u0000 \u009c\u0001\u0000\u0000\u0000\"\u00a4\u0001\u0000"+
+ "\u0000\u0000$\u00ad\u0001\u0000\u0000\u0000&\u00af\u0001\u0000\u0000\u0000"+
+ "(\u00bb\u0001\u0000\u0000\u0000*\u00bd\u0001\u0000\u0000\u0000,\u00bf"+
+ "\u0001\u0000\u0000\u0000.\u00c8\u0001\u0000\u0000\u00000\u00d1\u0001\u0000"+
+ "\u0000\u00002\u00d6\u0001\u0000\u0000\u00004\u00da\u0001\u0000\u0000\u0000"+
+ "6\u00e2\u0001\u0000\u0000\u00008\u00e4\u0001\u0000\u0000\u0000:\u00e6"+
+ "\u0001\u0000\u0000\u0000<\u00f0\u0001\u0000\u0000\u0000>@\u0003\u0002"+
+ "\u0001\u0000?>\u0001\u0000\u0000\u0000@A\u0001\u0000\u0000\u0000A?\u0001"+
+ "\u0000\u0000\u0000AB\u0001\u0000\u0000\u0000B\u0001\u0001\u0000\u0000"+
+ "\u0000CF\u0003\u0004\u0002\u0000DF\u0003\"\u0011\u0000EC\u0001\u0000\u0000"+
+ "\u0000ED\u0001\u0000\u0000\u0000F\u0003\u0001\u0000\u0000\u0000GU\u0003"+
+ "\u0012\t\u0000HJ\u0003\b\u0004\u0000IK\u0003\u0006\u0003\u0000JI\u0001"+
+ "\u0000\u0000\u0000JK\u0001\u0000\u0000\u0000KM\u0001\u0000\u0000\u0000"+
+ "LN\u0003\n\u0005\u0000ML\u0001\u0000\u0000\u0000MN\u0001\u0000\u0000\u0000"+
+ "NP\u0001\u0000\u0000\u0000OQ\u00032\u0019\u0000PO\u0001\u0000\u0000\u0000"+
+ "PQ\u0001\u0000\u0000\u0000QR\u0001\u0000\u0000\u0000RS\u0003\u0012\t\u0000"+
+ "SU\u0001\u0000\u0000\u0000TG\u0001\u0000\u0000\u0000TH\u0001\u0000\u0000"+
+ "\u0000U\u0005\u0001\u0000\u0000\u0000VW\u0007\u0000\u0000\u0000W\u0007"+
+ "\u0001\u0000\u0000\u0000XY\u0007\u0001\u0000\u0000Y\t\u0001\u0000\u0000"+
+ "\u0000Z\\\u0005\u0004\u0000\u0000[]\u0003\f\u0006\u0000\\[\u0001\u0000"+
+ "\u0000\u0000]^\u0001\u0000\u0000\u0000^\\\u0001\u0000\u0000\u0000^_\u0001"+
+ "\u0000\u0000\u0000_`\u0001\u0000\u0000\u0000`a\u0005\u0005\u0000\u0000"+
+ "a\u000b\u0001\u0000\u0000\u0000bc\u0003\u000e\u0007\u0000cd\u0005\u0006"+
+ "\u0000\u0000df\u00036\u001b\u0000eg\u0003\u0010\b\u0000fe\u0001\u0000"+
+ "\u0000\u0000fg\u0001\u0000\u0000\u0000g\r\u0001\u0000\u0000\u0000hi\u0005"+
+ "\u0007\u0000\u0000ij\u0003\u0006\u0003\u0000j\u000f\u0001\u0000\u0000"+
+ "\u0000kl\u0005\b\u0000\u0000lm\u0003(\u0014\u0000m\u0011\u0001\u0000\u0000"+
+ "\u0000np\u0005\t\u0000\u0000oq\u0003\u0014\n\u0000po\u0001\u0000\u0000"+
+ "\u0000qr\u0001\u0000\u0000\u0000rp\u0001\u0000\u0000\u0000rs\u0001\u0000"+
+ "\u0000\u0000st\u0001\u0000\u0000\u0000tu\u0005\n\u0000\u0000u\u0013\u0001"+
+ "\u0000\u0000\u0000vz\u0003\u0016\u000b\u0000wz\u0003\u001e\u000f\u0000"+
+ "xz\u0003 \u0010\u0000yv\u0001\u0000\u0000\u0000yw\u0001\u0000\u0000\u0000"+
+ "yx\u0001\u0000\u0000\u0000z\u0015\u0001\u0000\u0000\u0000{}\u0003\u0018"+
+ "\f\u0000|{\u0001\u0000\u0000\u0000|}\u0001\u0000\u0000\u0000}~\u0001\u0000"+
+ "\u0000\u0000~\u0080\u0003\u0006\u0003\u0000\u007f\u0081\u0003\u001a\r"+
+ "\u0000\u0080\u007f\u0001\u0000\u0000\u0000\u0080\u0081\u0001\u0000\u0000"+
+ "\u0000\u0081\u0083\u0001\u0000\u0000\u0000\u0082\u0084\u00032\u0019\u0000"+
+ "\u0083\u0082\u0001\u0000\u0000\u0000\u0083\u0084\u0001\u0000\u0000\u0000"+
+ "\u0084\u0086\u0001\u0000\u0000\u0000\u0085\u0087\u0003\u0012\t\u0000\u0086"+
+ "\u0085\u0001\u0000\u0000\u0000\u0086\u0087\u0001\u0000\u0000\u0000\u0087"+
+ "\u0017\u0001\u0000\u0000\u0000\u0088\u0089\u0003\u0006\u0003\u0000\u0089"+
+ "\u008a\u0005\u0006\u0000\u0000\u008a\u0019\u0001\u0000\u0000\u0000\u008b"+
+ "\u008d\u0005\u0004\u0000\u0000\u008c\u008e\u0003\u001c\u000e\u0000\u008d"+
+ "\u008c\u0001\u0000\u0000\u0000\u008e\u008f\u0001\u0000\u0000\u0000\u008f"+
+ "\u008d\u0001\u0000\u0000\u0000\u008f\u0090\u0001\u0000\u0000\u0000\u0090"+
+ "\u0091\u0001\u0000\u0000\u0000\u0091\u0092\u0005\u0005\u0000\u0000\u0092"+
+ "\u001b\u0001\u0000\u0000\u0000\u0093\u0094\u0003\u0006\u0003\u0000\u0094"+
+ "\u0095\u0005\u0006\u0000\u0000\u0095\u0096\u0003(\u0014\u0000\u0096\u001d"+
+ "\u0001\u0000\u0000\u0000\u0097\u0098\u0005\u000b\u0000\u0000\u0098\u009a"+
+ "\u0003$\u0012\u0000\u0099\u009b\u00032\u0019\u0000\u009a\u0099\u0001\u0000"+
+ "\u0000\u0000\u009a\u009b\u0001\u0000\u0000\u0000\u009b\u001f\u0001\u0000"+
+ "\u0000\u0000\u009c\u009d\u0005\u000b\u0000\u0000\u009d\u009e\u0005\f\u0000"+
+ "\u0000\u009e\u00a0\u0003&\u0013\u0000\u009f\u00a1\u00032\u0019\u0000\u00a0"+
+ "\u009f\u0001\u0000\u0000\u0000\u00a0\u00a1\u0001\u0000\u0000\u0000\u00a1"+
+ "\u00a2\u0001\u0000\u0000\u0000\u00a2\u00a3\u0003\u0012\t\u0000\u00a3!"+
+ "\u0001\u0000\u0000\u0000\u00a4\u00a5\u0005\r\u0000\u0000\u00a5\u00a6\u0003"+
+ "$\u0012\u0000\u00a6\u00a7\u0005\f\u0000\u0000\u00a7\u00a9\u0003&\u0013"+
+ "\u0000\u00a8\u00aa\u00032\u0019\u0000\u00a9\u00a8\u0001\u0000\u0000\u0000"+
+ "\u00a9\u00aa\u0001\u0000\u0000\u0000\u00aa\u00ab\u0001\u0000\u0000\u0000"+
+ "\u00ab\u00ac\u0003\u0012\t\u0000\u00ac#\u0001\u0000\u0000\u0000\u00ad"+
+ "\u00ae\u0003\u0006\u0003\u0000\u00ae%\u0001\u0000\u0000\u0000\u00af\u00b0"+
+ "\u00038\u001c\u0000\u00b0\'\u0001\u0000\u0000\u0000\u00b1\u00bc\u0005"+
+ "\u0016\u0000\u0000\u00b2\u00bc\u0005\u0017\u0000\u0000\u00b3\u00bc\u0005"+
+ "\u001d\u0000\u0000\u00b4\u00bc\u0005\u001e\u0000\u0000\u00b5\u00bc\u0005"+
+ "\u0012\u0000\u0000\u00b6\u00bc\u0005\u0013\u0000\u0000\u00b7\u00bc\u0003"+
+ "*\u0015\u0000\u00b8\u00bc\u0003,\u0016\u0000\u00b9\u00bc\u0003.\u0017"+
+ "\u0000\u00ba\u00bc\u0003\u000e\u0007\u0000\u00bb\u00b1\u0001\u0000\u0000"+
+ "\u0000\u00bb\u00b2\u0001\u0000\u0000\u0000\u00bb\u00b3\u0001\u0000\u0000"+
+ "\u0000\u00bb\u00b4\u0001\u0000\u0000\u0000\u00bb\u00b5\u0001\u0000\u0000"+
+ "\u0000\u00bb\u00b6\u0001\u0000\u0000\u0000\u00bb\u00b7\u0001\u0000\u0000"+
+ "\u0000\u00bb\u00b8\u0001\u0000\u0000\u0000\u00bb\u00b9\u0001\u0000\u0000"+
+ "\u0000\u00bb\u00ba\u0001\u0000\u0000\u0000\u00bc)\u0001\u0000\u0000\u0000"+
+ "\u00bd\u00be\u0003\u0006\u0003\u0000\u00be+\u0001\u0000\u0000\u0000\u00bf"+
+ "\u00c3\u0005\u000e\u0000\u0000\u00c0\u00c2\u0003(\u0014\u0000\u00c1\u00c0"+
+ "\u0001\u0000\u0000\u0000\u00c2\u00c5\u0001\u0000\u0000\u0000\u00c3\u00c1"+
+ "\u0001\u0000\u0000\u0000\u00c3\u00c4\u0001\u0000\u0000\u0000\u00c4\u00c6"+
+ "\u0001\u0000\u0000\u0000\u00c5\u00c3\u0001\u0000\u0000\u0000\u00c6\u00c7"+
+ "\u0005\u000f\u0000\u0000\u00c7-\u0001\u0000\u0000\u0000\u00c8\u00cc\u0005"+
+ "\t\u0000\u0000\u00c9\u00cb\u00030\u0018\u0000\u00ca\u00c9\u0001\u0000"+
+ "\u0000\u0000\u00cb\u00ce\u0001\u0000\u0000\u0000\u00cc\u00ca\u0001\u0000"+
+ "\u0000\u0000\u00cc\u00cd\u0001\u0000\u0000\u0000\u00cd\u00cf\u0001\u0000"+
+ "\u0000\u0000\u00ce\u00cc\u0001\u0000\u0000\u0000\u00cf\u00d0\u0005\n\u0000"+
+ "\u0000\u00d0/\u0001\u0000\u0000\u0000\u00d1\u00d2\u0003\u0006\u0003\u0000"+
+ "\u00d2\u00d3\u0005\u0006\u0000\u0000\u00d3\u00d4\u0003(\u0014\u0000\u00d4"+
+ "1\u0001\u0000\u0000\u0000\u00d5\u00d7\u00034\u001a\u0000\u00d6\u00d5\u0001"+
+ "\u0000\u0000\u0000\u00d7\u00d8\u0001\u0000\u0000\u0000\u00d8\u00d6\u0001"+
+ "\u0000\u0000\u0000\u00d8\u00d9\u0001\u0000\u0000\u0000\u00d93\u0001\u0000"+
+ "\u0000\u0000\u00da\u00db\u0005\u0010\u0000\u0000\u00db\u00dd\u0003\u0006"+
+ "\u0003\u0000\u00dc\u00de\u0003\u001a\r\u0000\u00dd\u00dc\u0001\u0000\u0000"+
+ "\u0000\u00dd\u00de\u0001\u0000\u0000\u0000\u00de5\u0001\u0000\u0000\u0000"+
+ "\u00df\u00e3\u00038\u001c\u0000\u00e0\u00e3\u0003:\u001d\u0000\u00e1\u00e3"+
+ "\u0003<\u001e\u0000\u00e2\u00df\u0001\u0000\u0000\u0000\u00e2\u00e0\u0001"+
+ "\u0000\u0000\u0000\u00e2\u00e1\u0001\u0000\u0000\u0000\u00e37\u0001\u0000"+
+ "\u0000\u0000\u00e4\u00e5\u0003\u0006\u0003\u0000\u00e59\u0001\u0000\u0000"+
+ "\u0000\u00e6\u00e7\u0005\u000e\u0000\u0000\u00e7\u00e8\u00036\u001b\u0000"+
+ "\u00e8\u00e9\u0005\u000f\u0000\u0000\u00e9;\u0001\u0000\u0000\u0000\u00ea"+
+ "\u00eb\u00038\u001c\u0000\u00eb\u00ec\u0005\u0011\u0000\u0000\u00ec\u00f1"+
+ "\u0001\u0000\u0000\u0000\u00ed\u00ee\u0003:\u001d\u0000\u00ee\u00ef\u0005"+
+ "\u0011\u0000\u0000\u00ef\u00f1\u0001\u0000\u0000\u0000\u00f0\u00ea\u0001"+
+ "\u0000\u0000\u0000\u00f0\u00ed\u0001\u0000\u0000\u0000\u00f1=\u0001\u0000"+
+ "\u0000\u0000\u0019AEJMPT^fry|\u0080\u0083\u0086\u008f\u009a\u00a0\u00a9"+
+ "\u00bb\u00c3\u00cc\u00d8\u00dd\u00e2\u00f0";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchema.interp b/java/com/walmartlabs/lacinia/GraphqlSchema.interp
new file mode 100644
index 00000000..be419196
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchema.interp
@@ -0,0 +1,148 @@
+token literal names:
+null
+'{'
+'}'
+':'
+'|'
+'@'
+'('
+')'
+'&'
+'='
+'['
+']'
+'!'
+null
+null
+'type'
+'implements'
+'interface'
+'schema'
+'enum'
+'union'
+'input'
+'directive'
+'extend'
+'scalar'
+'on'
+'fragment'
+'query'
+'mutation'
+'subscription'
+'value'
+'true'
+'false'
+'null'
+null
+null
+null
+'-'
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+EXECUTABLE_DIRECTIVE_LOCATION
+TYPE_SYSTEM_DIRECTIVE_LOCATION
+K_TYPE
+K_IMPLEMENTS
+K_INTERFACE
+K_SCHEMA
+K_ENUM
+K_UNION
+K_INPUT
+K_DIRECTIVE
+K_EXTEND
+K_SCALAR
+K_ON
+K_FRAGMENT
+K_QUERY
+K_MUTATION
+K_SUBSCRIPTION
+K_VALUE
+K_TRUE
+K_FALSE
+K_NULL
+Name
+IntValue
+FloatValue
+Sign
+IntegerPart
+NonZeroDigit
+ExponentPart
+Digit
+StringValue
+BlockStringValue
+Ignored
+
+rule names:
+graphqlSchema
+description
+schemaDef
+operationTypeDef
+queryOperationDef
+mutationOperationDef
+subscriptionOperationDef
+directiveLocationList
+directiveLocation
+executableDirectiveLocation
+typeSystemDirectiveLocation
+directiveDef
+directiveList
+directive
+directiveArgList
+directiveArg
+typeDef
+typeExtDef
+fieldDefs
+implementationDef
+inputTypeDef
+inputTypeExtDef
+inputValueDefs
+inputValueDef
+interfaceDef
+scalarDef
+unionDef
+unionExtDef
+unionTypes
+enumDef
+enumValueDefs
+enumValueDef
+fieldDef
+argList
+argument
+typeSpec
+typeName
+listType
+required
+defaultValue
+anyName
+nameTokens
+booleanValue
+value
+enumValue
+arrayValue
+objectValue
+objectField
+nullValue
+
+
+atn:
+[4, 1, 44, 464, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 110, 8, 0, 10, 0, 12, 0, 113, 9, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 119, 8, 2, 1, 2, 1, 2, 4, 2, 123, 8, 2, 11, 2, 12, 2, 124, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 3, 3, 132, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 5, 7, 149, 8, 7, 10, 7, 12, 7, 152, 9, 7, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 158, 8, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 3, 11, 165, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 171, 8, 11, 1, 11, 1, 11, 1, 11, 1, 12, 4, 12, 177, 8, 12, 11, 12, 12, 12, 178, 1, 13, 1, 13, 1, 13, 3, 13, 184, 8, 13, 1, 14, 1, 14, 4, 14, 188, 8, 14, 11, 14, 12, 14, 189, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 3, 16, 199, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 204, 8, 16, 1, 16, 3, 16, 207, 8, 16, 1, 16, 3, 16, 210, 8, 16, 1, 17, 3, 17, 213, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 219, 8, 17, 1, 17, 3, 17, 222, 8, 17, 1, 17, 3, 17, 225, 8, 17, 1, 18, 1, 18, 4, 18, 229, 8, 18, 11, 18, 12, 18, 230, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 237, 8, 19, 1, 19, 1, 19, 1, 19, 5, 19, 242, 8, 19, 10, 19, 12, 19, 245, 9, 19, 1, 20, 3, 20, 248, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 253, 8, 20, 1, 20, 3, 20, 256, 8, 20, 1, 21, 3, 21, 259, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 265, 8, 21, 1, 21, 3, 21, 268, 8, 21, 1, 22, 1, 22, 4, 22, 272, 8, 22, 11, 22, 12, 22, 273, 1, 22, 1, 22, 1, 23, 3, 23, 279, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 285, 8, 23, 1, 23, 3, 23, 288, 8, 23, 1, 24, 3, 24, 291, 8, 24, 1, 24, 1, 24, 1, 24, 3, 24, 296, 8, 24, 1, 24, 3, 24, 299, 8, 24, 1, 25, 3, 25, 302, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 307, 8, 25, 1, 26, 3, 26, 310, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 315, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 3, 27, 321, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 327, 8, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 5, 28, 335, 8, 28, 10, 28, 12, 28, 338, 9, 28, 1, 28, 1, 28, 1, 29, 3, 29, 343, 8, 29, 1, 29, 1, 29, 1, 29, 3, 29, 348, 8, 29, 1, 29, 1, 29, 1, 30, 1, 30, 4, 30, 354, 8, 30, 11, 30, 12, 30, 355, 1, 30, 1, 30, 1, 31, 3, 31, 361, 8, 31, 1, 31, 1, 31, 3, 31, 365, 8, 31, 1, 32, 3, 32, 368, 8, 32, 1, 32, 1, 32, 3, 32, 372, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 377, 8, 32, 1, 33, 1, 33, 4, 33, 381, 8, 33, 11, 33, 12, 33, 382, 1, 33, 1, 33, 1, 34, 3, 34, 388, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 394, 8, 34, 1, 34, 3, 34, 397, 8, 34, 1, 35, 1, 35, 3, 35, 401, 8, 35, 1, 35, 3, 35, 404, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 421, 8, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 436, 8, 43, 1, 44, 1, 44, 1, 45, 1, 45, 5, 45, 442, 8, 45, 10, 45, 12, 45, 445, 9, 45, 1, 45, 1, 45, 1, 46, 1, 46, 5, 46, 451, 8, 46, 10, 46, 12, 46, 454, 9, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 0, 0, 49, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 0, 3, 1, 0, 42, 43, 2, 0, 13, 30, 34, 34, 1, 0, 31, 32, 494, 0, 111, 1, 0, 0, 0, 2, 114, 1, 0, 0, 0, 4, 116, 1, 0, 0, 0, 6, 131, 1, 0, 0, 0, 8, 133, 1, 0, 0, 0, 10, 137, 1, 0, 0, 0, 12, 141, 1, 0, 0, 0, 14, 150, 1, 0, 0, 0, 16, 157, 1, 0, 0, 0, 18, 159, 1, 0, 0, 0, 20, 161, 1, 0, 0, 0, 22, 164, 1, 0, 0, 0, 24, 176, 1, 0, 0, 0, 26, 180, 1, 0, 0, 0, 28, 185, 1, 0, 0, 0, 30, 193, 1, 0, 0, 0, 32, 198, 1, 0, 0, 0, 34, 212, 1, 0, 0, 0, 36, 226, 1, 0, 0, 0, 38, 234, 1, 0, 0, 0, 40, 247, 1, 0, 0, 0, 42, 258, 1, 0, 0, 0, 44, 269, 1, 0, 0, 0, 46, 278, 1, 0, 0, 0, 48, 290, 1, 0, 0, 0, 50, 301, 1, 0, 0, 0, 52, 309, 1, 0, 0, 0, 54, 320, 1, 0, 0, 0, 56, 336, 1, 0, 0, 0, 58, 342, 1, 0, 0, 0, 60, 351, 1, 0, 0, 0, 62, 360, 1, 0, 0, 0, 64, 367, 1, 0, 0, 0, 66, 378, 1, 0, 0, 0, 68, 387, 1, 0, 0, 0, 70, 400, 1, 0, 0, 0, 72, 405, 1, 0, 0, 0, 74, 407, 1, 0, 0, 0, 76, 411, 1, 0, 0, 0, 78, 413, 1, 0, 0, 0, 80, 420, 1, 0, 0, 0, 82, 422, 1, 0, 0, 0, 84, 424, 1, 0, 0, 0, 86, 435, 1, 0, 0, 0, 88, 437, 1, 0, 0, 0, 90, 439, 1, 0, 0, 0, 92, 448, 1, 0, 0, 0, 94, 457, 1, 0, 0, 0, 96, 461, 1, 0, 0, 0, 98, 110, 3, 4, 2, 0, 99, 110, 3, 32, 16, 0, 100, 110, 3, 34, 17, 0, 101, 110, 3, 40, 20, 0, 102, 110, 3, 42, 21, 0, 103, 110, 3, 52, 26, 0, 104, 110, 3, 54, 27, 0, 105, 110, 3, 58, 29, 0, 106, 110, 3, 48, 24, 0, 107, 110, 3, 50, 25, 0, 108, 110, 3, 22, 11, 0, 109, 98, 1, 0, 0, 0, 109, 99, 1, 0, 0, 0, 109, 100, 1, 0, 0, 0, 109, 101, 1, 0, 0, 0, 109, 102, 1, 0, 0, 0, 109, 103, 1, 0, 0, 0, 109, 104, 1, 0, 0, 0, 109, 105, 1, 0, 0, 0, 109, 106, 1, 0, 0, 0, 109, 107, 1, 0, 0, 0, 109, 108, 1, 0, 0, 0, 110, 113, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 1, 1, 0, 0, 0, 113, 111, 1, 0, 0, 0, 114, 115, 7, 0, 0, 0, 115, 3, 1, 0, 0, 0, 116, 118, 5, 18, 0, 0, 117, 119, 3, 24, 12, 0, 118, 117, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 120, 1, 0, 0, 0, 120, 122, 5, 1, 0, 0, 121, 123, 3, 6, 3, 0, 122, 121, 1, 0, 0, 0, 123, 124, 1, 0, 0, 0, 124, 122, 1, 0, 0, 0, 124, 125, 1, 0, 0, 0, 125, 126, 1, 0, 0, 0, 126, 127, 5, 2, 0, 0, 127, 5, 1, 0, 0, 0, 128, 132, 3, 8, 4, 0, 129, 132, 3, 10, 5, 0, 130, 132, 3, 12, 6, 0, 131, 128, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 130, 1, 0, 0, 0, 132, 7, 1, 0, 0, 0, 133, 134, 5, 27, 0, 0, 134, 135, 5, 3, 0, 0, 135, 136, 3, 80, 40, 0, 136, 9, 1, 0, 0, 0, 137, 138, 5, 28, 0, 0, 138, 139, 5, 3, 0, 0, 139, 140, 3, 80, 40, 0, 140, 11, 1, 0, 0, 0, 141, 142, 5, 29, 0, 0, 142, 143, 5, 3, 0, 0, 143, 144, 3, 80, 40, 0, 144, 13, 1, 0, 0, 0, 145, 146, 3, 16, 8, 0, 146, 147, 5, 4, 0, 0, 147, 149, 1, 0, 0, 0, 148, 145, 1, 0, 0, 0, 149, 152, 1, 0, 0, 0, 150, 148, 1, 0, 0, 0, 150, 151, 1, 0, 0, 0, 151, 153, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 153, 154, 3, 16, 8, 0, 154, 15, 1, 0, 0, 0, 155, 158, 3, 18, 9, 0, 156, 158, 3, 20, 10, 0, 157, 155, 1, 0, 0, 0, 157, 156, 1, 0, 0, 0, 158, 17, 1, 0, 0, 0, 159, 160, 5, 13, 0, 0, 160, 19, 1, 0, 0, 0, 161, 162, 5, 14, 0, 0, 162, 21, 1, 0, 0, 0, 163, 165, 3, 2, 1, 0, 164, 163, 1, 0, 0, 0, 164, 165, 1, 0, 0, 0, 165, 166, 1, 0, 0, 0, 166, 167, 5, 22, 0, 0, 167, 168, 5, 5, 0, 0, 168, 170, 3, 80, 40, 0, 169, 171, 3, 66, 33, 0, 170, 169, 1, 0, 0, 0, 170, 171, 1, 0, 0, 0, 171, 172, 1, 0, 0, 0, 172, 173, 5, 25, 0, 0, 173, 174, 3, 14, 7, 0, 174, 23, 1, 0, 0, 0, 175, 177, 3, 26, 13, 0, 176, 175, 1, 0, 0, 0, 177, 178, 1, 0, 0, 0, 178, 176, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 25, 1, 0, 0, 0, 180, 181, 5, 5, 0, 0, 181, 183, 3, 80, 40, 0, 182, 184, 3, 28, 14, 0, 183, 182, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 27, 1, 0, 0, 0, 185, 187, 5, 6, 0, 0, 186, 188, 3, 30, 15, 0, 187, 186, 1, 0, 0, 0, 188, 189, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 189, 190, 1, 0, 0, 0, 190, 191, 1, 0, 0, 0, 191, 192, 5, 7, 0, 0, 192, 29, 1, 0, 0, 0, 193, 194, 3, 80, 40, 0, 194, 195, 5, 3, 0, 0, 195, 196, 3, 86, 43, 0, 196, 31, 1, 0, 0, 0, 197, 199, 3, 2, 1, 0, 198, 197, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 201, 5, 15, 0, 0, 201, 203, 3, 80, 40, 0, 202, 204, 3, 38, 19, 0, 203, 202, 1, 0, 0, 0, 203, 204, 1, 0, 0, 0, 204, 206, 1, 0, 0, 0, 205, 207, 3, 24, 12, 0, 206, 205, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 209, 1, 0, 0, 0, 208, 210, 3, 36, 18, 0, 209, 208, 1, 0, 0, 0, 209, 210, 1, 0, 0, 0, 210, 33, 1, 0, 0, 0, 211, 213, 3, 2, 1, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 214, 1, 0, 0, 0, 214, 215, 5, 23, 0, 0, 215, 216, 5, 15, 0, 0, 216, 218, 3, 80, 40, 0, 217, 219, 3, 38, 19, 0, 218, 217, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 221, 1, 0, 0, 0, 220, 222, 3, 24, 12, 0, 221, 220, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 224, 1, 0, 0, 0, 223, 225, 3, 36, 18, 0, 224, 223, 1, 0, 0, 0, 224, 225, 1, 0, 0, 0, 225, 35, 1, 0, 0, 0, 226, 228, 5, 1, 0, 0, 227, 229, 3, 64, 32, 0, 228, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 228, 1, 0, 0, 0, 230, 231, 1, 0, 0, 0, 231, 232, 1, 0, 0, 0, 232, 233, 5, 2, 0, 0, 233, 37, 1, 0, 0, 0, 234, 236, 5, 16, 0, 0, 235, 237, 5, 8, 0, 0, 236, 235, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 243, 5, 34, 0, 0, 239, 240, 5, 8, 0, 0, 240, 242, 5, 34, 0, 0, 241, 239, 1, 0, 0, 0, 242, 245, 1, 0, 0, 0, 243, 241, 1, 0, 0, 0, 243, 244, 1, 0, 0, 0, 244, 39, 1, 0, 0, 0, 245, 243, 1, 0, 0, 0, 246, 248, 3, 2, 1, 0, 247, 246, 1, 0, 0, 0, 247, 248, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 250, 5, 21, 0, 0, 250, 252, 3, 80, 40, 0, 251, 253, 3, 24, 12, 0, 252, 251, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 256, 3, 44, 22, 0, 255, 254, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 41, 1, 0, 0, 0, 257, 259, 3, 2, 1, 0, 258, 257, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 260, 1, 0, 0, 0, 260, 261, 5, 23, 0, 0, 261, 262, 5, 21, 0, 0, 262, 264, 3, 80, 40, 0, 263, 265, 3, 24, 12, 0, 264, 263, 1, 0, 0, 0, 264, 265, 1, 0, 0, 0, 265, 267, 1, 0, 0, 0, 266, 268, 3, 44, 22, 0, 267, 266, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 43, 1, 0, 0, 0, 269, 271, 5, 1, 0, 0, 270, 272, 3, 46, 23, 0, 271, 270, 1, 0, 0, 0, 272, 273, 1, 0, 0, 0, 273, 271, 1, 0, 0, 0, 273, 274, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 276, 5, 2, 0, 0, 276, 45, 1, 0, 0, 0, 277, 279, 3, 2, 1, 0, 278, 277, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 3, 80, 40, 0, 281, 282, 5, 3, 0, 0, 282, 284, 3, 70, 35, 0, 283, 285, 3, 78, 39, 0, 284, 283, 1, 0, 0, 0, 284, 285, 1, 0, 0, 0, 285, 287, 1, 0, 0, 0, 286, 288, 3, 24, 12, 0, 287, 286, 1, 0, 0, 0, 287, 288, 1, 0, 0, 0, 288, 47, 1, 0, 0, 0, 289, 291, 3, 2, 1, 0, 290, 289, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 293, 5, 17, 0, 0, 293, 295, 3, 80, 40, 0, 294, 296, 3, 24, 12, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 299, 3, 36, 18, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 49, 1, 0, 0, 0, 300, 302, 3, 2, 1, 0, 301, 300, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 304, 5, 24, 0, 0, 304, 306, 3, 80, 40, 0, 305, 307, 3, 24, 12, 0, 306, 305, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 51, 1, 0, 0, 0, 308, 310, 3, 2, 1, 0, 309, 308, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 312, 5, 20, 0, 0, 312, 314, 3, 80, 40, 0, 313, 315, 3, 24, 12, 0, 314, 313, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 317, 5, 9, 0, 0, 317, 318, 3, 56, 28, 0, 318, 53, 1, 0, 0, 0, 319, 321, 3, 2, 1, 0, 320, 319, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 323, 5, 23, 0, 0, 323, 324, 5, 20, 0, 0, 324, 326, 3, 80, 40, 0, 325, 327, 3, 24, 12, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 329, 5, 9, 0, 0, 329, 330, 3, 56, 28, 0, 330, 55, 1, 0, 0, 0, 331, 332, 3, 80, 40, 0, 332, 333, 5, 4, 0, 0, 333, 335, 1, 0, 0, 0, 334, 331, 1, 0, 0, 0, 335, 338, 1, 0, 0, 0, 336, 334, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 339, 1, 0, 0, 0, 338, 336, 1, 0, 0, 0, 339, 340, 3, 80, 40, 0, 340, 57, 1, 0, 0, 0, 341, 343, 3, 2, 1, 0, 342, 341, 1, 0, 0, 0, 342, 343, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 5, 19, 0, 0, 345, 347, 3, 80, 40, 0, 346, 348, 3, 24, 12, 0, 347, 346, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 349, 1, 0, 0, 0, 349, 350, 3, 60, 30, 0, 350, 59, 1, 0, 0, 0, 351, 353, 5, 1, 0, 0, 352, 354, 3, 62, 31, 0, 353, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 358, 5, 2, 0, 0, 358, 61, 1, 0, 0, 0, 359, 361, 3, 2, 1, 0, 360, 359, 1, 0, 0, 0, 360, 361, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 364, 3, 82, 41, 0, 363, 365, 3, 24, 12, 0, 364, 363, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 63, 1, 0, 0, 0, 366, 368, 3, 2, 1, 0, 367, 366, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 371, 3, 80, 40, 0, 370, 372, 3, 66, 33, 0, 371, 370, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 374, 5, 3, 0, 0, 374, 376, 3, 70, 35, 0, 375, 377, 3, 24, 12, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 65, 1, 0, 0, 0, 378, 380, 5, 6, 0, 0, 379, 381, 3, 68, 34, 0, 380, 379, 1, 0, 0, 0, 381, 382, 1, 0, 0, 0, 382, 380, 1, 0, 0, 0, 382, 383, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 385, 5, 7, 0, 0, 385, 67, 1, 0, 0, 0, 386, 388, 3, 2, 1, 0, 387, 386, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 3, 80, 40, 0, 390, 391, 5, 3, 0, 0, 391, 393, 3, 70, 35, 0, 392, 394, 3, 78, 39, 0, 393, 392, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 396, 1, 0, 0, 0, 395, 397, 3, 24, 12, 0, 396, 395, 1, 0, 0, 0, 396, 397, 1, 0, 0, 0, 397, 69, 1, 0, 0, 0, 398, 401, 3, 72, 36, 0, 399, 401, 3, 74, 37, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 403, 1, 0, 0, 0, 402, 404, 3, 76, 38, 0, 403, 402, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 71, 1, 0, 0, 0, 405, 406, 3, 80, 40, 0, 406, 73, 1, 0, 0, 0, 407, 408, 5, 10, 0, 0, 408, 409, 3, 70, 35, 0, 409, 410, 5, 11, 0, 0, 410, 75, 1, 0, 0, 0, 411, 412, 5, 12, 0, 0, 412, 77, 1, 0, 0, 0, 413, 414, 5, 9, 0, 0, 414, 415, 3, 86, 43, 0, 415, 79, 1, 0, 0, 0, 416, 421, 3, 82, 41, 0, 417, 421, 5, 31, 0, 0, 418, 421, 5, 32, 0, 0, 419, 421, 5, 33, 0, 0, 420, 416, 1, 0, 0, 0, 420, 417, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 419, 1, 0, 0, 0, 421, 81, 1, 0, 0, 0, 422, 423, 7, 1, 0, 0, 423, 83, 1, 0, 0, 0, 424, 425, 7, 2, 0, 0, 425, 85, 1, 0, 0, 0, 426, 436, 5, 35, 0, 0, 427, 436, 5, 36, 0, 0, 428, 436, 5, 42, 0, 0, 429, 436, 5, 43, 0, 0, 430, 436, 3, 84, 42, 0, 431, 436, 3, 96, 48, 0, 432, 436, 3, 88, 44, 0, 433, 436, 3, 90, 45, 0, 434, 436, 3, 92, 46, 0, 435, 426, 1, 0, 0, 0, 435, 427, 1, 0, 0, 0, 435, 428, 1, 0, 0, 0, 435, 429, 1, 0, 0, 0, 435, 430, 1, 0, 0, 0, 435, 431, 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 433, 1, 0, 0, 0, 435, 434, 1, 0, 0, 0, 436, 87, 1, 0, 0, 0, 437, 438, 3, 82, 41, 0, 438, 89, 1, 0, 0, 0, 439, 443, 5, 10, 0, 0, 440, 442, 3, 86, 43, 0, 441, 440, 1, 0, 0, 0, 442, 445, 1, 0, 0, 0, 443, 441, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 446, 1, 0, 0, 0, 445, 443, 1, 0, 0, 0, 446, 447, 5, 11, 0, 0, 447, 91, 1, 0, 0, 0, 448, 452, 5, 1, 0, 0, 449, 451, 3, 94, 47, 0, 450, 449, 1, 0, 0, 0, 451, 454, 1, 0, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 455, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 455, 456, 5, 2, 0, 0, 456, 93, 1, 0, 0, 0, 457, 458, 3, 80, 40, 0, 458, 459, 5, 3, 0, 0, 459, 460, 3, 86, 43, 0, 460, 95, 1, 0, 0, 0, 461, 462, 5, 33, 0, 0, 462, 97, 1, 0, 0, 0, 61, 109, 111, 118, 124, 131, 150, 157, 164, 170, 178, 183, 189, 198, 203, 206, 209, 212, 218, 221, 224, 230, 236, 243, 247, 252, 255, 258, 264, 267, 273, 278, 284, 287, 290, 295, 298, 301, 306, 309, 314, 320, 326, 336, 342, 347, 355, 360, 364, 367, 371, 376, 382, 387, 393, 396, 400, 403, 420, 435, 443, 452]
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchema.tokens b/java/com/walmartlabs/lacinia/GraphqlSchema.tokens
new file mode 100644
index 00000000..d5c4d0f9
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchema.tokens
@@ -0,0 +1,76 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+T__9=10
+T__10=11
+T__11=12
+EXECUTABLE_DIRECTIVE_LOCATION=13
+TYPE_SYSTEM_DIRECTIVE_LOCATION=14
+K_TYPE=15
+K_IMPLEMENTS=16
+K_INTERFACE=17
+K_SCHEMA=18
+K_ENUM=19
+K_UNION=20
+K_INPUT=21
+K_DIRECTIVE=22
+K_EXTEND=23
+K_SCALAR=24
+K_ON=25
+K_FRAGMENT=26
+K_QUERY=27
+K_MUTATION=28
+K_SUBSCRIPTION=29
+K_VALUE=30
+K_TRUE=31
+K_FALSE=32
+K_NULL=33
+Name=34
+IntValue=35
+FloatValue=36
+Sign=37
+IntegerPart=38
+NonZeroDigit=39
+ExponentPart=40
+Digit=41
+StringValue=42
+BlockStringValue=43
+Ignored=44
+'{'=1
+'}'=2
+':'=3
+'|'=4
+'@'=5
+'('=6
+')'=7
+'&'=8
+'='=9
+'['=10
+']'=11
+'!'=12
+'type'=15
+'implements'=16
+'interface'=17
+'schema'=18
+'enum'=19
+'union'=20
+'input'=21
+'directive'=22
+'extend'=23
+'scalar'=24
+'on'=25
+'fragment'=26
+'query'=27
+'mutation'=28
+'subscription'=29
+'value'=30
+'true'=31
+'false'=32
+'null'=33
+'-'=37
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchemaBaseListener.java b/java/com/walmartlabs/lacinia/GraphqlSchemaBaseListener.java
new file mode 100644
index 00000000..f3e0c29c
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchemaBaseListener.java
@@ -0,0 +1,628 @@
+// Generated from resources/com/walmartlabs/lacinia/GraphqlSchema.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link GraphqlSchemaListener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+@SuppressWarnings("CheckReturnValue")
+public class GraphqlSchemaBaseListener implements GraphqlSchemaListener {
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterGraphqlSchema(GraphqlSchemaParser.GraphqlSchemaContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitGraphqlSchema(GraphqlSchemaParser.GraphqlSchemaContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDescription(GraphqlSchemaParser.DescriptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDescription(GraphqlSchemaParser.DescriptionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSchemaDef(GraphqlSchemaParser.SchemaDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSchemaDef(GraphqlSchemaParser.SchemaDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterOperationTypeDef(GraphqlSchemaParser.OperationTypeDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitOperationTypeDef(GraphqlSchemaParser.OperationTypeDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterQueryOperationDef(GraphqlSchemaParser.QueryOperationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitQueryOperationDef(GraphqlSchemaParser.QueryOperationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMutationOperationDef(GraphqlSchemaParser.MutationOperationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMutationOperationDef(GraphqlSchemaParser.MutationOperationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSubscriptionOperationDef(GraphqlSchemaParser.SubscriptionOperationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSubscriptionOperationDef(GraphqlSchemaParser.SubscriptionOperationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectiveLocationList(GraphqlSchemaParser.DirectiveLocationListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectiveLocationList(GraphqlSchemaParser.DirectiveLocationListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectiveLocation(GraphqlSchemaParser.DirectiveLocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectiveLocation(GraphqlSchemaParser.DirectiveLocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExecutableDirectiveLocation(GraphqlSchemaParser.ExecutableDirectiveLocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExecutableDirectiveLocation(GraphqlSchemaParser.ExecutableDirectiveLocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeSystemDirectiveLocation(GraphqlSchemaParser.TypeSystemDirectiveLocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeSystemDirectiveLocation(GraphqlSchemaParser.TypeSystemDirectiveLocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectiveDef(GraphqlSchemaParser.DirectiveDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectiveDef(GraphqlSchemaParser.DirectiveDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectiveList(GraphqlSchemaParser.DirectiveListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectiveList(GraphqlSchemaParser.DirectiveListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirective(GraphqlSchemaParser.DirectiveContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirective(GraphqlSchemaParser.DirectiveContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectiveArgList(GraphqlSchemaParser.DirectiveArgListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectiveArgList(GraphqlSchemaParser.DirectiveArgListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDirectiveArg(GraphqlSchemaParser.DirectiveArgContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDirectiveArg(GraphqlSchemaParser.DirectiveArgContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeDef(GraphqlSchemaParser.TypeDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeDef(GraphqlSchemaParser.TypeDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeExtDef(GraphqlSchemaParser.TypeExtDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeExtDef(GraphqlSchemaParser.TypeExtDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldDefs(GraphqlSchemaParser.FieldDefsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldDefs(GraphqlSchemaParser.FieldDefsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterImplementationDef(GraphqlSchemaParser.ImplementationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitImplementationDef(GraphqlSchemaParser.ImplementationDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInputTypeDef(GraphqlSchemaParser.InputTypeDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInputTypeDef(GraphqlSchemaParser.InputTypeDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInputTypeExtDef(GraphqlSchemaParser.InputTypeExtDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInputTypeExtDef(GraphqlSchemaParser.InputTypeExtDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInputValueDefs(GraphqlSchemaParser.InputValueDefsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInputValueDefs(GraphqlSchemaParser.InputValueDefsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInputValueDef(GraphqlSchemaParser.InputValueDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInputValueDef(GraphqlSchemaParser.InputValueDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceDef(GraphqlSchemaParser.InterfaceDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceDef(GraphqlSchemaParser.InterfaceDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterScalarDef(GraphqlSchemaParser.ScalarDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitScalarDef(GraphqlSchemaParser.ScalarDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnionDef(GraphqlSchemaParser.UnionDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnionDef(GraphqlSchemaParser.UnionDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnionExtDef(GraphqlSchemaParser.UnionExtDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnionExtDef(GraphqlSchemaParser.UnionExtDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnionTypes(GraphqlSchemaParser.UnionTypesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnionTypes(GraphqlSchemaParser.UnionTypesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumDef(GraphqlSchemaParser.EnumDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumDef(GraphqlSchemaParser.EnumDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumValueDefs(GraphqlSchemaParser.EnumValueDefsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumValueDefs(GraphqlSchemaParser.EnumValueDefsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumValueDef(GraphqlSchemaParser.EnumValueDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumValueDef(GraphqlSchemaParser.EnumValueDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldDef(GraphqlSchemaParser.FieldDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldDef(GraphqlSchemaParser.FieldDefContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArgList(GraphqlSchemaParser.ArgListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArgList(GraphqlSchemaParser.ArgListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArgument(GraphqlSchemaParser.ArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArgument(GraphqlSchemaParser.ArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeSpec(GraphqlSchemaParser.TypeSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeSpec(GraphqlSchemaParser.TypeSpecContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeName(GraphqlSchemaParser.TypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeName(GraphqlSchemaParser.TypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterListType(GraphqlSchemaParser.ListTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitListType(GraphqlSchemaParser.ListTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRequired(GraphqlSchemaParser.RequiredContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRequired(GraphqlSchemaParser.RequiredContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDefaultValue(GraphqlSchemaParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDefaultValue(GraphqlSchemaParser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnyName(GraphqlSchemaParser.AnyNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnyName(GraphqlSchemaParser.AnyNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNameTokens(GraphqlSchemaParser.NameTokensContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNameTokens(GraphqlSchemaParser.NameTokensContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBooleanValue(GraphqlSchemaParser.BooleanValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBooleanValue(GraphqlSchemaParser.BooleanValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterValue(GraphqlSchemaParser.ValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitValue(GraphqlSchemaParser.ValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumValue(GraphqlSchemaParser.EnumValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumValue(GraphqlSchemaParser.EnumValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayValue(GraphqlSchemaParser.ArrayValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayValue(GraphqlSchemaParser.ArrayValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterObjectValue(GraphqlSchemaParser.ObjectValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitObjectValue(GraphqlSchemaParser.ObjectValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterObjectField(GraphqlSchemaParser.ObjectFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitObjectField(GraphqlSchemaParser.ObjectFieldContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNullValue(GraphqlSchemaParser.NullValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNullValue(GraphqlSchemaParser.NullValueContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitTerminal(TerminalNode node) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitErrorNode(ErrorNode node) { }
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.interp b/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.interp
new file mode 100644
index 00000000..beaac116
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.interp
@@ -0,0 +1,158 @@
+token literal names:
+null
+'{'
+'}'
+':'
+'|'
+'@'
+'('
+')'
+'&'
+'='
+'['
+']'
+'!'
+null
+null
+'type'
+'implements'
+'interface'
+'schema'
+'enum'
+'union'
+'input'
+'directive'
+'extend'
+'scalar'
+'on'
+'fragment'
+'query'
+'mutation'
+'subscription'
+'value'
+'true'
+'false'
+'null'
+null
+null
+null
+'-'
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+null
+EXECUTABLE_DIRECTIVE_LOCATION
+TYPE_SYSTEM_DIRECTIVE_LOCATION
+K_TYPE
+K_IMPLEMENTS
+K_INTERFACE
+K_SCHEMA
+K_ENUM
+K_UNION
+K_INPUT
+K_DIRECTIVE
+K_EXTEND
+K_SCALAR
+K_ON
+K_FRAGMENT
+K_QUERY
+K_MUTATION
+K_SUBSCRIPTION
+K_VALUE
+K_TRUE
+K_FALSE
+K_NULL
+Name
+IntValue
+FloatValue
+Sign
+IntegerPart
+NonZeroDigit
+ExponentPart
+Digit
+StringValue
+BlockStringValue
+Ignored
+
+rule names:
+T__0
+T__1
+T__2
+T__3
+T__4
+T__5
+T__6
+T__7
+T__8
+T__9
+T__10
+T__11
+EXECUTABLE_DIRECTIVE_LOCATION
+TYPE_SYSTEM_DIRECTIVE_LOCATION
+K_TYPE
+K_IMPLEMENTS
+K_INTERFACE
+K_SCHEMA
+K_ENUM
+K_UNION
+K_INPUT
+K_DIRECTIVE
+K_EXTEND
+K_SCALAR
+K_ON
+K_FRAGMENT
+K_QUERY
+K_MUTATION
+K_SUBSCRIPTION
+K_VALUE
+K_TRUE
+K_FALSE
+K_NULL
+Name
+IntValue
+FloatValue
+Sign
+IntegerPart
+NonZeroDigit
+ExponentPart
+Digit
+StringValue
+BlockStringValue
+EscapedChar
+Unicode
+DoubleQuote
+TripleQuote
+Hex
+Ignored
+Comment
+LineTerminator
+Whitespace
+Comma
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[4, 0, 44, 576, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 211, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 328, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 5, 33, 468, 8, 33, 10, 33, 12, 33, 471, 9, 33, 1, 34, 3, 34, 474, 8, 34, 1, 34, 1, 34, 1, 35, 3, 35, 479, 8, 35, 1, 35, 1, 35, 1, 35, 4, 35, 484, 8, 35, 11, 35, 12, 35, 485, 3, 35, 488, 8, 35, 1, 35, 3, 35, 491, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 4, 37, 499, 8, 37, 11, 37, 12, 37, 500, 3, 37, 503, 8, 37, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 509, 8, 39, 1, 39, 4, 39, 512, 8, 39, 11, 39, 12, 39, 513, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 5, 41, 521, 8, 41, 10, 41, 12, 41, 524, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 5, 42, 530, 8, 42, 10, 42, 12, 42, 533, 9, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 3, 43, 540, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 560, 8, 48, 1, 48, 1, 48, 1, 49, 1, 49, 5, 49, 566, 8, 49, 10, 49, 12, 49, 569, 9, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 531, 0, 53, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 44, 99, 0, 101, 0, 103, 0, 105, 0, 1, 0, 8, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 69, 69, 101, 101, 5, 0, 10, 10, 13, 13, 34, 34, 92, 92, 8232, 8233, 8, 0, 34, 34, 47, 47, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 3, 0, 48, 57, 65, 70, 97, 102, 3, 0, 10, 10, 13, 13, 8232, 8233, 4, 0, 9, 9, 11, 12, 32, 32, 160, 160, 601, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 1, 107, 1, 0, 0, 0, 3, 109, 1, 0, 0, 0, 5, 111, 1, 0, 0, 0, 7, 113, 1, 0, 0, 0, 9, 115, 1, 0, 0, 0, 11, 117, 1, 0, 0, 0, 13, 119, 1, 0, 0, 0, 15, 121, 1, 0, 0, 0, 17, 123, 1, 0, 0, 0, 19, 125, 1, 0, 0, 0, 21, 127, 1, 0, 0, 0, 23, 129, 1, 0, 0, 0, 25, 210, 1, 0, 0, 0, 27, 327, 1, 0, 0, 0, 29, 329, 1, 0, 0, 0, 31, 334, 1, 0, 0, 0, 33, 345, 1, 0, 0, 0, 35, 355, 1, 0, 0, 0, 37, 362, 1, 0, 0, 0, 39, 367, 1, 0, 0, 0, 41, 373, 1, 0, 0, 0, 43, 379, 1, 0, 0, 0, 45, 389, 1, 0, 0, 0, 47, 396, 1, 0, 0, 0, 49, 403, 1, 0, 0, 0, 51, 406, 1, 0, 0, 0, 53, 415, 1, 0, 0, 0, 55, 421, 1, 0, 0, 0, 57, 430, 1, 0, 0, 0, 59, 443, 1, 0, 0, 0, 61, 449, 1, 0, 0, 0, 63, 454, 1, 0, 0, 0, 65, 460, 1, 0, 0, 0, 67, 465, 1, 0, 0, 0, 69, 473, 1, 0, 0, 0, 71, 478, 1, 0, 0, 0, 73, 492, 1, 0, 0, 0, 75, 502, 1, 0, 0, 0, 77, 504, 1, 0, 0, 0, 79, 506, 1, 0, 0, 0, 81, 515, 1, 0, 0, 0, 83, 517, 1, 0, 0, 0, 85, 527, 1, 0, 0, 0, 87, 536, 1, 0, 0, 0, 89, 541, 1, 0, 0, 0, 91, 547, 1, 0, 0, 0, 93, 549, 1, 0, 0, 0, 95, 553, 1, 0, 0, 0, 97, 559, 1, 0, 0, 0, 99, 563, 1, 0, 0, 0, 101, 570, 1, 0, 0, 0, 103, 572, 1, 0, 0, 0, 105, 574, 1, 0, 0, 0, 107, 108, 5, 123, 0, 0, 108, 2, 1, 0, 0, 0, 109, 110, 5, 125, 0, 0, 110, 4, 1, 0, 0, 0, 111, 112, 5, 58, 0, 0, 112, 6, 1, 0, 0, 0, 113, 114, 5, 124, 0, 0, 114, 8, 1, 0, 0, 0, 115, 116, 5, 64, 0, 0, 116, 10, 1, 0, 0, 0, 117, 118, 5, 40, 0, 0, 118, 12, 1, 0, 0, 0, 119, 120, 5, 41, 0, 0, 120, 14, 1, 0, 0, 0, 121, 122, 5, 38, 0, 0, 122, 16, 1, 0, 0, 0, 123, 124, 5, 61, 0, 0, 124, 18, 1, 0, 0, 0, 125, 126, 5, 91, 0, 0, 126, 20, 1, 0, 0, 0, 127, 128, 5, 93, 0, 0, 128, 22, 1, 0, 0, 0, 129, 130, 5, 33, 0, 0, 130, 24, 1, 0, 0, 0, 131, 132, 5, 81, 0, 0, 132, 133, 5, 85, 0, 0, 133, 134, 5, 69, 0, 0, 134, 135, 5, 82, 0, 0, 135, 211, 5, 89, 0, 0, 136, 137, 5, 77, 0, 0, 137, 138, 5, 85, 0, 0, 138, 139, 5, 84, 0, 0, 139, 140, 5, 65, 0, 0, 140, 141, 5, 84, 0, 0, 141, 142, 5, 73, 0, 0, 142, 143, 5, 79, 0, 0, 143, 211, 5, 78, 0, 0, 144, 145, 5, 83, 0, 0, 145, 146, 5, 85, 0, 0, 146, 147, 5, 66, 0, 0, 147, 148, 5, 83, 0, 0, 148, 149, 5, 67, 0, 0, 149, 150, 5, 82, 0, 0, 150, 151, 5, 73, 0, 0, 151, 152, 5, 80, 0, 0, 152, 153, 5, 84, 0, 0, 153, 154, 5, 73, 0, 0, 154, 155, 5, 79, 0, 0, 155, 211, 5, 78, 0, 0, 156, 157, 5, 70, 0, 0, 157, 158, 5, 73, 0, 0, 158, 159, 5, 69, 0, 0, 159, 160, 5, 76, 0, 0, 160, 211, 5, 68, 0, 0, 161, 162, 5, 70, 0, 0, 162, 163, 5, 82, 0, 0, 163, 164, 5, 65, 0, 0, 164, 165, 5, 71, 0, 0, 165, 166, 5, 77, 0, 0, 166, 167, 5, 69, 0, 0, 167, 168, 5, 78, 0, 0, 168, 169, 5, 84, 0, 0, 169, 170, 5, 95, 0, 0, 170, 171, 5, 68, 0, 0, 171, 172, 5, 69, 0, 0, 172, 173, 5, 70, 0, 0, 173, 174, 5, 73, 0, 0, 174, 175, 5, 78, 0, 0, 175, 176, 5, 73, 0, 0, 176, 177, 5, 84, 0, 0, 177, 178, 5, 73, 0, 0, 178, 179, 5, 79, 0, 0, 179, 211, 5, 78, 0, 0, 180, 181, 5, 70, 0, 0, 181, 182, 5, 82, 0, 0, 182, 183, 5, 65, 0, 0, 183, 184, 5, 71, 0, 0, 184, 185, 5, 77, 0, 0, 185, 186, 5, 69, 0, 0, 186, 187, 5, 78, 0, 0, 187, 188, 5, 84, 0, 0, 188, 189, 5, 95, 0, 0, 189, 190, 5, 83, 0, 0, 190, 191, 5, 80, 0, 0, 191, 192, 5, 82, 0, 0, 192, 193, 5, 69, 0, 0, 193, 194, 5, 65, 0, 0, 194, 211, 5, 68, 0, 0, 195, 196, 5, 73, 0, 0, 196, 197, 5, 78, 0, 0, 197, 198, 5, 76, 0, 0, 198, 199, 5, 73, 0, 0, 199, 200, 5, 78, 0, 0, 200, 201, 5, 69, 0, 0, 201, 202, 5, 95, 0, 0, 202, 203, 5, 70, 0, 0, 203, 204, 5, 82, 0, 0, 204, 205, 5, 65, 0, 0, 205, 206, 5, 71, 0, 0, 206, 207, 5, 77, 0, 0, 207, 208, 5, 69, 0, 0, 208, 209, 5, 78, 0, 0, 209, 211, 5, 84, 0, 0, 210, 131, 1, 0, 0, 0, 210, 136, 1, 0, 0, 0, 210, 144, 1, 0, 0, 0, 210, 156, 1, 0, 0, 0, 210, 161, 1, 0, 0, 0, 210, 180, 1, 0, 0, 0, 210, 195, 1, 0, 0, 0, 211, 26, 1, 0, 0, 0, 212, 213, 5, 83, 0, 0, 213, 214, 5, 67, 0, 0, 214, 215, 5, 72, 0, 0, 215, 216, 5, 69, 0, 0, 216, 217, 5, 77, 0, 0, 217, 328, 5, 65, 0, 0, 218, 219, 5, 83, 0, 0, 219, 220, 5, 67, 0, 0, 220, 221, 5, 65, 0, 0, 221, 222, 5, 76, 0, 0, 222, 223, 5, 65, 0, 0, 223, 328, 5, 82, 0, 0, 224, 225, 5, 79, 0, 0, 225, 226, 5, 66, 0, 0, 226, 227, 5, 74, 0, 0, 227, 228, 5, 69, 0, 0, 228, 229, 5, 67, 0, 0, 229, 328, 5, 84, 0, 0, 230, 231, 5, 70, 0, 0, 231, 232, 5, 73, 0, 0, 232, 233, 5, 69, 0, 0, 233, 234, 5, 76, 0, 0, 234, 235, 5, 68, 0, 0, 235, 236, 5, 95, 0, 0, 236, 237, 5, 68, 0, 0, 237, 238, 5, 69, 0, 0, 238, 239, 5, 70, 0, 0, 239, 240, 5, 73, 0, 0, 240, 241, 5, 78, 0, 0, 241, 242, 5, 73, 0, 0, 242, 243, 5, 84, 0, 0, 243, 244, 5, 73, 0, 0, 244, 245, 5, 79, 0, 0, 245, 328, 5, 78, 0, 0, 246, 247, 5, 65, 0, 0, 247, 248, 5, 82, 0, 0, 248, 249, 5, 71, 0, 0, 249, 250, 5, 85, 0, 0, 250, 251, 5, 77, 0, 0, 251, 252, 5, 69, 0, 0, 252, 253, 5, 78, 0, 0, 253, 254, 5, 84, 0, 0, 254, 255, 5, 95, 0, 0, 255, 256, 5, 68, 0, 0, 256, 257, 5, 69, 0, 0, 257, 258, 5, 70, 0, 0, 258, 259, 5, 73, 0, 0, 259, 260, 5, 78, 0, 0, 260, 261, 5, 73, 0, 0, 261, 262, 5, 84, 0, 0, 262, 263, 5, 73, 0, 0, 263, 264, 5, 79, 0, 0, 264, 328, 5, 78, 0, 0, 265, 266, 5, 73, 0, 0, 266, 267, 5, 78, 0, 0, 267, 268, 5, 84, 0, 0, 268, 269, 5, 69, 0, 0, 269, 270, 5, 82, 0, 0, 270, 271, 5, 70, 0, 0, 271, 272, 5, 65, 0, 0, 272, 273, 5, 67, 0, 0, 273, 328, 5, 69, 0, 0, 274, 275, 5, 85, 0, 0, 275, 276, 5, 78, 0, 0, 276, 277, 5, 73, 0, 0, 277, 278, 5, 79, 0, 0, 278, 328, 5, 78, 0, 0, 279, 280, 5, 69, 0, 0, 280, 281, 5, 78, 0, 0, 281, 282, 5, 85, 0, 0, 282, 328, 5, 77, 0, 0, 283, 284, 5, 69, 0, 0, 284, 285, 5, 78, 0, 0, 285, 286, 5, 85, 0, 0, 286, 287, 5, 77, 0, 0, 287, 288, 5, 95, 0, 0, 288, 289, 5, 86, 0, 0, 289, 290, 5, 65, 0, 0, 290, 291, 5, 76, 0, 0, 291, 292, 5, 85, 0, 0, 292, 328, 5, 69, 0, 0, 293, 294, 5, 73, 0, 0, 294, 295, 5, 78, 0, 0, 295, 296, 5, 80, 0, 0, 296, 297, 5, 85, 0, 0, 297, 298, 5, 84, 0, 0, 298, 299, 5, 95, 0, 0, 299, 300, 5, 79, 0, 0, 300, 301, 5, 66, 0, 0, 301, 302, 5, 74, 0, 0, 302, 303, 5, 69, 0, 0, 303, 304, 5, 67, 0, 0, 304, 328, 5, 84, 0, 0, 305, 306, 5, 73, 0, 0, 306, 307, 5, 78, 0, 0, 307, 308, 5, 80, 0, 0, 308, 309, 5, 85, 0, 0, 309, 310, 5, 84, 0, 0, 310, 311, 5, 95, 0, 0, 311, 312, 5, 70, 0, 0, 312, 313, 5, 73, 0, 0, 313, 314, 5, 69, 0, 0, 314, 315, 5, 76, 0, 0, 315, 316, 5, 68, 0, 0, 316, 317, 5, 95, 0, 0, 317, 318, 5, 68, 0, 0, 318, 319, 5, 69, 0, 0, 319, 320, 5, 70, 0, 0, 320, 321, 5, 73, 0, 0, 321, 322, 5, 78, 0, 0, 322, 323, 5, 73, 0, 0, 323, 324, 5, 84, 0, 0, 324, 325, 5, 73, 0, 0, 325, 326, 5, 79, 0, 0, 326, 328, 5, 78, 0, 0, 327, 212, 1, 0, 0, 0, 327, 218, 1, 0, 0, 0, 327, 224, 1, 0, 0, 0, 327, 230, 1, 0, 0, 0, 327, 246, 1, 0, 0, 0, 327, 265, 1, 0, 0, 0, 327, 274, 1, 0, 0, 0, 327, 279, 1, 0, 0, 0, 327, 283, 1, 0, 0, 0, 327, 293, 1, 0, 0, 0, 327, 305, 1, 0, 0, 0, 328, 28, 1, 0, 0, 0, 329, 330, 5, 116, 0, 0, 330, 331, 5, 121, 0, 0, 331, 332, 5, 112, 0, 0, 332, 333, 5, 101, 0, 0, 333, 30, 1, 0, 0, 0, 334, 335, 5, 105, 0, 0, 335, 336, 5, 109, 0, 0, 336, 337, 5, 112, 0, 0, 337, 338, 5, 108, 0, 0, 338, 339, 5, 101, 0, 0, 339, 340, 5, 109, 0, 0, 340, 341, 5, 101, 0, 0, 341, 342, 5, 110, 0, 0, 342, 343, 5, 116, 0, 0, 343, 344, 5, 115, 0, 0, 344, 32, 1, 0, 0, 0, 345, 346, 5, 105, 0, 0, 346, 347, 5, 110, 0, 0, 347, 348, 5, 116, 0, 0, 348, 349, 5, 101, 0, 0, 349, 350, 5, 114, 0, 0, 350, 351, 5, 102, 0, 0, 351, 352, 5, 97, 0, 0, 352, 353, 5, 99, 0, 0, 353, 354, 5, 101, 0, 0, 354, 34, 1, 0, 0, 0, 355, 356, 5, 115, 0, 0, 356, 357, 5, 99, 0, 0, 357, 358, 5, 104, 0, 0, 358, 359, 5, 101, 0, 0, 359, 360, 5, 109, 0, 0, 360, 361, 5, 97, 0, 0, 361, 36, 1, 0, 0, 0, 362, 363, 5, 101, 0, 0, 363, 364, 5, 110, 0, 0, 364, 365, 5, 117, 0, 0, 365, 366, 5, 109, 0, 0, 366, 38, 1, 0, 0, 0, 367, 368, 5, 117, 0, 0, 368, 369, 5, 110, 0, 0, 369, 370, 5, 105, 0, 0, 370, 371, 5, 111, 0, 0, 371, 372, 5, 110, 0, 0, 372, 40, 1, 0, 0, 0, 373, 374, 5, 105, 0, 0, 374, 375, 5, 110, 0, 0, 375, 376, 5, 112, 0, 0, 376, 377, 5, 117, 0, 0, 377, 378, 5, 116, 0, 0, 378, 42, 1, 0, 0, 0, 379, 380, 5, 100, 0, 0, 380, 381, 5, 105, 0, 0, 381, 382, 5, 114, 0, 0, 382, 383, 5, 101, 0, 0, 383, 384, 5, 99, 0, 0, 384, 385, 5, 116, 0, 0, 385, 386, 5, 105, 0, 0, 386, 387, 5, 118, 0, 0, 387, 388, 5, 101, 0, 0, 388, 44, 1, 0, 0, 0, 389, 390, 5, 101, 0, 0, 390, 391, 5, 120, 0, 0, 391, 392, 5, 116, 0, 0, 392, 393, 5, 101, 0, 0, 393, 394, 5, 110, 0, 0, 394, 395, 5, 100, 0, 0, 395, 46, 1, 0, 0, 0, 396, 397, 5, 115, 0, 0, 397, 398, 5, 99, 0, 0, 398, 399, 5, 97, 0, 0, 399, 400, 5, 108, 0, 0, 400, 401, 5, 97, 0, 0, 401, 402, 5, 114, 0, 0, 402, 48, 1, 0, 0, 0, 403, 404, 5, 111, 0, 0, 404, 405, 5, 110, 0, 0, 405, 50, 1, 0, 0, 0, 406, 407, 5, 102, 0, 0, 407, 408, 5, 114, 0, 0, 408, 409, 5, 97, 0, 0, 409, 410, 5, 103, 0, 0, 410, 411, 5, 109, 0, 0, 411, 412, 5, 101, 0, 0, 412, 413, 5, 110, 0, 0, 413, 414, 5, 116, 0, 0, 414, 52, 1, 0, 0, 0, 415, 416, 5, 113, 0, 0, 416, 417, 5, 117, 0, 0, 417, 418, 5, 101, 0, 0, 418, 419, 5, 114, 0, 0, 419, 420, 5, 121, 0, 0, 420, 54, 1, 0, 0, 0, 421, 422, 5, 109, 0, 0, 422, 423, 5, 117, 0, 0, 423, 424, 5, 116, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, 5, 116, 0, 0, 426, 427, 5, 105, 0, 0, 427, 428, 5, 111, 0, 0, 428, 429, 5, 110, 0, 0, 429, 56, 1, 0, 0, 0, 430, 431, 5, 115, 0, 0, 431, 432, 5, 117, 0, 0, 432, 433, 5, 98, 0, 0, 433, 434, 5, 115, 0, 0, 434, 435, 5, 99, 0, 0, 435, 436, 5, 114, 0, 0, 436, 437, 5, 105, 0, 0, 437, 438, 5, 112, 0, 0, 438, 439, 5, 116, 0, 0, 439, 440, 5, 105, 0, 0, 440, 441, 5, 111, 0, 0, 441, 442, 5, 110, 0, 0, 442, 58, 1, 0, 0, 0, 443, 444, 5, 118, 0, 0, 444, 445, 5, 97, 0, 0, 445, 446, 5, 108, 0, 0, 446, 447, 5, 117, 0, 0, 447, 448, 5, 101, 0, 0, 448, 60, 1, 0, 0, 0, 449, 450, 5, 116, 0, 0, 450, 451, 5, 114, 0, 0, 451, 452, 5, 117, 0, 0, 452, 453, 5, 101, 0, 0, 453, 62, 1, 0, 0, 0, 454, 455, 5, 102, 0, 0, 455, 456, 5, 97, 0, 0, 456, 457, 5, 108, 0, 0, 457, 458, 5, 115, 0, 0, 458, 459, 5, 101, 0, 0, 459, 64, 1, 0, 0, 0, 460, 461, 5, 110, 0, 0, 461, 462, 5, 117, 0, 0, 462, 463, 5, 108, 0, 0, 463, 464, 5, 108, 0, 0, 464, 66, 1, 0, 0, 0, 465, 469, 7, 0, 0, 0, 466, 468, 7, 1, 0, 0, 467, 466, 1, 0, 0, 0, 468, 471, 1, 0, 0, 0, 469, 467, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 68, 1, 0, 0, 0, 471, 469, 1, 0, 0, 0, 472, 474, 3, 73, 36, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 3, 75, 37, 0, 476, 70, 1, 0, 0, 0, 477, 479, 3, 73, 36, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 487, 3, 75, 37, 0, 481, 483, 5, 46, 0, 0, 482, 484, 3, 81, 40, 0, 483, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 485, 486, 1, 0, 0, 0, 486, 488, 1, 0, 0, 0, 487, 481, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 490, 1, 0, 0, 0, 489, 491, 3, 79, 39, 0, 490, 489, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 72, 1, 0, 0, 0, 492, 493, 5, 45, 0, 0, 493, 74, 1, 0, 0, 0, 494, 503, 5, 48, 0, 0, 495, 503, 3, 77, 38, 0, 496, 498, 3, 77, 38, 0, 497, 499, 3, 81, 40, 0, 498, 497, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 503, 1, 0, 0, 0, 502, 494, 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 502, 496, 1, 0, 0, 0, 503, 76, 1, 0, 0, 0, 504, 505, 2, 49, 57, 0, 505, 78, 1, 0, 0, 0, 506, 508, 7, 2, 0, 0, 507, 509, 3, 73, 36, 0, 508, 507, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 511, 1, 0, 0, 0, 510, 512, 3, 81, 40, 0, 511, 510, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 80, 1, 0, 0, 0, 515, 516, 2, 48, 57, 0, 516, 82, 1, 0, 0, 0, 517, 522, 3, 91, 45, 0, 518, 521, 8, 3, 0, 0, 519, 521, 3, 87, 43, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 524, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 525, 1, 0, 0, 0, 524, 522, 1, 0, 0, 0, 525, 526, 3, 91, 45, 0, 526, 84, 1, 0, 0, 0, 527, 531, 3, 93, 46, 0, 528, 530, 9, 0, 0, 0, 529, 528, 1, 0, 0, 0, 530, 533, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 531, 529, 1, 0, 0, 0, 532, 534, 1, 0, 0, 0, 533, 531, 1, 0, 0, 0, 534, 535, 3, 93, 46, 0, 535, 86, 1, 0, 0, 0, 536, 539, 5, 92, 0, 0, 537, 540, 7, 4, 0, 0, 538, 540, 3, 89, 44, 0, 539, 537, 1, 0, 0, 0, 539, 538, 1, 0, 0, 0, 540, 88, 1, 0, 0, 0, 541, 542, 5, 117, 0, 0, 542, 543, 3, 95, 47, 0, 543, 544, 3, 95, 47, 0, 544, 545, 3, 95, 47, 0, 545, 546, 3, 95, 47, 0, 546, 90, 1, 0, 0, 0, 547, 548, 5, 34, 0, 0, 548, 92, 1, 0, 0, 0, 549, 550, 5, 34, 0, 0, 550, 551, 5, 34, 0, 0, 551, 552, 5, 34, 0, 0, 552, 94, 1, 0, 0, 0, 553, 554, 7, 5, 0, 0, 554, 96, 1, 0, 0, 0, 555, 560, 3, 103, 51, 0, 556, 560, 3, 105, 52, 0, 557, 560, 3, 101, 50, 0, 558, 560, 3, 99, 49, 0, 559, 555, 1, 0, 0, 0, 559, 556, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 559, 558, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 6, 48, 0, 0, 562, 98, 1, 0, 0, 0, 563, 567, 5, 35, 0, 0, 564, 566, 8, 6, 0, 0, 565, 564, 1, 0, 0, 0, 566, 569, 1, 0, 0, 0, 567, 565, 1, 0, 0, 0, 567, 568, 1, 0, 0, 0, 568, 100, 1, 0, 0, 0, 569, 567, 1, 0, 0, 0, 570, 571, 7, 6, 0, 0, 571, 102, 1, 0, 0, 0, 572, 573, 7, 7, 0, 0, 573, 104, 1, 0, 0, 0, 574, 575, 5, 44, 0, 0, 575, 106, 1, 0, 0, 0, 19, 0, 210, 327, 469, 473, 478, 485, 487, 490, 500, 502, 508, 513, 520, 522, 531, 539, 559, 567, 1, 6, 0, 0]
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.java b/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.java
new file mode 100644
index 00000000..24cf17cc
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.java
@@ -0,0 +1,487 @@
+// Generated from resources/com/walmartlabs/lacinia/GraphqlSchema.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
+public class GraphqlSchemaLexer extends Lexer {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
+ T__9=10, T__10=11, T__11=12, EXECUTABLE_DIRECTIVE_LOCATION=13, TYPE_SYSTEM_DIRECTIVE_LOCATION=14,
+ K_TYPE=15, K_IMPLEMENTS=16, K_INTERFACE=17, K_SCHEMA=18, K_ENUM=19, K_UNION=20,
+ K_INPUT=21, K_DIRECTIVE=22, K_EXTEND=23, K_SCALAR=24, K_ON=25, K_FRAGMENT=26,
+ K_QUERY=27, K_MUTATION=28, K_SUBSCRIPTION=29, K_VALUE=30, K_TRUE=31, K_FALSE=32,
+ K_NULL=33, Name=34, IntValue=35, FloatValue=36, Sign=37, IntegerPart=38,
+ NonZeroDigit=39, ExponentPart=40, Digit=41, StringValue=42, BlockStringValue=43,
+ Ignored=44;
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static String[] modeNames = {
+ "DEFAULT_MODE"
+ };
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
+ "T__9", "T__10", "T__11", "EXECUTABLE_DIRECTIVE_LOCATION", "TYPE_SYSTEM_DIRECTIVE_LOCATION",
+ "K_TYPE", "K_IMPLEMENTS", "K_INTERFACE", "K_SCHEMA", "K_ENUM", "K_UNION",
+ "K_INPUT", "K_DIRECTIVE", "K_EXTEND", "K_SCALAR", "K_ON", "K_FRAGMENT",
+ "K_QUERY", "K_MUTATION", "K_SUBSCRIPTION", "K_VALUE", "K_TRUE", "K_FALSE",
+ "K_NULL", "Name", "IntValue", "FloatValue", "Sign", "IntegerPart", "NonZeroDigit",
+ "ExponentPart", "Digit", "StringValue", "BlockStringValue", "EscapedChar",
+ "Unicode", "DoubleQuote", "TripleQuote", "Hex", "Ignored", "Comment",
+ "LineTerminator", "Whitespace", "Comma"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'{'", "'}'", "':'", "'|'", "'@'", "'('", "')'", "'&'", "'='",
+ "'['", "']'", "'!'", null, null, "'type'", "'implements'", "'interface'",
+ "'schema'", "'enum'", "'union'", "'input'", "'directive'", "'extend'",
+ "'scalar'", "'on'", "'fragment'", "'query'", "'mutation'", "'subscription'",
+ "'value'", "'true'", "'false'", "'null'", null, null, null, "'-'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, "EXECUTABLE_DIRECTIVE_LOCATION", "TYPE_SYSTEM_DIRECTIVE_LOCATION",
+ "K_TYPE", "K_IMPLEMENTS", "K_INTERFACE", "K_SCHEMA", "K_ENUM", "K_UNION",
+ "K_INPUT", "K_DIRECTIVE", "K_EXTEND", "K_SCALAR", "K_ON", "K_FRAGMENT",
+ "K_QUERY", "K_MUTATION", "K_SUBSCRIPTION", "K_VALUE", "K_TRUE", "K_FALSE",
+ "K_NULL", "Name", "IntValue", "FloatValue", "Sign", "IntegerPart", "NonZeroDigit",
+ "ExponentPart", "Digit", "StringValue", "BlockStringValue", "Ignored"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+
+ public GraphqlSchemaLexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "GraphqlSchema.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getChannelNames() { return channelNames; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public static final String _serializedATN =
+ "\u0004\u0000,\u0240\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
+ "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
+ "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
+ "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
+ "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+
+ "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+
+ "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+
+ "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+
+ "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+
+ "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+
+ "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+
+ "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+
+ "&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
+ "+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
+ "0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u0001\u0000"+
+ "\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0003"+
+ "\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006"+
+ "\u0001\u0006\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001"+
+ "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+
+ "\f\u0001\f\u0001\f\u0003\f\u00d3\b\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0003\r\u0148\b\r\u0001\u000e\u0001\u000e\u0001\u000e"+
+ "\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
+ "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
+ "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
+ "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011"+
+ "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+
+ "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013"+
+ "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014"+
+ "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+
+ "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+
+ "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016"+
+ "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017"+
+ "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018"+
+ "\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+
+ "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a"+
+ "\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001b"+
+ "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b"+
+ "\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+
+ "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+
+ "\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d"+
+ "\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0001\u001e"+
+ "\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+
+ "\u0001\u001f\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001!\u0001"+
+ "!\u0005!\u01d4\b!\n!\f!\u01d7\t!\u0001\"\u0003\"\u01da\b\"\u0001\"\u0001"+
+ "\"\u0001#\u0003#\u01df\b#\u0001#\u0001#\u0001#\u0004#\u01e4\b#\u000b#"+
+ "\f#\u01e5\u0003#\u01e8\b#\u0001#\u0003#\u01eb\b#\u0001$\u0001$\u0001%"+
+ "\u0001%\u0001%\u0001%\u0004%\u01f3\b%\u000b%\f%\u01f4\u0003%\u01f7\b%"+
+ "\u0001&\u0001&\u0001\'\u0001\'\u0003\'\u01fd\b\'\u0001\'\u0004\'\u0200"+
+ "\b\'\u000b\'\f\'\u0201\u0001(\u0001(\u0001)\u0001)\u0001)\u0005)\u0209"+
+ "\b)\n)\f)\u020c\t)\u0001)\u0001)\u0001*\u0001*\u0005*\u0212\b*\n*\f*\u0215"+
+ "\t*\u0001*\u0001*\u0001+\u0001+\u0001+\u0003+\u021c\b+\u0001,\u0001,\u0001"+
+ ",\u0001,\u0001,\u0001,\u0001-\u0001-\u0001.\u0001.\u0001.\u0001.\u0001"+
+ "/\u0001/\u00010\u00010\u00010\u00010\u00030\u0230\b0\u00010\u00010\u0001"+
+ "1\u00011\u00051\u0236\b1\n1\f1\u0239\t1\u00012\u00012\u00013\u00013\u0001"+
+ "4\u00014\u0001\u0213\u00005\u0001\u0001\u0003\u0002\u0005\u0003\u0007"+
+ "\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b"+
+ "\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013"+
+ "\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b7\u001c9\u001d"+
+ ";\u001e=\u001f? A!C\"E#G$I%K&M\'O(Q)S*U+W\u0000Y\u0000[\u0000]\u0000_"+
+ "\u0000a,c\u0000e\u0000g\u0000i\u0000\u0001\u0000\b\u0003\u0000AZ__az\u0004"+
+ "\u000009AZ__az\u0002\u0000EEee\u0005\u0000\n\n\r\r\"\"\\\\\u2028\u2029"+
+ "\b\u0000\"\"//\\\\bbffnnrrtt\u0003\u000009AFaf\u0003\u0000\n\n\r\r\u2028"+
+ "\u2029\u0004\u0000\t\t\u000b\f \u00a0\u00a0\u0259\u0000\u0001\u0001\u0000"+
+ "\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000"+
+ "\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000"+
+ "\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000"+
+ "\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000"+
+ "\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000"+
+ "\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000"+
+ "\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000"+
+ "\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000"+
+ "#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001"+
+ "\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000"+
+ "\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u0000"+
+ "1\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001"+
+ "\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000"+
+ "\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000"+
+ "?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001"+
+ "\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000"+
+ "\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000\u0000"+
+ "M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000Q\u0001"+
+ "\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001\u0000\u0000"+
+ "\u0000\u0000a\u0001\u0000\u0000\u0000\u0001k\u0001\u0000\u0000\u0000\u0003"+
+ "m\u0001\u0000\u0000\u0000\u0005o\u0001\u0000\u0000\u0000\u0007q\u0001"+
+ "\u0000\u0000\u0000\ts\u0001\u0000\u0000\u0000\u000bu\u0001\u0000\u0000"+
+ "\u0000\rw\u0001\u0000\u0000\u0000\u000fy\u0001\u0000\u0000\u0000\u0011"+
+ "{\u0001\u0000\u0000\u0000\u0013}\u0001\u0000\u0000\u0000\u0015\u007f\u0001"+
+ "\u0000\u0000\u0000\u0017\u0081\u0001\u0000\u0000\u0000\u0019\u00d2\u0001"+
+ "\u0000\u0000\u0000\u001b\u0147\u0001\u0000\u0000\u0000\u001d\u0149\u0001"+
+ "\u0000\u0000\u0000\u001f\u014e\u0001\u0000\u0000\u0000!\u0159\u0001\u0000"+
+ "\u0000\u0000#\u0163\u0001\u0000\u0000\u0000%\u016a\u0001\u0000\u0000\u0000"+
+ "\'\u016f\u0001\u0000\u0000\u0000)\u0175\u0001\u0000\u0000\u0000+\u017b"+
+ "\u0001\u0000\u0000\u0000-\u0185\u0001\u0000\u0000\u0000/\u018c\u0001\u0000"+
+ "\u0000\u00001\u0193\u0001\u0000\u0000\u00003\u0196\u0001\u0000\u0000\u0000"+
+ "5\u019f\u0001\u0000\u0000\u00007\u01a5\u0001\u0000\u0000\u00009\u01ae"+
+ "\u0001\u0000\u0000\u0000;\u01bb\u0001\u0000\u0000\u0000=\u01c1\u0001\u0000"+
+ "\u0000\u0000?\u01c6\u0001\u0000\u0000\u0000A\u01cc\u0001\u0000\u0000\u0000"+
+ "C\u01d1\u0001\u0000\u0000\u0000E\u01d9\u0001\u0000\u0000\u0000G\u01de"+
+ "\u0001\u0000\u0000\u0000I\u01ec\u0001\u0000\u0000\u0000K\u01f6\u0001\u0000"+
+ "\u0000\u0000M\u01f8\u0001\u0000\u0000\u0000O\u01fa\u0001\u0000\u0000\u0000"+
+ "Q\u0203\u0001\u0000\u0000\u0000S\u0205\u0001\u0000\u0000\u0000U\u020f"+
+ "\u0001\u0000\u0000\u0000W\u0218\u0001\u0000\u0000\u0000Y\u021d\u0001\u0000"+
+ "\u0000\u0000[\u0223\u0001\u0000\u0000\u0000]\u0225\u0001\u0000\u0000\u0000"+
+ "_\u0229\u0001\u0000\u0000\u0000a\u022f\u0001\u0000\u0000\u0000c\u0233"+
+ "\u0001\u0000\u0000\u0000e\u023a\u0001\u0000\u0000\u0000g\u023c\u0001\u0000"+
+ "\u0000\u0000i\u023e\u0001\u0000\u0000\u0000kl\u0005{\u0000\u0000l\u0002"+
+ "\u0001\u0000\u0000\u0000mn\u0005}\u0000\u0000n\u0004\u0001\u0000\u0000"+
+ "\u0000op\u0005:\u0000\u0000p\u0006\u0001\u0000\u0000\u0000qr\u0005|\u0000"+
+ "\u0000r\b\u0001\u0000\u0000\u0000st\u0005@\u0000\u0000t\n\u0001\u0000"+
+ "\u0000\u0000uv\u0005(\u0000\u0000v\f\u0001\u0000\u0000\u0000wx\u0005)"+
+ "\u0000\u0000x\u000e\u0001\u0000\u0000\u0000yz\u0005&\u0000\u0000z\u0010"+
+ "\u0001\u0000\u0000\u0000{|\u0005=\u0000\u0000|\u0012\u0001\u0000\u0000"+
+ "\u0000}~\u0005[\u0000\u0000~\u0014\u0001\u0000\u0000\u0000\u007f\u0080"+
+ "\u0005]\u0000\u0000\u0080\u0016\u0001\u0000\u0000\u0000\u0081\u0082\u0005"+
+ "!\u0000\u0000\u0082\u0018\u0001\u0000\u0000\u0000\u0083\u0084\u0005Q\u0000"+
+ "\u0000\u0084\u0085\u0005U\u0000\u0000\u0085\u0086\u0005E\u0000\u0000\u0086"+
+ "\u0087\u0005R\u0000\u0000\u0087\u00d3\u0005Y\u0000\u0000\u0088\u0089\u0005"+
+ "M\u0000\u0000\u0089\u008a\u0005U\u0000\u0000\u008a\u008b\u0005T\u0000"+
+ "\u0000\u008b\u008c\u0005A\u0000\u0000\u008c\u008d\u0005T\u0000\u0000\u008d"+
+ "\u008e\u0005I\u0000\u0000\u008e\u008f\u0005O\u0000\u0000\u008f\u00d3\u0005"+
+ "N\u0000\u0000\u0090\u0091\u0005S\u0000\u0000\u0091\u0092\u0005U\u0000"+
+ "\u0000\u0092\u0093\u0005B\u0000\u0000\u0093\u0094\u0005S\u0000\u0000\u0094"+
+ "\u0095\u0005C\u0000\u0000\u0095\u0096\u0005R\u0000\u0000\u0096\u0097\u0005"+
+ "I\u0000\u0000\u0097\u0098\u0005P\u0000\u0000\u0098\u0099\u0005T\u0000"+
+ "\u0000\u0099\u009a\u0005I\u0000\u0000\u009a\u009b\u0005O\u0000\u0000\u009b"+
+ "\u00d3\u0005N\u0000\u0000\u009c\u009d\u0005F\u0000\u0000\u009d\u009e\u0005"+
+ "I\u0000\u0000\u009e\u009f\u0005E\u0000\u0000\u009f\u00a0\u0005L\u0000"+
+ "\u0000\u00a0\u00d3\u0005D\u0000\u0000\u00a1\u00a2\u0005F\u0000\u0000\u00a2"+
+ "\u00a3\u0005R\u0000\u0000\u00a3\u00a4\u0005A\u0000\u0000\u00a4\u00a5\u0005"+
+ "G\u0000\u0000\u00a5\u00a6\u0005M\u0000\u0000\u00a6\u00a7\u0005E\u0000"+
+ "\u0000\u00a7\u00a8\u0005N\u0000\u0000\u00a8\u00a9\u0005T\u0000\u0000\u00a9"+
+ "\u00aa\u0005_\u0000\u0000\u00aa\u00ab\u0005D\u0000\u0000\u00ab\u00ac\u0005"+
+ "E\u0000\u0000\u00ac\u00ad\u0005F\u0000\u0000\u00ad\u00ae\u0005I\u0000"+
+ "\u0000\u00ae\u00af\u0005N\u0000\u0000\u00af\u00b0\u0005I\u0000\u0000\u00b0"+
+ "\u00b1\u0005T\u0000\u0000\u00b1\u00b2\u0005I\u0000\u0000\u00b2\u00b3\u0005"+
+ "O\u0000\u0000\u00b3\u00d3\u0005N\u0000\u0000\u00b4\u00b5\u0005F\u0000"+
+ "\u0000\u00b5\u00b6\u0005R\u0000\u0000\u00b6\u00b7\u0005A\u0000\u0000\u00b7"+
+ "\u00b8\u0005G\u0000\u0000\u00b8\u00b9\u0005M\u0000\u0000\u00b9\u00ba\u0005"+
+ "E\u0000\u0000\u00ba\u00bb\u0005N\u0000\u0000\u00bb\u00bc\u0005T\u0000"+
+ "\u0000\u00bc\u00bd\u0005_\u0000\u0000\u00bd\u00be\u0005S\u0000\u0000\u00be"+
+ "\u00bf\u0005P\u0000\u0000\u00bf\u00c0\u0005R\u0000\u0000\u00c0\u00c1\u0005"+
+ "E\u0000\u0000\u00c1\u00c2\u0005A\u0000\u0000\u00c2\u00d3\u0005D\u0000"+
+ "\u0000\u00c3\u00c4\u0005I\u0000\u0000\u00c4\u00c5\u0005N\u0000\u0000\u00c5"+
+ "\u00c6\u0005L\u0000\u0000\u00c6\u00c7\u0005I\u0000\u0000\u00c7\u00c8\u0005"+
+ "N\u0000\u0000\u00c8\u00c9\u0005E\u0000\u0000\u00c9\u00ca\u0005_\u0000"+
+ "\u0000\u00ca\u00cb\u0005F\u0000\u0000\u00cb\u00cc\u0005R\u0000\u0000\u00cc"+
+ "\u00cd\u0005A\u0000\u0000\u00cd\u00ce\u0005G\u0000\u0000\u00ce\u00cf\u0005"+
+ "M\u0000\u0000\u00cf\u00d0\u0005E\u0000\u0000\u00d0\u00d1\u0005N\u0000"+
+ "\u0000\u00d1\u00d3\u0005T\u0000\u0000\u00d2\u0083\u0001\u0000\u0000\u0000"+
+ "\u00d2\u0088\u0001\u0000\u0000\u0000\u00d2\u0090\u0001\u0000\u0000\u0000"+
+ "\u00d2\u009c\u0001\u0000\u0000\u0000\u00d2\u00a1\u0001\u0000\u0000\u0000"+
+ "\u00d2\u00b4\u0001\u0000\u0000\u0000\u00d2\u00c3\u0001\u0000\u0000\u0000"+
+ "\u00d3\u001a\u0001\u0000\u0000\u0000\u00d4\u00d5\u0005S\u0000\u0000\u00d5"+
+ "\u00d6\u0005C\u0000\u0000\u00d6\u00d7\u0005H\u0000\u0000\u00d7\u00d8\u0005"+
+ "E\u0000\u0000\u00d8\u00d9\u0005M\u0000\u0000\u00d9\u0148\u0005A\u0000"+
+ "\u0000\u00da\u00db\u0005S\u0000\u0000\u00db\u00dc\u0005C\u0000\u0000\u00dc"+
+ "\u00dd\u0005A\u0000\u0000\u00dd\u00de\u0005L\u0000\u0000\u00de\u00df\u0005"+
+ "A\u0000\u0000\u00df\u0148\u0005R\u0000\u0000\u00e0\u00e1\u0005O\u0000"+
+ "\u0000\u00e1\u00e2\u0005B\u0000\u0000\u00e2\u00e3\u0005J\u0000\u0000\u00e3"+
+ "\u00e4\u0005E\u0000\u0000\u00e4\u00e5\u0005C\u0000\u0000\u00e5\u0148\u0005"+
+ "T\u0000\u0000\u00e6\u00e7\u0005F\u0000\u0000\u00e7\u00e8\u0005I\u0000"+
+ "\u0000\u00e8\u00e9\u0005E\u0000\u0000\u00e9\u00ea\u0005L\u0000\u0000\u00ea"+
+ "\u00eb\u0005D\u0000\u0000\u00eb\u00ec\u0005_\u0000\u0000\u00ec\u00ed\u0005"+
+ "D\u0000\u0000\u00ed\u00ee\u0005E\u0000\u0000\u00ee\u00ef\u0005F\u0000"+
+ "\u0000\u00ef\u00f0\u0005I\u0000\u0000\u00f0\u00f1\u0005N\u0000\u0000\u00f1"+
+ "\u00f2\u0005I\u0000\u0000\u00f2\u00f3\u0005T\u0000\u0000\u00f3\u00f4\u0005"+
+ "I\u0000\u0000\u00f4\u00f5\u0005O\u0000\u0000\u00f5\u0148\u0005N\u0000"+
+ "\u0000\u00f6\u00f7\u0005A\u0000\u0000\u00f7\u00f8\u0005R\u0000\u0000\u00f8"+
+ "\u00f9\u0005G\u0000\u0000\u00f9\u00fa\u0005U\u0000\u0000\u00fa\u00fb\u0005"+
+ "M\u0000\u0000\u00fb\u00fc\u0005E\u0000\u0000\u00fc\u00fd\u0005N\u0000"+
+ "\u0000\u00fd\u00fe\u0005T\u0000\u0000\u00fe\u00ff\u0005_\u0000\u0000\u00ff"+
+ "\u0100\u0005D\u0000\u0000\u0100\u0101\u0005E\u0000\u0000\u0101\u0102\u0005"+
+ "F\u0000\u0000\u0102\u0103\u0005I\u0000\u0000\u0103\u0104\u0005N\u0000"+
+ "\u0000\u0104\u0105\u0005I\u0000\u0000\u0105\u0106\u0005T\u0000\u0000\u0106"+
+ "\u0107\u0005I\u0000\u0000\u0107\u0108\u0005O\u0000\u0000\u0108\u0148\u0005"+
+ "N\u0000\u0000\u0109\u010a\u0005I\u0000\u0000\u010a\u010b\u0005N\u0000"+
+ "\u0000\u010b\u010c\u0005T\u0000\u0000\u010c\u010d\u0005E\u0000\u0000\u010d"+
+ "\u010e\u0005R\u0000\u0000\u010e\u010f\u0005F\u0000\u0000\u010f\u0110\u0005"+
+ "A\u0000\u0000\u0110\u0111\u0005C\u0000\u0000\u0111\u0148\u0005E\u0000"+
+ "\u0000\u0112\u0113\u0005U\u0000\u0000\u0113\u0114\u0005N\u0000\u0000\u0114"+
+ "\u0115\u0005I\u0000\u0000\u0115\u0116\u0005O\u0000\u0000\u0116\u0148\u0005"+
+ "N\u0000\u0000\u0117\u0118\u0005E\u0000\u0000\u0118\u0119\u0005N\u0000"+
+ "\u0000\u0119\u011a\u0005U\u0000\u0000\u011a\u0148\u0005M\u0000\u0000\u011b"+
+ "\u011c\u0005E\u0000\u0000\u011c\u011d\u0005N\u0000\u0000\u011d\u011e\u0005"+
+ "U\u0000\u0000\u011e\u011f\u0005M\u0000\u0000\u011f\u0120\u0005_\u0000"+
+ "\u0000\u0120\u0121\u0005V\u0000\u0000\u0121\u0122\u0005A\u0000\u0000\u0122"+
+ "\u0123\u0005L\u0000\u0000\u0123\u0124\u0005U\u0000\u0000\u0124\u0148\u0005"+
+ "E\u0000\u0000\u0125\u0126\u0005I\u0000\u0000\u0126\u0127\u0005N\u0000"+
+ "\u0000\u0127\u0128\u0005P\u0000\u0000\u0128\u0129\u0005U\u0000\u0000\u0129"+
+ "\u012a\u0005T\u0000\u0000\u012a\u012b\u0005_\u0000\u0000\u012b\u012c\u0005"+
+ "O\u0000\u0000\u012c\u012d\u0005B\u0000\u0000\u012d\u012e\u0005J\u0000"+
+ "\u0000\u012e\u012f\u0005E\u0000\u0000\u012f\u0130\u0005C\u0000\u0000\u0130"+
+ "\u0148\u0005T\u0000\u0000\u0131\u0132\u0005I\u0000\u0000\u0132\u0133\u0005"+
+ "N\u0000\u0000\u0133\u0134\u0005P\u0000\u0000\u0134\u0135\u0005U\u0000"+
+ "\u0000\u0135\u0136\u0005T\u0000\u0000\u0136\u0137\u0005_\u0000\u0000\u0137"+
+ "\u0138\u0005F\u0000\u0000\u0138\u0139\u0005I\u0000\u0000\u0139\u013a\u0005"+
+ "E\u0000\u0000\u013a\u013b\u0005L\u0000\u0000\u013b\u013c\u0005D\u0000"+
+ "\u0000\u013c\u013d\u0005_\u0000\u0000\u013d\u013e\u0005D\u0000\u0000\u013e"+
+ "\u013f\u0005E\u0000\u0000\u013f\u0140\u0005F\u0000\u0000\u0140\u0141\u0005"+
+ "I\u0000\u0000\u0141\u0142\u0005N\u0000\u0000\u0142\u0143\u0005I\u0000"+
+ "\u0000\u0143\u0144\u0005T\u0000\u0000\u0144\u0145\u0005I\u0000\u0000\u0145"+
+ "\u0146\u0005O\u0000\u0000\u0146\u0148\u0005N\u0000\u0000\u0147\u00d4\u0001"+
+ "\u0000\u0000\u0000\u0147\u00da\u0001\u0000\u0000\u0000\u0147\u00e0\u0001"+
+ "\u0000\u0000\u0000\u0147\u00e6\u0001\u0000\u0000\u0000\u0147\u00f6\u0001"+
+ "\u0000\u0000\u0000\u0147\u0109\u0001\u0000\u0000\u0000\u0147\u0112\u0001"+
+ "\u0000\u0000\u0000\u0147\u0117\u0001\u0000\u0000\u0000\u0147\u011b\u0001"+
+ "\u0000\u0000\u0000\u0147\u0125\u0001\u0000\u0000\u0000\u0147\u0131\u0001"+
+ "\u0000\u0000\u0000\u0148\u001c\u0001\u0000\u0000\u0000\u0149\u014a\u0005"+
+ "t\u0000\u0000\u014a\u014b\u0005y\u0000\u0000\u014b\u014c\u0005p\u0000"+
+ "\u0000\u014c\u014d\u0005e\u0000\u0000\u014d\u001e\u0001\u0000\u0000\u0000"+
+ "\u014e\u014f\u0005i\u0000\u0000\u014f\u0150\u0005m\u0000\u0000\u0150\u0151"+
+ "\u0005p\u0000\u0000\u0151\u0152\u0005l\u0000\u0000\u0152\u0153\u0005e"+
+ "\u0000\u0000\u0153\u0154\u0005m\u0000\u0000\u0154\u0155\u0005e\u0000\u0000"+
+ "\u0155\u0156\u0005n\u0000\u0000\u0156\u0157\u0005t\u0000\u0000\u0157\u0158"+
+ "\u0005s\u0000\u0000\u0158 \u0001\u0000\u0000\u0000\u0159\u015a\u0005i"+
+ "\u0000\u0000\u015a\u015b\u0005n\u0000\u0000\u015b\u015c\u0005t\u0000\u0000"+
+ "\u015c\u015d\u0005e\u0000\u0000\u015d\u015e\u0005r\u0000\u0000\u015e\u015f"+
+ "\u0005f\u0000\u0000\u015f\u0160\u0005a\u0000\u0000\u0160\u0161\u0005c"+
+ "\u0000\u0000\u0161\u0162\u0005e\u0000\u0000\u0162\"\u0001\u0000\u0000"+
+ "\u0000\u0163\u0164\u0005s\u0000\u0000\u0164\u0165\u0005c\u0000\u0000\u0165"+
+ "\u0166\u0005h\u0000\u0000\u0166\u0167\u0005e\u0000\u0000\u0167\u0168\u0005"+
+ "m\u0000\u0000\u0168\u0169\u0005a\u0000\u0000\u0169$\u0001\u0000\u0000"+
+ "\u0000\u016a\u016b\u0005e\u0000\u0000\u016b\u016c\u0005n\u0000\u0000\u016c"+
+ "\u016d\u0005u\u0000\u0000\u016d\u016e\u0005m\u0000\u0000\u016e&\u0001"+
+ "\u0000\u0000\u0000\u016f\u0170\u0005u\u0000\u0000\u0170\u0171\u0005n\u0000"+
+ "\u0000\u0171\u0172\u0005i\u0000\u0000\u0172\u0173\u0005o\u0000\u0000\u0173"+
+ "\u0174\u0005n\u0000\u0000\u0174(\u0001\u0000\u0000\u0000\u0175\u0176\u0005"+
+ "i\u0000\u0000\u0176\u0177\u0005n\u0000\u0000\u0177\u0178\u0005p\u0000"+
+ "\u0000\u0178\u0179\u0005u\u0000\u0000\u0179\u017a\u0005t\u0000\u0000\u017a"+
+ "*\u0001\u0000\u0000\u0000\u017b\u017c\u0005d\u0000\u0000\u017c\u017d\u0005"+
+ "i\u0000\u0000\u017d\u017e\u0005r\u0000\u0000\u017e\u017f\u0005e\u0000"+
+ "\u0000\u017f\u0180\u0005c\u0000\u0000\u0180\u0181\u0005t\u0000\u0000\u0181"+
+ "\u0182\u0005i\u0000\u0000\u0182\u0183\u0005v\u0000\u0000\u0183\u0184\u0005"+
+ "e\u0000\u0000\u0184,\u0001\u0000\u0000\u0000\u0185\u0186\u0005e\u0000"+
+ "\u0000\u0186\u0187\u0005x\u0000\u0000\u0187\u0188\u0005t\u0000\u0000\u0188"+
+ "\u0189\u0005e\u0000\u0000\u0189\u018a\u0005n\u0000\u0000\u018a\u018b\u0005"+
+ "d\u0000\u0000\u018b.\u0001\u0000\u0000\u0000\u018c\u018d\u0005s\u0000"+
+ "\u0000\u018d\u018e\u0005c\u0000\u0000\u018e\u018f\u0005a\u0000\u0000\u018f"+
+ "\u0190\u0005l\u0000\u0000\u0190\u0191\u0005a\u0000\u0000\u0191\u0192\u0005"+
+ "r\u0000\u0000\u01920\u0001\u0000\u0000\u0000\u0193\u0194\u0005o\u0000"+
+ "\u0000\u0194\u0195\u0005n\u0000\u0000\u01952\u0001\u0000\u0000\u0000\u0196"+
+ "\u0197\u0005f\u0000\u0000\u0197\u0198\u0005r\u0000\u0000\u0198\u0199\u0005"+
+ "a\u0000\u0000\u0199\u019a\u0005g\u0000\u0000\u019a\u019b\u0005m\u0000"+
+ "\u0000\u019b\u019c\u0005e\u0000\u0000\u019c\u019d\u0005n\u0000\u0000\u019d"+
+ "\u019e\u0005t\u0000\u0000\u019e4\u0001\u0000\u0000\u0000\u019f\u01a0\u0005"+
+ "q\u0000\u0000\u01a0\u01a1\u0005u\u0000\u0000\u01a1\u01a2\u0005e\u0000"+
+ "\u0000\u01a2\u01a3\u0005r\u0000\u0000\u01a3\u01a4\u0005y\u0000\u0000\u01a4"+
+ "6\u0001\u0000\u0000\u0000\u01a5\u01a6\u0005m\u0000\u0000\u01a6\u01a7\u0005"+
+ "u\u0000\u0000\u01a7\u01a8\u0005t\u0000\u0000\u01a8\u01a9\u0005a\u0000"+
+ "\u0000\u01a9\u01aa\u0005t\u0000\u0000\u01aa\u01ab\u0005i\u0000\u0000\u01ab"+
+ "\u01ac\u0005o\u0000\u0000\u01ac\u01ad\u0005n\u0000\u0000\u01ad8\u0001"+
+ "\u0000\u0000\u0000\u01ae\u01af\u0005s\u0000\u0000\u01af\u01b0\u0005u\u0000"+
+ "\u0000\u01b0\u01b1\u0005b\u0000\u0000\u01b1\u01b2\u0005s\u0000\u0000\u01b2"+
+ "\u01b3\u0005c\u0000\u0000\u01b3\u01b4\u0005r\u0000\u0000\u01b4\u01b5\u0005"+
+ "i\u0000\u0000\u01b5\u01b6\u0005p\u0000\u0000\u01b6\u01b7\u0005t\u0000"+
+ "\u0000\u01b7\u01b8\u0005i\u0000\u0000\u01b8\u01b9\u0005o\u0000\u0000\u01b9"+
+ "\u01ba\u0005n\u0000\u0000\u01ba:\u0001\u0000\u0000\u0000\u01bb\u01bc\u0005"+
+ "v\u0000\u0000\u01bc\u01bd\u0005a\u0000\u0000\u01bd\u01be\u0005l\u0000"+
+ "\u0000\u01be\u01bf\u0005u\u0000\u0000\u01bf\u01c0\u0005e\u0000\u0000\u01c0"+
+ "<\u0001\u0000\u0000\u0000\u01c1\u01c2\u0005t\u0000\u0000\u01c2\u01c3\u0005"+
+ "r\u0000\u0000\u01c3\u01c4\u0005u\u0000\u0000\u01c4\u01c5\u0005e\u0000"+
+ "\u0000\u01c5>\u0001\u0000\u0000\u0000\u01c6\u01c7\u0005f\u0000\u0000\u01c7"+
+ "\u01c8\u0005a\u0000\u0000\u01c8\u01c9\u0005l\u0000\u0000\u01c9\u01ca\u0005"+
+ "s\u0000\u0000\u01ca\u01cb\u0005e\u0000\u0000\u01cb@\u0001\u0000\u0000"+
+ "\u0000\u01cc\u01cd\u0005n\u0000\u0000\u01cd\u01ce\u0005u\u0000\u0000\u01ce"+
+ "\u01cf\u0005l\u0000\u0000\u01cf\u01d0\u0005l\u0000\u0000\u01d0B\u0001"+
+ "\u0000\u0000\u0000\u01d1\u01d5\u0007\u0000\u0000\u0000\u01d2\u01d4\u0007"+
+ "\u0001\u0000\u0000\u01d3\u01d2\u0001\u0000\u0000\u0000\u01d4\u01d7\u0001"+
+ "\u0000\u0000\u0000\u01d5\u01d3\u0001\u0000\u0000\u0000\u01d5\u01d6\u0001"+
+ "\u0000\u0000\u0000\u01d6D\u0001\u0000\u0000\u0000\u01d7\u01d5\u0001\u0000"+
+ "\u0000\u0000\u01d8\u01da\u0003I$\u0000\u01d9\u01d8\u0001\u0000\u0000\u0000"+
+ "\u01d9\u01da\u0001\u0000\u0000\u0000\u01da\u01db\u0001\u0000\u0000\u0000"+
+ "\u01db\u01dc\u0003K%\u0000\u01dcF\u0001\u0000\u0000\u0000\u01dd\u01df"+
+ "\u0003I$\u0000\u01de\u01dd\u0001\u0000\u0000\u0000\u01de\u01df\u0001\u0000"+
+ "\u0000\u0000\u01df\u01e0\u0001\u0000\u0000\u0000\u01e0\u01e7\u0003K%\u0000"+
+ "\u01e1\u01e3\u0005.\u0000\u0000\u01e2\u01e4\u0003Q(\u0000\u01e3\u01e2"+
+ "\u0001\u0000\u0000\u0000\u01e4\u01e5\u0001\u0000\u0000\u0000\u01e5\u01e3"+
+ "\u0001\u0000\u0000\u0000\u01e5\u01e6\u0001\u0000\u0000\u0000\u01e6\u01e8"+
+ "\u0001\u0000\u0000\u0000\u01e7\u01e1\u0001\u0000\u0000\u0000\u01e7\u01e8"+
+ "\u0001\u0000\u0000\u0000\u01e8\u01ea\u0001\u0000\u0000\u0000\u01e9\u01eb"+
+ "\u0003O\'\u0000\u01ea\u01e9\u0001\u0000\u0000\u0000\u01ea\u01eb\u0001"+
+ "\u0000\u0000\u0000\u01ebH\u0001\u0000\u0000\u0000\u01ec\u01ed\u0005-\u0000"+
+ "\u0000\u01edJ\u0001\u0000\u0000\u0000\u01ee\u01f7\u00050\u0000\u0000\u01ef"+
+ "\u01f7\u0003M&\u0000\u01f0\u01f2\u0003M&\u0000\u01f1\u01f3\u0003Q(\u0000"+
+ "\u01f2\u01f1\u0001\u0000\u0000\u0000\u01f3\u01f4\u0001\u0000\u0000\u0000"+
+ "\u01f4\u01f2\u0001\u0000\u0000\u0000\u01f4\u01f5\u0001\u0000\u0000\u0000"+
+ "\u01f5\u01f7\u0001\u0000\u0000\u0000\u01f6\u01ee\u0001\u0000\u0000\u0000"+
+ "\u01f6\u01ef\u0001\u0000\u0000\u0000\u01f6\u01f0\u0001\u0000\u0000\u0000"+
+ "\u01f7L\u0001\u0000\u0000\u0000\u01f8\u01f9\u000219\u0000\u01f9N\u0001"+
+ "\u0000\u0000\u0000\u01fa\u01fc\u0007\u0002\u0000\u0000\u01fb\u01fd\u0003"+
+ "I$\u0000\u01fc\u01fb\u0001\u0000\u0000\u0000\u01fc\u01fd\u0001\u0000\u0000"+
+ "\u0000\u01fd\u01ff\u0001\u0000\u0000\u0000\u01fe\u0200\u0003Q(\u0000\u01ff"+
+ "\u01fe\u0001\u0000\u0000\u0000\u0200\u0201\u0001\u0000\u0000\u0000\u0201"+
+ "\u01ff\u0001\u0000\u0000\u0000\u0201\u0202\u0001\u0000\u0000\u0000\u0202"+
+ "P\u0001\u0000\u0000\u0000\u0203\u0204\u000209\u0000\u0204R\u0001\u0000"+
+ "\u0000\u0000\u0205\u020a\u0003[-\u0000\u0206\u0209\b\u0003\u0000\u0000"+
+ "\u0207\u0209\u0003W+\u0000\u0208\u0206\u0001\u0000\u0000\u0000\u0208\u0207"+
+ "\u0001\u0000\u0000\u0000\u0209\u020c\u0001\u0000\u0000\u0000\u020a\u0208"+
+ "\u0001\u0000\u0000\u0000\u020a\u020b\u0001\u0000\u0000\u0000\u020b\u020d"+
+ "\u0001\u0000\u0000\u0000\u020c\u020a\u0001\u0000\u0000\u0000\u020d\u020e"+
+ "\u0003[-\u0000\u020eT\u0001\u0000\u0000\u0000\u020f\u0213\u0003].\u0000"+
+ "\u0210\u0212\t\u0000\u0000\u0000\u0211\u0210\u0001\u0000\u0000\u0000\u0212"+
+ "\u0215\u0001\u0000\u0000\u0000\u0213\u0214\u0001\u0000\u0000\u0000\u0213"+
+ "\u0211\u0001\u0000\u0000\u0000\u0214\u0216\u0001\u0000\u0000\u0000\u0215"+
+ "\u0213\u0001\u0000\u0000\u0000\u0216\u0217\u0003].\u0000\u0217V\u0001"+
+ "\u0000\u0000\u0000\u0218\u021b\u0005\\\u0000\u0000\u0219\u021c\u0007\u0004"+
+ "\u0000\u0000\u021a\u021c\u0003Y,\u0000\u021b\u0219\u0001\u0000\u0000\u0000"+
+ "\u021b\u021a\u0001\u0000\u0000\u0000\u021cX\u0001\u0000\u0000\u0000\u021d"+
+ "\u021e\u0005u\u0000\u0000\u021e\u021f\u0003_/\u0000\u021f\u0220\u0003"+
+ "_/\u0000\u0220\u0221\u0003_/\u0000\u0221\u0222\u0003_/\u0000\u0222Z\u0001"+
+ "\u0000\u0000\u0000\u0223\u0224\u0005\"\u0000\u0000\u0224\\\u0001\u0000"+
+ "\u0000\u0000\u0225\u0226\u0005\"\u0000\u0000\u0226\u0227\u0005\"\u0000"+
+ "\u0000\u0227\u0228\u0005\"\u0000\u0000\u0228^\u0001\u0000\u0000\u0000"+
+ "\u0229\u022a\u0007\u0005\u0000\u0000\u022a`\u0001\u0000\u0000\u0000\u022b"+
+ "\u0230\u0003g3\u0000\u022c\u0230\u0003i4\u0000\u022d\u0230\u0003e2\u0000"+
+ "\u022e\u0230\u0003c1\u0000\u022f\u022b\u0001\u0000\u0000\u0000\u022f\u022c"+
+ "\u0001\u0000\u0000\u0000\u022f\u022d\u0001\u0000\u0000\u0000\u022f\u022e"+
+ "\u0001\u0000\u0000\u0000\u0230\u0231\u0001\u0000\u0000\u0000\u0231\u0232"+
+ "\u00060\u0000\u0000\u0232b\u0001\u0000\u0000\u0000\u0233\u0237\u0005#"+
+ "\u0000\u0000\u0234\u0236\b\u0006\u0000\u0000\u0235\u0234\u0001\u0000\u0000"+
+ "\u0000\u0236\u0239\u0001\u0000\u0000\u0000\u0237\u0235\u0001\u0000\u0000"+
+ "\u0000\u0237\u0238\u0001\u0000\u0000\u0000\u0238d\u0001\u0000\u0000\u0000"+
+ "\u0239\u0237\u0001\u0000\u0000\u0000\u023a\u023b\u0007\u0006\u0000\u0000"+
+ "\u023bf\u0001\u0000\u0000\u0000\u023c\u023d\u0007\u0007\u0000\u0000\u023d"+
+ "h\u0001\u0000\u0000\u0000\u023e\u023f\u0005,\u0000\u0000\u023fj\u0001"+
+ "\u0000\u0000\u0000\u0013\u0000\u00d2\u0147\u01d5\u01d9\u01de\u01e5\u01e7"+
+ "\u01ea\u01f4\u01f6\u01fc\u0201\u0208\u020a\u0213\u021b\u022f\u0237\u0001"+
+ "\u0006\u0000\u0000";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.tokens b/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.tokens
new file mode 100644
index 00000000..d5c4d0f9
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchemaLexer.tokens
@@ -0,0 +1,76 @@
+T__0=1
+T__1=2
+T__2=3
+T__3=4
+T__4=5
+T__5=6
+T__6=7
+T__7=8
+T__8=9
+T__9=10
+T__10=11
+T__11=12
+EXECUTABLE_DIRECTIVE_LOCATION=13
+TYPE_SYSTEM_DIRECTIVE_LOCATION=14
+K_TYPE=15
+K_IMPLEMENTS=16
+K_INTERFACE=17
+K_SCHEMA=18
+K_ENUM=19
+K_UNION=20
+K_INPUT=21
+K_DIRECTIVE=22
+K_EXTEND=23
+K_SCALAR=24
+K_ON=25
+K_FRAGMENT=26
+K_QUERY=27
+K_MUTATION=28
+K_SUBSCRIPTION=29
+K_VALUE=30
+K_TRUE=31
+K_FALSE=32
+K_NULL=33
+Name=34
+IntValue=35
+FloatValue=36
+Sign=37
+IntegerPart=38
+NonZeroDigit=39
+ExponentPart=40
+Digit=41
+StringValue=42
+BlockStringValue=43
+Ignored=44
+'{'=1
+'}'=2
+':'=3
+'|'=4
+'@'=5
+'('=6
+')'=7
+'&'=8
+'='=9
+'['=10
+']'=11
+'!'=12
+'type'=15
+'implements'=16
+'interface'=17
+'schema'=18
+'enum'=19
+'union'=20
+'input'=21
+'directive'=22
+'extend'=23
+'scalar'=24
+'on'=25
+'fragment'=26
+'query'=27
+'mutation'=28
+'subscription'=29
+'value'=30
+'true'=31
+'false'=32
+'null'=33
+'-'=37
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchemaListener.java b/java/com/walmartlabs/lacinia/GraphqlSchemaListener.java
new file mode 100644
index 00000000..b900eaa2
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchemaListener.java
@@ -0,0 +1,500 @@
+// Generated from resources/com/walmartlabs/lacinia/GraphqlSchema.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link GraphqlSchemaParser}.
+ */
+public interface GraphqlSchemaListener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#graphqlSchema}.
+ * @param ctx the parse tree
+ */
+ void enterGraphqlSchema(GraphqlSchemaParser.GraphqlSchemaContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#graphqlSchema}.
+ * @param ctx the parse tree
+ */
+ void exitGraphqlSchema(GraphqlSchemaParser.GraphqlSchemaContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#description}.
+ * @param ctx the parse tree
+ */
+ void enterDescription(GraphqlSchemaParser.DescriptionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#description}.
+ * @param ctx the parse tree
+ */
+ void exitDescription(GraphqlSchemaParser.DescriptionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#schemaDef}.
+ * @param ctx the parse tree
+ */
+ void enterSchemaDef(GraphqlSchemaParser.SchemaDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#schemaDef}.
+ * @param ctx the parse tree
+ */
+ void exitSchemaDef(GraphqlSchemaParser.SchemaDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#operationTypeDef}.
+ * @param ctx the parse tree
+ */
+ void enterOperationTypeDef(GraphqlSchemaParser.OperationTypeDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#operationTypeDef}.
+ * @param ctx the parse tree
+ */
+ void exitOperationTypeDef(GraphqlSchemaParser.OperationTypeDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#queryOperationDef}.
+ * @param ctx the parse tree
+ */
+ void enterQueryOperationDef(GraphqlSchemaParser.QueryOperationDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#queryOperationDef}.
+ * @param ctx the parse tree
+ */
+ void exitQueryOperationDef(GraphqlSchemaParser.QueryOperationDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#mutationOperationDef}.
+ * @param ctx the parse tree
+ */
+ void enterMutationOperationDef(GraphqlSchemaParser.MutationOperationDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#mutationOperationDef}.
+ * @param ctx the parse tree
+ */
+ void exitMutationOperationDef(GraphqlSchemaParser.MutationOperationDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#subscriptionOperationDef}.
+ * @param ctx the parse tree
+ */
+ void enterSubscriptionOperationDef(GraphqlSchemaParser.SubscriptionOperationDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#subscriptionOperationDef}.
+ * @param ctx the parse tree
+ */
+ void exitSubscriptionOperationDef(GraphqlSchemaParser.SubscriptionOperationDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directiveLocationList}.
+ * @param ctx the parse tree
+ */
+ void enterDirectiveLocationList(GraphqlSchemaParser.DirectiveLocationListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directiveLocationList}.
+ * @param ctx the parse tree
+ */
+ void exitDirectiveLocationList(GraphqlSchemaParser.DirectiveLocationListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directiveLocation}.
+ * @param ctx the parse tree
+ */
+ void enterDirectiveLocation(GraphqlSchemaParser.DirectiveLocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directiveLocation}.
+ * @param ctx the parse tree
+ */
+ void exitDirectiveLocation(GraphqlSchemaParser.DirectiveLocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#executableDirectiveLocation}.
+ * @param ctx the parse tree
+ */
+ void enterExecutableDirectiveLocation(GraphqlSchemaParser.ExecutableDirectiveLocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#executableDirectiveLocation}.
+ * @param ctx the parse tree
+ */
+ void exitExecutableDirectiveLocation(GraphqlSchemaParser.ExecutableDirectiveLocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#typeSystemDirectiveLocation}.
+ * @param ctx the parse tree
+ */
+ void enterTypeSystemDirectiveLocation(GraphqlSchemaParser.TypeSystemDirectiveLocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#typeSystemDirectiveLocation}.
+ * @param ctx the parse tree
+ */
+ void exitTypeSystemDirectiveLocation(GraphqlSchemaParser.TypeSystemDirectiveLocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directiveDef}.
+ * @param ctx the parse tree
+ */
+ void enterDirectiveDef(GraphqlSchemaParser.DirectiveDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directiveDef}.
+ * @param ctx the parse tree
+ */
+ void exitDirectiveDef(GraphqlSchemaParser.DirectiveDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directiveList}.
+ * @param ctx the parse tree
+ */
+ void enterDirectiveList(GraphqlSchemaParser.DirectiveListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directiveList}.
+ * @param ctx the parse tree
+ */
+ void exitDirectiveList(GraphqlSchemaParser.DirectiveListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directive}.
+ * @param ctx the parse tree
+ */
+ void enterDirective(GraphqlSchemaParser.DirectiveContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directive}.
+ * @param ctx the parse tree
+ */
+ void exitDirective(GraphqlSchemaParser.DirectiveContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directiveArgList}.
+ * @param ctx the parse tree
+ */
+ void enterDirectiveArgList(GraphqlSchemaParser.DirectiveArgListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directiveArgList}.
+ * @param ctx the parse tree
+ */
+ void exitDirectiveArgList(GraphqlSchemaParser.DirectiveArgListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#directiveArg}.
+ * @param ctx the parse tree
+ */
+ void enterDirectiveArg(GraphqlSchemaParser.DirectiveArgContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#directiveArg}.
+ * @param ctx the parse tree
+ */
+ void exitDirectiveArg(GraphqlSchemaParser.DirectiveArgContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#typeDef}.
+ * @param ctx the parse tree
+ */
+ void enterTypeDef(GraphqlSchemaParser.TypeDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#typeDef}.
+ * @param ctx the parse tree
+ */
+ void exitTypeDef(GraphqlSchemaParser.TypeDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#typeExtDef}.
+ * @param ctx the parse tree
+ */
+ void enterTypeExtDef(GraphqlSchemaParser.TypeExtDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#typeExtDef}.
+ * @param ctx the parse tree
+ */
+ void exitTypeExtDef(GraphqlSchemaParser.TypeExtDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#fieldDefs}.
+ * @param ctx the parse tree
+ */
+ void enterFieldDefs(GraphqlSchemaParser.FieldDefsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#fieldDefs}.
+ * @param ctx the parse tree
+ */
+ void exitFieldDefs(GraphqlSchemaParser.FieldDefsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#implementationDef}.
+ * @param ctx the parse tree
+ */
+ void enterImplementationDef(GraphqlSchemaParser.ImplementationDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#implementationDef}.
+ * @param ctx the parse tree
+ */
+ void exitImplementationDef(GraphqlSchemaParser.ImplementationDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#inputTypeDef}.
+ * @param ctx the parse tree
+ */
+ void enterInputTypeDef(GraphqlSchemaParser.InputTypeDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#inputTypeDef}.
+ * @param ctx the parse tree
+ */
+ void exitInputTypeDef(GraphqlSchemaParser.InputTypeDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#inputTypeExtDef}.
+ * @param ctx the parse tree
+ */
+ void enterInputTypeExtDef(GraphqlSchemaParser.InputTypeExtDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#inputTypeExtDef}.
+ * @param ctx the parse tree
+ */
+ void exitInputTypeExtDef(GraphqlSchemaParser.InputTypeExtDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#inputValueDefs}.
+ * @param ctx the parse tree
+ */
+ void enterInputValueDefs(GraphqlSchemaParser.InputValueDefsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#inputValueDefs}.
+ * @param ctx the parse tree
+ */
+ void exitInputValueDefs(GraphqlSchemaParser.InputValueDefsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#inputValueDef}.
+ * @param ctx the parse tree
+ */
+ void enterInputValueDef(GraphqlSchemaParser.InputValueDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#inputValueDef}.
+ * @param ctx the parse tree
+ */
+ void exitInputValueDef(GraphqlSchemaParser.InputValueDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#interfaceDef}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceDef(GraphqlSchemaParser.InterfaceDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#interfaceDef}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceDef(GraphqlSchemaParser.InterfaceDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#scalarDef}.
+ * @param ctx the parse tree
+ */
+ void enterScalarDef(GraphqlSchemaParser.ScalarDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#scalarDef}.
+ * @param ctx the parse tree
+ */
+ void exitScalarDef(GraphqlSchemaParser.ScalarDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#unionDef}.
+ * @param ctx the parse tree
+ */
+ void enterUnionDef(GraphqlSchemaParser.UnionDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#unionDef}.
+ * @param ctx the parse tree
+ */
+ void exitUnionDef(GraphqlSchemaParser.UnionDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#unionExtDef}.
+ * @param ctx the parse tree
+ */
+ void enterUnionExtDef(GraphqlSchemaParser.UnionExtDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#unionExtDef}.
+ * @param ctx the parse tree
+ */
+ void exitUnionExtDef(GraphqlSchemaParser.UnionExtDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#unionTypes}.
+ * @param ctx the parse tree
+ */
+ void enterUnionTypes(GraphqlSchemaParser.UnionTypesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#unionTypes}.
+ * @param ctx the parse tree
+ */
+ void exitUnionTypes(GraphqlSchemaParser.UnionTypesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#enumDef}.
+ * @param ctx the parse tree
+ */
+ void enterEnumDef(GraphqlSchemaParser.EnumDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#enumDef}.
+ * @param ctx the parse tree
+ */
+ void exitEnumDef(GraphqlSchemaParser.EnumDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#enumValueDefs}.
+ * @param ctx the parse tree
+ */
+ void enterEnumValueDefs(GraphqlSchemaParser.EnumValueDefsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#enumValueDefs}.
+ * @param ctx the parse tree
+ */
+ void exitEnumValueDefs(GraphqlSchemaParser.EnumValueDefsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#enumValueDef}.
+ * @param ctx the parse tree
+ */
+ void enterEnumValueDef(GraphqlSchemaParser.EnumValueDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#enumValueDef}.
+ * @param ctx the parse tree
+ */
+ void exitEnumValueDef(GraphqlSchemaParser.EnumValueDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#fieldDef}.
+ * @param ctx the parse tree
+ */
+ void enterFieldDef(GraphqlSchemaParser.FieldDefContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#fieldDef}.
+ * @param ctx the parse tree
+ */
+ void exitFieldDef(GraphqlSchemaParser.FieldDefContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#argList}.
+ * @param ctx the parse tree
+ */
+ void enterArgList(GraphqlSchemaParser.ArgListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#argList}.
+ * @param ctx the parse tree
+ */
+ void exitArgList(GraphqlSchemaParser.ArgListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#argument}.
+ * @param ctx the parse tree
+ */
+ void enterArgument(GraphqlSchemaParser.ArgumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#argument}.
+ * @param ctx the parse tree
+ */
+ void exitArgument(GraphqlSchemaParser.ArgumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#typeSpec}.
+ * @param ctx the parse tree
+ */
+ void enterTypeSpec(GraphqlSchemaParser.TypeSpecContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#typeSpec}.
+ * @param ctx the parse tree
+ */
+ void exitTypeSpec(GraphqlSchemaParser.TypeSpecContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#typeName}.
+ * @param ctx the parse tree
+ */
+ void enterTypeName(GraphqlSchemaParser.TypeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#typeName}.
+ * @param ctx the parse tree
+ */
+ void exitTypeName(GraphqlSchemaParser.TypeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#listType}.
+ * @param ctx the parse tree
+ */
+ void enterListType(GraphqlSchemaParser.ListTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#listType}.
+ * @param ctx the parse tree
+ */
+ void exitListType(GraphqlSchemaParser.ListTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#required}.
+ * @param ctx the parse tree
+ */
+ void enterRequired(GraphqlSchemaParser.RequiredContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#required}.
+ * @param ctx the parse tree
+ */
+ void exitRequired(GraphqlSchemaParser.RequiredContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void enterDefaultValue(GraphqlSchemaParser.DefaultValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void exitDefaultValue(GraphqlSchemaParser.DefaultValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#anyName}.
+ * @param ctx the parse tree
+ */
+ void enterAnyName(GraphqlSchemaParser.AnyNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#anyName}.
+ * @param ctx the parse tree
+ */
+ void exitAnyName(GraphqlSchemaParser.AnyNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#nameTokens}.
+ * @param ctx the parse tree
+ */
+ void enterNameTokens(GraphqlSchemaParser.NameTokensContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#nameTokens}.
+ * @param ctx the parse tree
+ */
+ void exitNameTokens(GraphqlSchemaParser.NameTokensContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#booleanValue}.
+ * @param ctx the parse tree
+ */
+ void enterBooleanValue(GraphqlSchemaParser.BooleanValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#booleanValue}.
+ * @param ctx the parse tree
+ */
+ void exitBooleanValue(GraphqlSchemaParser.BooleanValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#value}.
+ * @param ctx the parse tree
+ */
+ void enterValue(GraphqlSchemaParser.ValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#value}.
+ * @param ctx the parse tree
+ */
+ void exitValue(GraphqlSchemaParser.ValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#enumValue}.
+ * @param ctx the parse tree
+ */
+ void enterEnumValue(GraphqlSchemaParser.EnumValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#enumValue}.
+ * @param ctx the parse tree
+ */
+ void exitEnumValue(GraphqlSchemaParser.EnumValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#arrayValue}.
+ * @param ctx the parse tree
+ */
+ void enterArrayValue(GraphqlSchemaParser.ArrayValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#arrayValue}.
+ * @param ctx the parse tree
+ */
+ void exitArrayValue(GraphqlSchemaParser.ArrayValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#objectValue}.
+ * @param ctx the parse tree
+ */
+ void enterObjectValue(GraphqlSchemaParser.ObjectValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#objectValue}.
+ * @param ctx the parse tree
+ */
+ void exitObjectValue(GraphqlSchemaParser.ObjectValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#objectField}.
+ * @param ctx the parse tree
+ */
+ void enterObjectField(GraphqlSchemaParser.ObjectFieldContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#objectField}.
+ * @param ctx the parse tree
+ */
+ void exitObjectField(GraphqlSchemaParser.ObjectFieldContext ctx);
+ /**
+ * Enter a parse tree produced by {@link GraphqlSchemaParser#nullValue}.
+ * @param ctx the parse tree
+ */
+ void enterNullValue(GraphqlSchemaParser.NullValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link GraphqlSchemaParser#nullValue}.
+ * @param ctx the parse tree
+ */
+ void exitNullValue(GraphqlSchemaParser.NullValueContext ctx);
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/GraphqlSchemaParser.java b/java/com/walmartlabs/lacinia/GraphqlSchemaParser.java
new file mode 100644
index 00000000..c92f9b84
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/GraphqlSchemaParser.java
@@ -0,0 +1,3741 @@
+// Generated from resources/com/walmartlabs/lacinia/GraphqlSchema.g4 by ANTLR 4.13.1
+package com.walmartlabs.lacinia;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class GraphqlSchemaParser extends Parser {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
+ T__9=10, T__10=11, T__11=12, EXECUTABLE_DIRECTIVE_LOCATION=13, TYPE_SYSTEM_DIRECTIVE_LOCATION=14,
+ K_TYPE=15, K_IMPLEMENTS=16, K_INTERFACE=17, K_SCHEMA=18, K_ENUM=19, K_UNION=20,
+ K_INPUT=21, K_DIRECTIVE=22, K_EXTEND=23, K_SCALAR=24, K_ON=25, K_FRAGMENT=26,
+ K_QUERY=27, K_MUTATION=28, K_SUBSCRIPTION=29, K_VALUE=30, K_TRUE=31, K_FALSE=32,
+ K_NULL=33, Name=34, IntValue=35, FloatValue=36, Sign=37, IntegerPart=38,
+ NonZeroDigit=39, ExponentPart=40, Digit=41, StringValue=42, BlockStringValue=43,
+ Ignored=44;
+ public static final int
+ RULE_graphqlSchema = 0, RULE_description = 1, RULE_schemaDef = 2, RULE_operationTypeDef = 3,
+ RULE_queryOperationDef = 4, RULE_mutationOperationDef = 5, RULE_subscriptionOperationDef = 6,
+ RULE_directiveLocationList = 7, RULE_directiveLocation = 8, RULE_executableDirectiveLocation = 9,
+ RULE_typeSystemDirectiveLocation = 10, RULE_directiveDef = 11, RULE_directiveList = 12,
+ RULE_directive = 13, RULE_directiveArgList = 14, RULE_directiveArg = 15,
+ RULE_typeDef = 16, RULE_typeExtDef = 17, RULE_fieldDefs = 18, RULE_implementationDef = 19,
+ RULE_inputTypeDef = 20, RULE_inputTypeExtDef = 21, RULE_inputValueDefs = 22,
+ RULE_inputValueDef = 23, RULE_interfaceDef = 24, RULE_scalarDef = 25,
+ RULE_unionDef = 26, RULE_unionExtDef = 27, RULE_unionTypes = 28, RULE_enumDef = 29,
+ RULE_enumValueDefs = 30, RULE_enumValueDef = 31, RULE_fieldDef = 32, RULE_argList = 33,
+ RULE_argument = 34, RULE_typeSpec = 35, RULE_typeName = 36, RULE_listType = 37,
+ RULE_required = 38, RULE_defaultValue = 39, RULE_anyName = 40, RULE_nameTokens = 41,
+ RULE_booleanValue = 42, RULE_value = 43, RULE_enumValue = 44, RULE_arrayValue = 45,
+ RULE_objectValue = 46, RULE_objectField = 47, RULE_nullValue = 48;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "graphqlSchema", "description", "schemaDef", "operationTypeDef", "queryOperationDef",
+ "mutationOperationDef", "subscriptionOperationDef", "directiveLocationList",
+ "directiveLocation", "executableDirectiveLocation", "typeSystemDirectiveLocation",
+ "directiveDef", "directiveList", "directive", "directiveArgList", "directiveArg",
+ "typeDef", "typeExtDef", "fieldDefs", "implementationDef", "inputTypeDef",
+ "inputTypeExtDef", "inputValueDefs", "inputValueDef", "interfaceDef",
+ "scalarDef", "unionDef", "unionExtDef", "unionTypes", "enumDef", "enumValueDefs",
+ "enumValueDef", "fieldDef", "argList", "argument", "typeSpec", "typeName",
+ "listType", "required", "defaultValue", "anyName", "nameTokens", "booleanValue",
+ "value", "enumValue", "arrayValue", "objectValue", "objectField", "nullValue"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'{'", "'}'", "':'", "'|'", "'@'", "'('", "')'", "'&'", "'='",
+ "'['", "']'", "'!'", null, null, "'type'", "'implements'", "'interface'",
+ "'schema'", "'enum'", "'union'", "'input'", "'directive'", "'extend'",
+ "'scalar'", "'on'", "'fragment'", "'query'", "'mutation'", "'subscription'",
+ "'value'", "'true'", "'false'", "'null'", null, null, null, "'-'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ null, "EXECUTABLE_DIRECTIVE_LOCATION", "TYPE_SYSTEM_DIRECTIVE_LOCATION",
+ "K_TYPE", "K_IMPLEMENTS", "K_INTERFACE", "K_SCHEMA", "K_ENUM", "K_UNION",
+ "K_INPUT", "K_DIRECTIVE", "K_EXTEND", "K_SCALAR", "K_ON", "K_FRAGMENT",
+ "K_QUERY", "K_MUTATION", "K_SUBSCRIPTION", "K_VALUE", "K_TRUE", "K_FALSE",
+ "K_NULL", "Name", "IntValue", "FloatValue", "Sign", "IntegerPart", "NonZeroDigit",
+ "ExponentPart", "Digit", "StringValue", "BlockStringValue", "Ignored"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ @Override
+ public String getGrammarFileName() { return "GraphqlSchema.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public GraphqlSchemaParser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class GraphqlSchemaContext extends ParserRuleContext {
+ public List schemaDef() {
+ return getRuleContexts(SchemaDefContext.class);
+ }
+ public SchemaDefContext schemaDef(int i) {
+ return getRuleContext(SchemaDefContext.class,i);
+ }
+ public List typeDef() {
+ return getRuleContexts(TypeDefContext.class);
+ }
+ public TypeDefContext typeDef(int i) {
+ return getRuleContext(TypeDefContext.class,i);
+ }
+ public List typeExtDef() {
+ return getRuleContexts(TypeExtDefContext.class);
+ }
+ public TypeExtDefContext typeExtDef(int i) {
+ return getRuleContext(TypeExtDefContext.class,i);
+ }
+ public List inputTypeDef() {
+ return getRuleContexts(InputTypeDefContext.class);
+ }
+ public InputTypeDefContext inputTypeDef(int i) {
+ return getRuleContext(InputTypeDefContext.class,i);
+ }
+ public List inputTypeExtDef() {
+ return getRuleContexts(InputTypeExtDefContext.class);
+ }
+ public InputTypeExtDefContext inputTypeExtDef(int i) {
+ return getRuleContext(InputTypeExtDefContext.class,i);
+ }
+ public List unionDef() {
+ return getRuleContexts(UnionDefContext.class);
+ }
+ public UnionDefContext unionDef(int i) {
+ return getRuleContext(UnionDefContext.class,i);
+ }
+ public List unionExtDef() {
+ return getRuleContexts(UnionExtDefContext.class);
+ }
+ public UnionExtDefContext unionExtDef(int i) {
+ return getRuleContext(UnionExtDefContext.class,i);
+ }
+ public List enumDef() {
+ return getRuleContexts(EnumDefContext.class);
+ }
+ public EnumDefContext enumDef(int i) {
+ return getRuleContext(EnumDefContext.class,i);
+ }
+ public List interfaceDef() {
+ return getRuleContexts(InterfaceDefContext.class);
+ }
+ public InterfaceDefContext interfaceDef(int i) {
+ return getRuleContext(InterfaceDefContext.class,i);
+ }
+ public List scalarDef() {
+ return getRuleContexts(ScalarDefContext.class);
+ }
+ public ScalarDefContext scalarDef(int i) {
+ return getRuleContext(ScalarDefContext.class,i);
+ }
+ public List directiveDef() {
+ return getRuleContexts(DirectiveDefContext.class);
+ }
+ public DirectiveDefContext directiveDef(int i) {
+ return getRuleContext(DirectiveDefContext.class,i);
+ }
+ public GraphqlSchemaContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_graphqlSchema; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterGraphqlSchema(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitGraphqlSchema(this);
+ }
+ }
+
+ public final GraphqlSchemaContext graphqlSchema() throws RecognitionException {
+ GraphqlSchemaContext _localctx = new GraphqlSchemaContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_graphqlSchema);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(111);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 13194172989440L) != 0)) {
+ {
+ setState(109);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
+ case 1:
+ {
+ setState(98);
+ schemaDef();
+ }
+ break;
+ case 2:
+ {
+ setState(99);
+ typeDef();
+ }
+ break;
+ case 3:
+ {
+ setState(100);
+ typeExtDef();
+ }
+ break;
+ case 4:
+ {
+ setState(101);
+ inputTypeDef();
+ }
+ break;
+ case 5:
+ {
+ setState(102);
+ inputTypeExtDef();
+ }
+ break;
+ case 6:
+ {
+ setState(103);
+ unionDef();
+ }
+ break;
+ case 7:
+ {
+ setState(104);
+ unionExtDef();
+ }
+ break;
+ case 8:
+ {
+ setState(105);
+ enumDef();
+ }
+ break;
+ case 9:
+ {
+ setState(106);
+ interfaceDef();
+ }
+ break;
+ case 10:
+ {
+ setState(107);
+ scalarDef();
+ }
+ break;
+ case 11:
+ {
+ setState(108);
+ directiveDef();
+ }
+ break;
+ }
+ }
+ setState(113);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DescriptionContext extends ParserRuleContext {
+ public TerminalNode StringValue() { return getToken(GraphqlSchemaParser.StringValue, 0); }
+ public TerminalNode BlockStringValue() { return getToken(GraphqlSchemaParser.BlockStringValue, 0); }
+ public DescriptionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_description; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDescription(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDescription(this);
+ }
+ }
+
+ public final DescriptionContext description() throws RecognitionException {
+ DescriptionContext _localctx = new DescriptionContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_description);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(114);
+ _la = _input.LA(1);
+ if ( !(_la==StringValue || _la==BlockStringValue) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SchemaDefContext extends ParserRuleContext {
+ public TerminalNode K_SCHEMA() { return getToken(GraphqlSchemaParser.K_SCHEMA, 0); }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public List operationTypeDef() {
+ return getRuleContexts(OperationTypeDefContext.class);
+ }
+ public OperationTypeDefContext operationTypeDef(int i) {
+ return getRuleContext(OperationTypeDefContext.class,i);
+ }
+ public SchemaDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_schemaDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterSchemaDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitSchemaDef(this);
+ }
+ }
+
+ public final SchemaDefContext schemaDef() throws RecognitionException {
+ SchemaDefContext _localctx = new SchemaDefContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_schemaDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(116);
+ match(K_SCHEMA);
+ setState(118);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(117);
+ directiveList();
+ }
+ }
+
+ setState(120);
+ match(T__0);
+ setState(122);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(121);
+ operationTypeDef();
+ }
+ }
+ setState(124);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 939524096L) != 0) );
+ setState(126);
+ match(T__1);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class OperationTypeDefContext extends ParserRuleContext {
+ public QueryOperationDefContext queryOperationDef() {
+ return getRuleContext(QueryOperationDefContext.class,0);
+ }
+ public MutationOperationDefContext mutationOperationDef() {
+ return getRuleContext(MutationOperationDefContext.class,0);
+ }
+ public SubscriptionOperationDefContext subscriptionOperationDef() {
+ return getRuleContext(SubscriptionOperationDefContext.class,0);
+ }
+ public OperationTypeDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_operationTypeDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterOperationTypeDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitOperationTypeDef(this);
+ }
+ }
+
+ public final OperationTypeDefContext operationTypeDef() throws RecognitionException {
+ OperationTypeDefContext _localctx = new OperationTypeDefContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_operationTypeDef);
+ try {
+ setState(131);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case K_QUERY:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(128);
+ queryOperationDef();
+ }
+ break;
+ case K_MUTATION:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(129);
+ mutationOperationDef();
+ }
+ break;
+ case K_SUBSCRIPTION:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(130);
+ subscriptionOperationDef();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class QueryOperationDefContext extends ParserRuleContext {
+ public TerminalNode K_QUERY() { return getToken(GraphqlSchemaParser.K_QUERY, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public QueryOperationDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_queryOperationDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterQueryOperationDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitQueryOperationDef(this);
+ }
+ }
+
+ public final QueryOperationDefContext queryOperationDef() throws RecognitionException {
+ QueryOperationDefContext _localctx = new QueryOperationDefContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_queryOperationDef);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(133);
+ match(K_QUERY);
+ setState(134);
+ match(T__2);
+ setState(135);
+ anyName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MutationOperationDefContext extends ParserRuleContext {
+ public TerminalNode K_MUTATION() { return getToken(GraphqlSchemaParser.K_MUTATION, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public MutationOperationDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_mutationOperationDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterMutationOperationDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitMutationOperationDef(this);
+ }
+ }
+
+ public final MutationOperationDefContext mutationOperationDef() throws RecognitionException {
+ MutationOperationDefContext _localctx = new MutationOperationDefContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_mutationOperationDef);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(137);
+ match(K_MUTATION);
+ setState(138);
+ match(T__2);
+ setState(139);
+ anyName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SubscriptionOperationDefContext extends ParserRuleContext {
+ public TerminalNode K_SUBSCRIPTION() { return getToken(GraphqlSchemaParser.K_SUBSCRIPTION, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public SubscriptionOperationDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_subscriptionOperationDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterSubscriptionOperationDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitSubscriptionOperationDef(this);
+ }
+ }
+
+ public final SubscriptionOperationDefContext subscriptionOperationDef() throws RecognitionException {
+ SubscriptionOperationDefContext _localctx = new SubscriptionOperationDefContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_subscriptionOperationDef);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(141);
+ match(K_SUBSCRIPTION);
+ setState(142);
+ match(T__2);
+ setState(143);
+ anyName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveLocationListContext extends ParserRuleContext {
+ public List directiveLocation() {
+ return getRuleContexts(DirectiveLocationContext.class);
+ }
+ public DirectiveLocationContext directiveLocation(int i) {
+ return getRuleContext(DirectiveLocationContext.class,i);
+ }
+ public DirectiveLocationListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directiveLocationList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirectiveLocationList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirectiveLocationList(this);
+ }
+ }
+
+ public final DirectiveLocationListContext directiveLocationList() throws RecognitionException {
+ DirectiveLocationListContext _localctx = new DirectiveLocationListContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_directiveLocationList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(150);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,5,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(145);
+ directiveLocation();
+ setState(146);
+ match(T__3);
+ }
+ }
+ }
+ setState(152);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,5,_ctx);
+ }
+ setState(153);
+ directiveLocation();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveLocationContext extends ParserRuleContext {
+ public ExecutableDirectiveLocationContext executableDirectiveLocation() {
+ return getRuleContext(ExecutableDirectiveLocationContext.class,0);
+ }
+ public TypeSystemDirectiveLocationContext typeSystemDirectiveLocation() {
+ return getRuleContext(TypeSystemDirectiveLocationContext.class,0);
+ }
+ public DirectiveLocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directiveLocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirectiveLocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirectiveLocation(this);
+ }
+ }
+
+ public final DirectiveLocationContext directiveLocation() throws RecognitionException {
+ DirectiveLocationContext _localctx = new DirectiveLocationContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_directiveLocation);
+ try {
+ setState(157);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case EXECUTABLE_DIRECTIVE_LOCATION:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(155);
+ executableDirectiveLocation();
+ }
+ break;
+ case TYPE_SYSTEM_DIRECTIVE_LOCATION:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(156);
+ typeSystemDirectiveLocation();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExecutableDirectiveLocationContext extends ParserRuleContext {
+ public TerminalNode EXECUTABLE_DIRECTIVE_LOCATION() { return getToken(GraphqlSchemaParser.EXECUTABLE_DIRECTIVE_LOCATION, 0); }
+ public ExecutableDirectiveLocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_executableDirectiveLocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterExecutableDirectiveLocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitExecutableDirectiveLocation(this);
+ }
+ }
+
+ public final ExecutableDirectiveLocationContext executableDirectiveLocation() throws RecognitionException {
+ ExecutableDirectiveLocationContext _localctx = new ExecutableDirectiveLocationContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_executableDirectiveLocation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(159);
+ match(EXECUTABLE_DIRECTIVE_LOCATION);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeSystemDirectiveLocationContext extends ParserRuleContext {
+ public TerminalNode TYPE_SYSTEM_DIRECTIVE_LOCATION() { return getToken(GraphqlSchemaParser.TYPE_SYSTEM_DIRECTIVE_LOCATION, 0); }
+ public TypeSystemDirectiveLocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeSystemDirectiveLocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterTypeSystemDirectiveLocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitTypeSystemDirectiveLocation(this);
+ }
+ }
+
+ public final TypeSystemDirectiveLocationContext typeSystemDirectiveLocation() throws RecognitionException {
+ TypeSystemDirectiveLocationContext _localctx = new TypeSystemDirectiveLocationContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_typeSystemDirectiveLocation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(161);
+ match(TYPE_SYSTEM_DIRECTIVE_LOCATION);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveDefContext extends ParserRuleContext {
+ public TerminalNode K_DIRECTIVE() { return getToken(GraphqlSchemaParser.K_DIRECTIVE, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public TerminalNode K_ON() { return getToken(GraphqlSchemaParser.K_ON, 0); }
+ public DirectiveLocationListContext directiveLocationList() {
+ return getRuleContext(DirectiveLocationListContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public ArgListContext argList() {
+ return getRuleContext(ArgListContext.class,0);
+ }
+ public DirectiveDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directiveDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirectiveDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirectiveDef(this);
+ }
+ }
+
+ public final DirectiveDefContext directiveDef() throws RecognitionException {
+ DirectiveDefContext _localctx = new DirectiveDefContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_directiveDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(164);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(163);
+ description();
+ }
+ }
+
+ setState(166);
+ match(K_DIRECTIVE);
+ setState(167);
+ match(T__4);
+ setState(168);
+ anyName();
+ setState(170);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__5) {
+ {
+ setState(169);
+ argList();
+ }
+ }
+
+ setState(172);
+ match(K_ON);
+ setState(173);
+ directiveLocationList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveListContext extends ParserRuleContext {
+ public List directive() {
+ return getRuleContexts(DirectiveContext.class);
+ }
+ public DirectiveContext directive(int i) {
+ return getRuleContext(DirectiveContext.class,i);
+ }
+ public DirectiveListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directiveList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirectiveList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirectiveList(this);
+ }
+ }
+
+ public final DirectiveListContext directiveList() throws RecognitionException {
+ DirectiveListContext _localctx = new DirectiveListContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_directiveList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(176);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(175);
+ directive();
+ }
+ }
+ setState(178);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( _la==T__4 );
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DirectiveArgListContext directiveArgList() {
+ return getRuleContext(DirectiveArgListContext.class,0);
+ }
+ public DirectiveContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directive; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirective(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirective(this);
+ }
+ }
+
+ public final DirectiveContext directive() throws RecognitionException {
+ DirectiveContext _localctx = new DirectiveContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_directive);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(180);
+ match(T__4);
+ setState(181);
+ anyName();
+ setState(183);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__5) {
+ {
+ setState(182);
+ directiveArgList();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveArgListContext extends ParserRuleContext {
+ public List directiveArg() {
+ return getRuleContexts(DirectiveArgContext.class);
+ }
+ public DirectiveArgContext directiveArg(int i) {
+ return getRuleContext(DirectiveArgContext.class,i);
+ }
+ public DirectiveArgListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directiveArgList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirectiveArgList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirectiveArgList(this);
+ }
+ }
+
+ public final DirectiveArgListContext directiveArgList() throws RecognitionException {
+ DirectiveArgListContext _localctx = new DirectiveArgListContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_directiveArgList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(185);
+ match(T__5);
+ setState(187);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(186);
+ directiveArg();
+ }
+ }
+ setState(189);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 34359730176L) != 0) );
+ setState(191);
+ match(T__6);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DirectiveArgContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public ValueContext value() {
+ return getRuleContext(ValueContext.class,0);
+ }
+ public DirectiveArgContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_directiveArg; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDirectiveArg(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDirectiveArg(this);
+ }
+ }
+
+ public final DirectiveArgContext directiveArg() throws RecognitionException {
+ DirectiveArgContext _localctx = new DirectiveArgContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_directiveArg);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(193);
+ anyName();
+ setState(194);
+ match(T__2);
+ setState(195);
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeDefContext extends ParserRuleContext {
+ public TerminalNode K_TYPE() { return getToken(GraphqlSchemaParser.K_TYPE, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public ImplementationDefContext implementationDef() {
+ return getRuleContext(ImplementationDefContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public FieldDefsContext fieldDefs() {
+ return getRuleContext(FieldDefsContext.class,0);
+ }
+ public TypeDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterTypeDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitTypeDef(this);
+ }
+ }
+
+ public final TypeDefContext typeDef() throws RecognitionException {
+ TypeDefContext _localctx = new TypeDefContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_typeDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(198);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(197);
+ description();
+ }
+ }
+
+ setState(200);
+ match(K_TYPE);
+ setState(201);
+ anyName();
+ setState(203);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==K_IMPLEMENTS) {
+ {
+ setState(202);
+ implementationDef();
+ }
+ }
+
+ setState(206);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(205);
+ directiveList();
+ }
+ }
+
+ setState(209);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(208);
+ fieldDefs();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeExtDefContext extends ParserRuleContext {
+ public TerminalNode K_EXTEND() { return getToken(GraphqlSchemaParser.K_EXTEND, 0); }
+ public TerminalNode K_TYPE() { return getToken(GraphqlSchemaParser.K_TYPE, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public ImplementationDefContext implementationDef() {
+ return getRuleContext(ImplementationDefContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public FieldDefsContext fieldDefs() {
+ return getRuleContext(FieldDefsContext.class,0);
+ }
+ public TypeExtDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeExtDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterTypeExtDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitTypeExtDef(this);
+ }
+ }
+
+ public final TypeExtDefContext typeExtDef() throws RecognitionException {
+ TypeExtDefContext _localctx = new TypeExtDefContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_typeExtDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(212);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(211);
+ description();
+ }
+ }
+
+ setState(214);
+ match(K_EXTEND);
+ setState(215);
+ match(K_TYPE);
+ setState(216);
+ anyName();
+ setState(218);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==K_IMPLEMENTS) {
+ {
+ setState(217);
+ implementationDef();
+ }
+ }
+
+ setState(221);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(220);
+ directiveList();
+ }
+ }
+
+ setState(224);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(223);
+ fieldDefs();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldDefsContext extends ParserRuleContext {
+ public List fieldDef() {
+ return getRuleContexts(FieldDefContext.class);
+ }
+ public FieldDefContext fieldDef(int i) {
+ return getRuleContext(FieldDefContext.class,i);
+ }
+ public FieldDefsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldDefs; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterFieldDefs(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitFieldDefs(this);
+ }
+ }
+
+ public final FieldDefsContext fieldDefs() throws RecognitionException {
+ FieldDefsContext _localctx = new FieldDefsContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_fieldDefs);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(226);
+ match(T__0);
+ setState(228);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(227);
+ fieldDef();
+ }
+ }
+ setState(230);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 13228499263488L) != 0) );
+ setState(232);
+ match(T__1);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ImplementationDefContext extends ParserRuleContext {
+ public TerminalNode K_IMPLEMENTS() { return getToken(GraphqlSchemaParser.K_IMPLEMENTS, 0); }
+ public List Name() { return getTokens(GraphqlSchemaParser.Name); }
+ public TerminalNode Name(int i) {
+ return getToken(GraphqlSchemaParser.Name, i);
+ }
+ public ImplementationDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_implementationDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterImplementationDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitImplementationDef(this);
+ }
+ }
+
+ public final ImplementationDefContext implementationDef() throws RecognitionException {
+ ImplementationDefContext _localctx = new ImplementationDefContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_implementationDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(234);
+ match(K_IMPLEMENTS);
+ setState(236);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__7) {
+ {
+ setState(235);
+ match(T__7);
+ }
+ }
+
+ setState(238);
+ match(Name);
+ setState(243);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==T__7) {
+ {
+ {
+ setState(239);
+ match(T__7);
+ setState(240);
+ match(Name);
+ }
+ }
+ setState(245);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputTypeDefContext extends ParserRuleContext {
+ public TerminalNode K_INPUT() { return getToken(GraphqlSchemaParser.K_INPUT, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public InputValueDefsContext inputValueDefs() {
+ return getRuleContext(InputValueDefsContext.class,0);
+ }
+ public InputTypeDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inputTypeDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterInputTypeDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitInputTypeDef(this);
+ }
+ }
+
+ public final InputTypeDefContext inputTypeDef() throws RecognitionException {
+ InputTypeDefContext _localctx = new InputTypeDefContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_inputTypeDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(247);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(246);
+ description();
+ }
+ }
+
+ setState(249);
+ match(K_INPUT);
+ setState(250);
+ anyName();
+ setState(252);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(251);
+ directiveList();
+ }
+ }
+
+ setState(255);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(254);
+ inputValueDefs();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputTypeExtDefContext extends ParserRuleContext {
+ public TerminalNode K_EXTEND() { return getToken(GraphqlSchemaParser.K_EXTEND, 0); }
+ public TerminalNode K_INPUT() { return getToken(GraphqlSchemaParser.K_INPUT, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public InputValueDefsContext inputValueDefs() {
+ return getRuleContext(InputValueDefsContext.class,0);
+ }
+ public InputTypeExtDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inputTypeExtDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterInputTypeExtDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitInputTypeExtDef(this);
+ }
+ }
+
+ public final InputTypeExtDefContext inputTypeExtDef() throws RecognitionException {
+ InputTypeExtDefContext _localctx = new InputTypeExtDefContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_inputTypeExtDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(258);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(257);
+ description();
+ }
+ }
+
+ setState(260);
+ match(K_EXTEND);
+ setState(261);
+ match(K_INPUT);
+ setState(262);
+ anyName();
+ setState(264);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(263);
+ directiveList();
+ }
+ }
+
+ setState(267);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(266);
+ inputValueDefs();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputValueDefsContext extends ParserRuleContext {
+ public List inputValueDef() {
+ return getRuleContexts(InputValueDefContext.class);
+ }
+ public InputValueDefContext inputValueDef(int i) {
+ return getRuleContext(InputValueDefContext.class,i);
+ }
+ public InputValueDefsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inputValueDefs; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterInputValueDefs(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitInputValueDefs(this);
+ }
+ }
+
+ public final InputValueDefsContext inputValueDefs() throws RecognitionException {
+ InputValueDefsContext _localctx = new InputValueDefsContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_inputValueDefs);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(269);
+ match(T__0);
+ setState(271);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(270);
+ inputValueDef();
+ }
+ }
+ setState(273);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 13228499263488L) != 0) );
+ setState(275);
+ match(T__1);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InputValueDefContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public TypeSpecContext typeSpec() {
+ return getRuleContext(TypeSpecContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DefaultValueContext defaultValue() {
+ return getRuleContext(DefaultValueContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public InputValueDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inputValueDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterInputValueDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitInputValueDef(this);
+ }
+ }
+
+ public final InputValueDefContext inputValueDef() throws RecognitionException {
+ InputValueDefContext _localctx = new InputValueDefContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_inputValueDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(278);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(277);
+ description();
+ }
+ }
+
+ setState(280);
+ anyName();
+ setState(281);
+ match(T__2);
+ setState(282);
+ typeSpec();
+ setState(284);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__8) {
+ {
+ setState(283);
+ defaultValue();
+ }
+ }
+
+ setState(287);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(286);
+ directiveList();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceDefContext extends ParserRuleContext {
+ public TerminalNode K_INTERFACE() { return getToken(GraphqlSchemaParser.K_INTERFACE, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public FieldDefsContext fieldDefs() {
+ return getRuleContext(FieldDefsContext.class,0);
+ }
+ public InterfaceDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterInterfaceDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitInterfaceDef(this);
+ }
+ }
+
+ public final InterfaceDefContext interfaceDef() throws RecognitionException {
+ InterfaceDefContext _localctx = new InterfaceDefContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_interfaceDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(290);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(289);
+ description();
+ }
+ }
+
+ setState(292);
+ match(K_INTERFACE);
+ setState(293);
+ anyName();
+ setState(295);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(294);
+ directiveList();
+ }
+ }
+
+ setState(298);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__0) {
+ {
+ setState(297);
+ fieldDefs();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ScalarDefContext extends ParserRuleContext {
+ public TerminalNode K_SCALAR() { return getToken(GraphqlSchemaParser.K_SCALAR, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public ScalarDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_scalarDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterScalarDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitScalarDef(this);
+ }
+ }
+
+ public final ScalarDefContext scalarDef() throws RecognitionException {
+ ScalarDefContext _localctx = new ScalarDefContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_scalarDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(301);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(300);
+ description();
+ }
+ }
+
+ setState(303);
+ match(K_SCALAR);
+ setState(304);
+ anyName();
+ setState(306);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(305);
+ directiveList();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnionDefContext extends ParserRuleContext {
+ public TerminalNode K_UNION() { return getToken(GraphqlSchemaParser.K_UNION, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public UnionTypesContext unionTypes() {
+ return getRuleContext(UnionTypesContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public UnionDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unionDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterUnionDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitUnionDef(this);
+ }
+ }
+
+ public final UnionDefContext unionDef() throws RecognitionException {
+ UnionDefContext _localctx = new UnionDefContext(_ctx, getState());
+ enterRule(_localctx, 52, RULE_unionDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(309);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(308);
+ description();
+ }
+ }
+
+ setState(311);
+ match(K_UNION);
+ setState(312);
+ anyName();
+ setState(314);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(313);
+ directiveList();
+ }
+ }
+
+ setState(316);
+ match(T__8);
+ setState(317);
+ unionTypes();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnionExtDefContext extends ParserRuleContext {
+ public TerminalNode K_EXTEND() { return getToken(GraphqlSchemaParser.K_EXTEND, 0); }
+ public TerminalNode K_UNION() { return getToken(GraphqlSchemaParser.K_UNION, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public UnionTypesContext unionTypes() {
+ return getRuleContext(UnionTypesContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public UnionExtDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unionExtDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterUnionExtDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitUnionExtDef(this);
+ }
+ }
+
+ public final UnionExtDefContext unionExtDef() throws RecognitionException {
+ UnionExtDefContext _localctx = new UnionExtDefContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_unionExtDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(320);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(319);
+ description();
+ }
+ }
+
+ setState(322);
+ match(K_EXTEND);
+ setState(323);
+ match(K_UNION);
+ setState(324);
+ anyName();
+ setState(326);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(325);
+ directiveList();
+ }
+ }
+
+ setState(328);
+ match(T__8);
+ setState(329);
+ unionTypes();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnionTypesContext extends ParserRuleContext {
+ public List anyName() {
+ return getRuleContexts(AnyNameContext.class);
+ }
+ public AnyNameContext anyName(int i) {
+ return getRuleContext(AnyNameContext.class,i);
+ }
+ public UnionTypesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unionTypes; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterUnionTypes(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitUnionTypes(this);
+ }
+ }
+
+ public final UnionTypesContext unionTypes() throws RecognitionException {
+ UnionTypesContext _localctx = new UnionTypesContext(_ctx, getState());
+ enterRule(_localctx, 56, RULE_unionTypes);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(336);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,42,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(331);
+ anyName();
+ setState(332);
+ match(T__3);
+ }
+ }
+ }
+ setState(338);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,42,_ctx);
+ }
+ setState(339);
+ anyName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumDefContext extends ParserRuleContext {
+ public TerminalNode K_ENUM() { return getToken(GraphqlSchemaParser.K_ENUM, 0); }
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public EnumValueDefsContext enumValueDefs() {
+ return getRuleContext(EnumValueDefsContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public EnumDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterEnumDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitEnumDef(this);
+ }
+ }
+
+ public final EnumDefContext enumDef() throws RecognitionException {
+ EnumDefContext _localctx = new EnumDefContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_enumDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(342);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(341);
+ description();
+ }
+ }
+
+ setState(344);
+ match(K_ENUM);
+ setState(345);
+ anyName();
+ setState(347);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(346);
+ directiveList();
+ }
+ }
+
+ setState(349);
+ enumValueDefs();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumValueDefsContext extends ParserRuleContext {
+ public List enumValueDef() {
+ return getRuleContexts(EnumValueDefContext.class);
+ }
+ public EnumValueDefContext enumValueDef(int i) {
+ return getRuleContext(EnumValueDefContext.class,i);
+ }
+ public EnumValueDefsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumValueDefs; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterEnumValueDefs(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitEnumValueDefs(this);
+ }
+ }
+
+ public final EnumValueDefsContext enumValueDefs() throws RecognitionException {
+ EnumValueDefsContext _localctx = new EnumValueDefsContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_enumValueDefs);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(351);
+ match(T__0);
+ setState(353);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(352);
+ enumValueDef();
+ }
+ }
+ setState(355);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 13213466877952L) != 0) );
+ setState(357);
+ match(T__1);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumValueDefContext extends ParserRuleContext {
+ public NameTokensContext nameTokens() {
+ return getRuleContext(NameTokensContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public EnumValueDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumValueDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterEnumValueDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitEnumValueDef(this);
+ }
+ }
+
+ public final EnumValueDefContext enumValueDef() throws RecognitionException {
+ EnumValueDefContext _localctx = new EnumValueDefContext(_ctx, getState());
+ enterRule(_localctx, 62, RULE_enumValueDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(360);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(359);
+ description();
+ }
+ }
+
+ setState(362);
+ nameTokens();
+ setState(364);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(363);
+ directiveList();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldDefContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public TypeSpecContext typeSpec() {
+ return getRuleContext(TypeSpecContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public ArgListContext argList() {
+ return getRuleContext(ArgListContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public FieldDefContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldDef; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterFieldDef(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitFieldDef(this);
+ }
+ }
+
+ public final FieldDefContext fieldDef() throws RecognitionException {
+ FieldDefContext _localctx = new FieldDefContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_fieldDef);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(367);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(366);
+ description();
+ }
+ }
+
+ setState(369);
+ anyName();
+ setState(371);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__5) {
+ {
+ setState(370);
+ argList();
+ }
+ }
+
+ setState(373);
+ match(T__2);
+ setState(374);
+ typeSpec();
+ setState(376);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(375);
+ directiveList();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArgListContext extends ParserRuleContext {
+ public List argument() {
+ return getRuleContexts(ArgumentContext.class);
+ }
+ public ArgumentContext argument(int i) {
+ return getRuleContext(ArgumentContext.class,i);
+ }
+ public ArgListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_argList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterArgList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitArgList(this);
+ }
+ }
+
+ public final ArgListContext argList() throws RecognitionException {
+ ArgListContext _localctx = new ArgListContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_argList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(378);
+ match(T__5);
+ setState(380);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ do {
+ {
+ {
+ setState(379);
+ argument();
+ }
+ }
+ setState(382);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & 13228499263488L) != 0) );
+ setState(384);
+ match(T__6);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArgumentContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public TypeSpecContext typeSpec() {
+ return getRuleContext(TypeSpecContext.class,0);
+ }
+ public DescriptionContext description() {
+ return getRuleContext(DescriptionContext.class,0);
+ }
+ public DefaultValueContext defaultValue() {
+ return getRuleContext(DefaultValueContext.class,0);
+ }
+ public DirectiveListContext directiveList() {
+ return getRuleContext(DirectiveListContext.class,0);
+ }
+ public ArgumentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_argument; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterArgument(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitArgument(this);
+ }
+ }
+
+ public final ArgumentContext argument() throws RecognitionException {
+ ArgumentContext _localctx = new ArgumentContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_argument);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(387);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==StringValue || _la==BlockStringValue) {
+ {
+ setState(386);
+ description();
+ }
+ }
+
+ setState(389);
+ anyName();
+ setState(390);
+ match(T__2);
+ setState(391);
+ typeSpec();
+ setState(393);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__8) {
+ {
+ setState(392);
+ defaultValue();
+ }
+ }
+
+ setState(396);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__4) {
+ {
+ setState(395);
+ directiveList();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeSpecContext extends ParserRuleContext {
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public ListTypeContext listType() {
+ return getRuleContext(ListTypeContext.class,0);
+ }
+ public RequiredContext required() {
+ return getRuleContext(RequiredContext.class,0);
+ }
+ public TypeSpecContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeSpec; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterTypeSpec(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitTypeSpec(this);
+ }
+ }
+
+ public final TypeSpecContext typeSpec() throws RecognitionException {
+ TypeSpecContext _localctx = new TypeSpecContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_typeSpec);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(400);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case EXECUTABLE_DIRECTIVE_LOCATION:
+ case TYPE_SYSTEM_DIRECTIVE_LOCATION:
+ case K_TYPE:
+ case K_IMPLEMENTS:
+ case K_INTERFACE:
+ case K_SCHEMA:
+ case K_ENUM:
+ case K_UNION:
+ case K_INPUT:
+ case K_DIRECTIVE:
+ case K_EXTEND:
+ case K_SCALAR:
+ case K_ON:
+ case K_FRAGMENT:
+ case K_QUERY:
+ case K_MUTATION:
+ case K_SUBSCRIPTION:
+ case K_VALUE:
+ case K_TRUE:
+ case K_FALSE:
+ case K_NULL:
+ case Name:
+ {
+ setState(398);
+ typeName();
+ }
+ break;
+ case T__9:
+ {
+ setState(399);
+ listType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ setState(403);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==T__11) {
+ {
+ setState(402);
+ required();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeNameContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public TypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitTypeName(this);
+ }
+ }
+
+ public final TypeNameContext typeName() throws RecognitionException {
+ TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_typeName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(405);
+ anyName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ListTypeContext extends ParserRuleContext {
+ public TypeSpecContext typeSpec() {
+ return getRuleContext(TypeSpecContext.class,0);
+ }
+ public ListTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_listType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterListType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitListType(this);
+ }
+ }
+
+ public final ListTypeContext listType() throws RecognitionException {
+ ListTypeContext _localctx = new ListTypeContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_listType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(407);
+ match(T__9);
+ setState(408);
+ typeSpec();
+ setState(409);
+ match(T__10);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RequiredContext extends ParserRuleContext {
+ public RequiredContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_required; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterRequired(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitRequired(this);
+ }
+ }
+
+ public final RequiredContext required() throws RecognitionException {
+ RequiredContext _localctx = new RequiredContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_required);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(411);
+ match(T__11);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DefaultValueContext extends ParserRuleContext {
+ public ValueContext value() {
+ return getRuleContext(ValueContext.class,0);
+ }
+ public DefaultValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_defaultValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterDefaultValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitDefaultValue(this);
+ }
+ }
+
+ public final DefaultValueContext defaultValue() throws RecognitionException {
+ DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_defaultValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(413);
+ match(T__8);
+ setState(414);
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnyNameContext extends ParserRuleContext {
+ public NameTokensContext nameTokens() {
+ return getRuleContext(NameTokensContext.class,0);
+ }
+ public TerminalNode K_TRUE() { return getToken(GraphqlSchemaParser.K_TRUE, 0); }
+ public TerminalNode K_FALSE() { return getToken(GraphqlSchemaParser.K_FALSE, 0); }
+ public TerminalNode K_NULL() { return getToken(GraphqlSchemaParser.K_NULL, 0); }
+ public AnyNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_anyName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterAnyName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitAnyName(this);
+ }
+ }
+
+ public final AnyNameContext anyName() throws RecognitionException {
+ AnyNameContext _localctx = new AnyNameContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_anyName);
+ try {
+ setState(420);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case EXECUTABLE_DIRECTIVE_LOCATION:
+ case TYPE_SYSTEM_DIRECTIVE_LOCATION:
+ case K_TYPE:
+ case K_IMPLEMENTS:
+ case K_INTERFACE:
+ case K_SCHEMA:
+ case K_ENUM:
+ case K_UNION:
+ case K_INPUT:
+ case K_DIRECTIVE:
+ case K_EXTEND:
+ case K_SCALAR:
+ case K_ON:
+ case K_FRAGMENT:
+ case K_QUERY:
+ case K_MUTATION:
+ case K_SUBSCRIPTION:
+ case K_VALUE:
+ case Name:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(416);
+ nameTokens();
+ }
+ break;
+ case K_TRUE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(417);
+ match(K_TRUE);
+ }
+ break;
+ case K_FALSE:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(418);
+ match(K_FALSE);
+ }
+ break;
+ case K_NULL:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(419);
+ match(K_NULL);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NameTokensContext extends ParserRuleContext {
+ public TerminalNode Name() { return getToken(GraphqlSchemaParser.Name, 0); }
+ public TerminalNode EXECUTABLE_DIRECTIVE_LOCATION() { return getToken(GraphqlSchemaParser.EXECUTABLE_DIRECTIVE_LOCATION, 0); }
+ public TerminalNode TYPE_SYSTEM_DIRECTIVE_LOCATION() { return getToken(GraphqlSchemaParser.TYPE_SYSTEM_DIRECTIVE_LOCATION, 0); }
+ public TerminalNode K_TYPE() { return getToken(GraphqlSchemaParser.K_TYPE, 0); }
+ public TerminalNode K_IMPLEMENTS() { return getToken(GraphqlSchemaParser.K_IMPLEMENTS, 0); }
+ public TerminalNode K_INTERFACE() { return getToken(GraphqlSchemaParser.K_INTERFACE, 0); }
+ public TerminalNode K_SCHEMA() { return getToken(GraphqlSchemaParser.K_SCHEMA, 0); }
+ public TerminalNode K_ENUM() { return getToken(GraphqlSchemaParser.K_ENUM, 0); }
+ public TerminalNode K_UNION() { return getToken(GraphqlSchemaParser.K_UNION, 0); }
+ public TerminalNode K_INPUT() { return getToken(GraphqlSchemaParser.K_INPUT, 0); }
+ public TerminalNode K_DIRECTIVE() { return getToken(GraphqlSchemaParser.K_DIRECTIVE, 0); }
+ public TerminalNode K_EXTEND() { return getToken(GraphqlSchemaParser.K_EXTEND, 0); }
+ public TerminalNode K_SCALAR() { return getToken(GraphqlSchemaParser.K_SCALAR, 0); }
+ public TerminalNode K_ON() { return getToken(GraphqlSchemaParser.K_ON, 0); }
+ public TerminalNode K_FRAGMENT() { return getToken(GraphqlSchemaParser.K_FRAGMENT, 0); }
+ public TerminalNode K_QUERY() { return getToken(GraphqlSchemaParser.K_QUERY, 0); }
+ public TerminalNode K_MUTATION() { return getToken(GraphqlSchemaParser.K_MUTATION, 0); }
+ public TerminalNode K_SUBSCRIPTION() { return getToken(GraphqlSchemaParser.K_SUBSCRIPTION, 0); }
+ public TerminalNode K_VALUE() { return getToken(GraphqlSchemaParser.K_VALUE, 0); }
+ public NameTokensContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nameTokens; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterNameTokens(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitNameTokens(this);
+ }
+ }
+
+ public final NameTokensContext nameTokens() throws RecognitionException {
+ NameTokensContext _localctx = new NameTokensContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_nameTokens);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(422);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 19327344640L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BooleanValueContext extends ParserRuleContext {
+ public TerminalNode K_TRUE() { return getToken(GraphqlSchemaParser.K_TRUE, 0); }
+ public TerminalNode K_FALSE() { return getToken(GraphqlSchemaParser.K_FALSE, 0); }
+ public BooleanValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_booleanValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterBooleanValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitBooleanValue(this);
+ }
+ }
+
+ public final BooleanValueContext booleanValue() throws RecognitionException {
+ BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_booleanValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(424);
+ _la = _input.LA(1);
+ if ( !(_la==K_TRUE || _la==K_FALSE) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ValueContext extends ParserRuleContext {
+ public TerminalNode IntValue() { return getToken(GraphqlSchemaParser.IntValue, 0); }
+ public TerminalNode FloatValue() { return getToken(GraphqlSchemaParser.FloatValue, 0); }
+ public TerminalNode StringValue() { return getToken(GraphqlSchemaParser.StringValue, 0); }
+ public TerminalNode BlockStringValue() { return getToken(GraphqlSchemaParser.BlockStringValue, 0); }
+ public BooleanValueContext booleanValue() {
+ return getRuleContext(BooleanValueContext.class,0);
+ }
+ public NullValueContext nullValue() {
+ return getRuleContext(NullValueContext.class,0);
+ }
+ public EnumValueContext enumValue() {
+ return getRuleContext(EnumValueContext.class,0);
+ }
+ public ArrayValueContext arrayValue() {
+ return getRuleContext(ArrayValueContext.class,0);
+ }
+ public ObjectValueContext objectValue() {
+ return getRuleContext(ObjectValueContext.class,0);
+ }
+ public ValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_value; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitValue(this);
+ }
+ }
+
+ public final ValueContext value() throws RecognitionException {
+ ValueContext _localctx = new ValueContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_value);
+ try {
+ setState(435);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case IntValue:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(426);
+ match(IntValue);
+ }
+ break;
+ case FloatValue:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(427);
+ match(FloatValue);
+ }
+ break;
+ case StringValue:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(428);
+ match(StringValue);
+ }
+ break;
+ case BlockStringValue:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(429);
+ match(BlockStringValue);
+ }
+ break;
+ case K_TRUE:
+ case K_FALSE:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(430);
+ booleanValue();
+ }
+ break;
+ case K_NULL:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(431);
+ nullValue();
+ }
+ break;
+ case EXECUTABLE_DIRECTIVE_LOCATION:
+ case TYPE_SYSTEM_DIRECTIVE_LOCATION:
+ case K_TYPE:
+ case K_IMPLEMENTS:
+ case K_INTERFACE:
+ case K_SCHEMA:
+ case K_ENUM:
+ case K_UNION:
+ case K_INPUT:
+ case K_DIRECTIVE:
+ case K_EXTEND:
+ case K_SCALAR:
+ case K_ON:
+ case K_FRAGMENT:
+ case K_QUERY:
+ case K_MUTATION:
+ case K_SUBSCRIPTION:
+ case K_VALUE:
+ case Name:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(432);
+ enumValue();
+ }
+ break;
+ case T__9:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(433);
+ arrayValue();
+ }
+ break;
+ case T__0:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(434);
+ objectValue();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumValueContext extends ParserRuleContext {
+ public NameTokensContext nameTokens() {
+ return getRuleContext(NameTokensContext.class,0);
+ }
+ public EnumValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterEnumValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitEnumValue(this);
+ }
+ }
+
+ public final EnumValueContext enumValue() throws RecognitionException {
+ EnumValueContext _localctx = new EnumValueContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_enumValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(437);
+ nameTokens();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayValueContext extends ParserRuleContext {
+ public List value() {
+ return getRuleContexts(ValueContext.class);
+ }
+ public ValueContext value(int i) {
+ return getRuleContext(ValueContext.class,i);
+ }
+ public ArrayValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterArrayValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitArrayValue(this);
+ }
+ }
+
+ public final ArrayValueContext arrayValue() throws RecognitionException {
+ ArrayValueContext _localctx = new ArrayValueContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_arrayValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(439);
+ match(T__9);
+ setState(443);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 13331578479618L) != 0)) {
+ {
+ {
+ setState(440);
+ value();
+ }
+ }
+ setState(445);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(446);
+ match(T__10);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ObjectValueContext extends ParserRuleContext {
+ public List objectField() {
+ return getRuleContexts(ObjectFieldContext.class);
+ }
+ public ObjectFieldContext objectField(int i) {
+ return getRuleContext(ObjectFieldContext.class,i);
+ }
+ public ObjectValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_objectValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterObjectValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitObjectValue(this);
+ }
+ }
+
+ public final ObjectValueContext objectValue() throws RecognitionException {
+ ObjectValueContext _localctx = new ObjectValueContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_objectValue);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(448);
+ match(T__0);
+ setState(452);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 34359730176L) != 0)) {
+ {
+ {
+ setState(449);
+ objectField();
+ }
+ }
+ setState(454);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(455);
+ match(T__1);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ObjectFieldContext extends ParserRuleContext {
+ public AnyNameContext anyName() {
+ return getRuleContext(AnyNameContext.class,0);
+ }
+ public ValueContext value() {
+ return getRuleContext(ValueContext.class,0);
+ }
+ public ObjectFieldContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_objectField; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterObjectField(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitObjectField(this);
+ }
+ }
+
+ public final ObjectFieldContext objectField() throws RecognitionException {
+ ObjectFieldContext _localctx = new ObjectFieldContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_objectField);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(457);
+ anyName();
+ setState(458);
+ match(T__2);
+ setState(459);
+ value();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NullValueContext extends ParserRuleContext {
+ public TerminalNode K_NULL() { return getToken(GraphqlSchemaParser.K_NULL, 0); }
+ public NullValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_nullValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).enterNullValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof GraphqlSchemaListener ) ((GraphqlSchemaListener)listener).exitNullValue(this);
+ }
+ }
+
+ public final NullValueContext nullValue() throws RecognitionException {
+ NullValueContext _localctx = new NullValueContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_nullValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(461);
+ match(K_NULL);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0001,\u01d0\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
+ "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
+ "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
+ "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+
+ "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+
+ "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+
+ "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+
+ "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+
+ "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+
+ "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+
+ "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+
+ "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+
+ "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+
+ "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u0001\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
+ "\u0001\u0000\u0001\u0000\u0001\u0000\u0005\u0000n\b\u0000\n\u0000\f\u0000"+
+ "q\t\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0003\u0002"+
+ "w\b\u0002\u0001\u0002\u0001\u0002\u0004\u0002{\b\u0002\u000b\u0002\f\u0002"+
+ "|\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003"+
+ "\u0084\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005"+
+ "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
+ "\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0005\u0007\u0095\b\u0007"+
+ "\n\u0007\f\u0007\u0098\t\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b"+
+ "\u0003\b\u009e\b\b\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0003\u000b"+
+ "\u00a5\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b"+
+ "\u00ab\b\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0004\f\u00b1"+
+ "\b\f\u000b\f\f\f\u00b2\u0001\r\u0001\r\u0001\r\u0003\r\u00b8\b\r\u0001"+
+ "\u000e\u0001\u000e\u0004\u000e\u00bc\b\u000e\u000b\u000e\f\u000e\u00bd"+
+ "\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
+ "\u0001\u0010\u0003\u0010\u00c7\b\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+
+ "\u0003\u0010\u00cc\b\u0010\u0001\u0010\u0003\u0010\u00cf\b\u0010\u0001"+
+ "\u0010\u0003\u0010\u00d2\b\u0010\u0001\u0011\u0003\u0011\u00d5\b\u0011"+
+ "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u00db\b\u0011"+
+ "\u0001\u0011\u0003\u0011\u00de\b\u0011\u0001\u0011\u0003\u0011\u00e1\b"+
+ "\u0011\u0001\u0012\u0001\u0012\u0004\u0012\u00e5\b\u0012\u000b\u0012\f"+
+ "\u0012\u00e6\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0003\u0013"+
+ "\u00ed\b\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u00f2\b"+
+ "\u0013\n\u0013\f\u0013\u00f5\t\u0013\u0001\u0014\u0003\u0014\u00f8\b\u0014"+
+ "\u0001\u0014\u0001\u0014\u0001\u0014\u0003\u0014\u00fd\b\u0014\u0001\u0014"+
+ "\u0003\u0014\u0100\b\u0014\u0001\u0015\u0003\u0015\u0103\b\u0015\u0001"+
+ "\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0003\u0015\u0109\b\u0015\u0001"+
+ "\u0015\u0003\u0015\u010c\b\u0015\u0001\u0016\u0001\u0016\u0004\u0016\u0110"+
+ "\b\u0016\u000b\u0016\f\u0016\u0111\u0001\u0016\u0001\u0016\u0001\u0017"+
+ "\u0003\u0017\u0117\b\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+
+ "\u0003\u0017\u011d\b\u0017\u0001\u0017\u0003\u0017\u0120\b\u0017\u0001"+
+ "\u0018\u0003\u0018\u0123\b\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0003"+
+ "\u0018\u0128\b\u0018\u0001\u0018\u0003\u0018\u012b\b\u0018\u0001\u0019"+
+ "\u0003\u0019\u012e\b\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0003\u0019"+
+ "\u0133\b\u0019\u0001\u001a\u0003\u001a\u0136\b\u001a\u0001\u001a\u0001"+
+ "\u001a\u0001\u001a\u0003\u001a\u013b\b\u001a\u0001\u001a\u0001\u001a\u0001"+
+ "\u001a\u0001\u001b\u0003\u001b\u0141\b\u001b\u0001\u001b\u0001\u001b\u0001"+
+ "\u001b\u0001\u001b\u0003\u001b\u0147\b\u001b\u0001\u001b\u0001\u001b\u0001"+
+ "\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u014f\b\u001c\n"+
+ "\u001c\f\u001c\u0152\t\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0003"+
+ "\u001d\u0157\b\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u015c"+
+ "\b\u001d\u0001\u001d\u0001\u001d\u0001\u001e\u0001\u001e\u0004\u001e\u0162"+
+ "\b\u001e\u000b\u001e\f\u001e\u0163\u0001\u001e\u0001\u001e\u0001\u001f"+
+ "\u0003\u001f\u0169\b\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u016d\b"+
+ "\u001f\u0001 \u0003 \u0170\b \u0001 \u0001 \u0003 \u0174\b \u0001 \u0001"+
+ " \u0001 \u0003 \u0179\b \u0001!\u0001!\u0004!\u017d\b!\u000b!\f!\u017e"+
+ "\u0001!\u0001!\u0001\"\u0003\"\u0184\b\"\u0001\"\u0001\"\u0001\"\u0001"+
+ "\"\u0003\"\u018a\b\"\u0001\"\u0003\"\u018d\b\"\u0001#\u0001#\u0003#\u0191"+
+ "\b#\u0001#\u0003#\u0194\b#\u0001$\u0001$\u0001%\u0001%\u0001%\u0001%\u0001"+
+ "&\u0001&\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0003(\u01a5"+
+ "\b(\u0001)\u0001)\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001+\u0001"+
+ "+\u0001+\u0001+\u0001+\u0003+\u01b4\b+\u0001,\u0001,\u0001-\u0001-\u0005"+
+ "-\u01ba\b-\n-\f-\u01bd\t-\u0001-\u0001-\u0001.\u0001.\u0005.\u01c3\b."+
+ "\n.\f.\u01c6\t.\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u00010\u0001"+
+ "0\u00010\u0000\u00001\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012"+
+ "\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\"+
+ "^`\u0000\u0003\u0001\u0000*+\u0002\u0000\r\u001e\"\"\u0001\u0000\u001f"+
+ " \u01ee\u0000o\u0001\u0000\u0000\u0000\u0002r\u0001\u0000\u0000\u0000"+
+ "\u0004t\u0001\u0000\u0000\u0000\u0006\u0083\u0001\u0000\u0000\u0000\b"+
+ "\u0085\u0001\u0000\u0000\u0000\n\u0089\u0001\u0000\u0000\u0000\f\u008d"+
+ "\u0001\u0000\u0000\u0000\u000e\u0096\u0001\u0000\u0000\u0000\u0010\u009d"+
+ "\u0001\u0000\u0000\u0000\u0012\u009f\u0001\u0000\u0000\u0000\u0014\u00a1"+
+ "\u0001\u0000\u0000\u0000\u0016\u00a4\u0001\u0000\u0000\u0000\u0018\u00b0"+
+ "\u0001\u0000\u0000\u0000\u001a\u00b4\u0001\u0000\u0000\u0000\u001c\u00b9"+
+ "\u0001\u0000\u0000\u0000\u001e\u00c1\u0001\u0000\u0000\u0000 \u00c6\u0001"+
+ "\u0000\u0000\u0000\"\u00d4\u0001\u0000\u0000\u0000$\u00e2\u0001\u0000"+
+ "\u0000\u0000&\u00ea\u0001\u0000\u0000\u0000(\u00f7\u0001\u0000\u0000\u0000"+
+ "*\u0102\u0001\u0000\u0000\u0000,\u010d\u0001\u0000\u0000\u0000.\u0116"+
+ "\u0001\u0000\u0000\u00000\u0122\u0001\u0000\u0000\u00002\u012d\u0001\u0000"+
+ "\u0000\u00004\u0135\u0001\u0000\u0000\u00006\u0140\u0001\u0000\u0000\u0000"+
+ "8\u0150\u0001\u0000\u0000\u0000:\u0156\u0001\u0000\u0000\u0000<\u015f"+
+ "\u0001\u0000\u0000\u0000>\u0168\u0001\u0000\u0000\u0000@\u016f\u0001\u0000"+
+ "\u0000\u0000B\u017a\u0001\u0000\u0000\u0000D\u0183\u0001\u0000\u0000\u0000"+
+ "F\u0190\u0001\u0000\u0000\u0000H\u0195\u0001\u0000\u0000\u0000J\u0197"+
+ "\u0001\u0000\u0000\u0000L\u019b\u0001\u0000\u0000\u0000N\u019d\u0001\u0000"+
+ "\u0000\u0000P\u01a4\u0001\u0000\u0000\u0000R\u01a6\u0001\u0000\u0000\u0000"+
+ "T\u01a8\u0001\u0000\u0000\u0000V\u01b3\u0001\u0000\u0000\u0000X\u01b5"+
+ "\u0001\u0000\u0000\u0000Z\u01b7\u0001\u0000\u0000\u0000\\\u01c0\u0001"+
+ "\u0000\u0000\u0000^\u01c9\u0001\u0000\u0000\u0000`\u01cd\u0001\u0000\u0000"+
+ "\u0000bn\u0003\u0004\u0002\u0000cn\u0003 \u0010\u0000dn\u0003\"\u0011"+
+ "\u0000en\u0003(\u0014\u0000fn\u0003*\u0015\u0000gn\u00034\u001a\u0000"+
+ "hn\u00036\u001b\u0000in\u0003:\u001d\u0000jn\u00030\u0018\u0000kn\u0003"+
+ "2\u0019\u0000ln\u0003\u0016\u000b\u0000mb\u0001\u0000\u0000\u0000mc\u0001"+
+ "\u0000\u0000\u0000md\u0001\u0000\u0000\u0000me\u0001\u0000\u0000\u0000"+
+ "mf\u0001\u0000\u0000\u0000mg\u0001\u0000\u0000\u0000mh\u0001\u0000\u0000"+
+ "\u0000mi\u0001\u0000\u0000\u0000mj\u0001\u0000\u0000\u0000mk\u0001\u0000"+
+ "\u0000\u0000ml\u0001\u0000\u0000\u0000nq\u0001\u0000\u0000\u0000om\u0001"+
+ "\u0000\u0000\u0000op\u0001\u0000\u0000\u0000p\u0001\u0001\u0000\u0000"+
+ "\u0000qo\u0001\u0000\u0000\u0000rs\u0007\u0000\u0000\u0000s\u0003\u0001"+
+ "\u0000\u0000\u0000tv\u0005\u0012\u0000\u0000uw\u0003\u0018\f\u0000vu\u0001"+
+ "\u0000\u0000\u0000vw\u0001\u0000\u0000\u0000wx\u0001\u0000\u0000\u0000"+
+ "xz\u0005\u0001\u0000\u0000y{\u0003\u0006\u0003\u0000zy\u0001\u0000\u0000"+
+ "\u0000{|\u0001\u0000\u0000\u0000|z\u0001\u0000\u0000\u0000|}\u0001\u0000"+
+ "\u0000\u0000}~\u0001\u0000\u0000\u0000~\u007f\u0005\u0002\u0000\u0000"+
+ "\u007f\u0005\u0001\u0000\u0000\u0000\u0080\u0084\u0003\b\u0004\u0000\u0081"+
+ "\u0084\u0003\n\u0005\u0000\u0082\u0084\u0003\f\u0006\u0000\u0083\u0080"+
+ "\u0001\u0000\u0000\u0000\u0083\u0081\u0001\u0000\u0000\u0000\u0083\u0082"+
+ "\u0001\u0000\u0000\u0000\u0084\u0007\u0001\u0000\u0000\u0000\u0085\u0086"+
+ "\u0005\u001b\u0000\u0000\u0086\u0087\u0005\u0003\u0000\u0000\u0087\u0088"+
+ "\u0003P(\u0000\u0088\t\u0001\u0000\u0000\u0000\u0089\u008a\u0005\u001c"+
+ "\u0000\u0000\u008a\u008b\u0005\u0003\u0000\u0000\u008b\u008c\u0003P(\u0000"+
+ "\u008c\u000b\u0001\u0000\u0000\u0000\u008d\u008e\u0005\u001d\u0000\u0000"+
+ "\u008e\u008f\u0005\u0003\u0000\u0000\u008f\u0090\u0003P(\u0000\u0090\r"+
+ "\u0001\u0000\u0000\u0000\u0091\u0092\u0003\u0010\b\u0000\u0092\u0093\u0005"+
+ "\u0004\u0000\u0000\u0093\u0095\u0001\u0000\u0000\u0000\u0094\u0091\u0001"+
+ "\u0000\u0000\u0000\u0095\u0098\u0001\u0000\u0000\u0000\u0096\u0094\u0001"+
+ "\u0000\u0000\u0000\u0096\u0097\u0001\u0000\u0000\u0000\u0097\u0099\u0001"+
+ "\u0000\u0000\u0000\u0098\u0096\u0001\u0000\u0000\u0000\u0099\u009a\u0003"+
+ "\u0010\b\u0000\u009a\u000f\u0001\u0000\u0000\u0000\u009b\u009e\u0003\u0012"+
+ "\t\u0000\u009c\u009e\u0003\u0014\n\u0000\u009d\u009b\u0001\u0000\u0000"+
+ "\u0000\u009d\u009c\u0001\u0000\u0000\u0000\u009e\u0011\u0001\u0000\u0000"+
+ "\u0000\u009f\u00a0\u0005\r\u0000\u0000\u00a0\u0013\u0001\u0000\u0000\u0000"+
+ "\u00a1\u00a2\u0005\u000e\u0000\u0000\u00a2\u0015\u0001\u0000\u0000\u0000"+
+ "\u00a3\u00a5\u0003\u0002\u0001\u0000\u00a4\u00a3\u0001\u0000\u0000\u0000"+
+ "\u00a4\u00a5\u0001\u0000\u0000\u0000\u00a5\u00a6\u0001\u0000\u0000\u0000"+
+ "\u00a6\u00a7\u0005\u0016\u0000\u0000\u00a7\u00a8\u0005\u0005\u0000\u0000"+
+ "\u00a8\u00aa\u0003P(\u0000\u00a9\u00ab\u0003B!\u0000\u00aa\u00a9\u0001"+
+ "\u0000\u0000\u0000\u00aa\u00ab\u0001\u0000\u0000\u0000\u00ab\u00ac\u0001"+
+ "\u0000\u0000\u0000\u00ac\u00ad\u0005\u0019\u0000\u0000\u00ad\u00ae\u0003"+
+ "\u000e\u0007\u0000\u00ae\u0017\u0001\u0000\u0000\u0000\u00af\u00b1\u0003"+
+ "\u001a\r\u0000\u00b0\u00af\u0001\u0000\u0000\u0000\u00b1\u00b2\u0001\u0000"+
+ "\u0000\u0000\u00b2\u00b0\u0001\u0000\u0000\u0000\u00b2\u00b3\u0001\u0000"+
+ "\u0000\u0000\u00b3\u0019\u0001\u0000\u0000\u0000\u00b4\u00b5\u0005\u0005"+
+ "\u0000\u0000\u00b5\u00b7\u0003P(\u0000\u00b6\u00b8\u0003\u001c\u000e\u0000"+
+ "\u00b7\u00b6\u0001\u0000\u0000\u0000\u00b7\u00b8\u0001\u0000\u0000\u0000"+
+ "\u00b8\u001b\u0001\u0000\u0000\u0000\u00b9\u00bb\u0005\u0006\u0000\u0000"+
+ "\u00ba\u00bc\u0003\u001e\u000f\u0000\u00bb\u00ba\u0001\u0000\u0000\u0000"+
+ "\u00bc\u00bd\u0001\u0000\u0000\u0000\u00bd\u00bb\u0001\u0000\u0000\u0000"+
+ "\u00bd\u00be\u0001\u0000\u0000\u0000\u00be\u00bf\u0001\u0000\u0000\u0000"+
+ "\u00bf\u00c0\u0005\u0007\u0000\u0000\u00c0\u001d\u0001\u0000\u0000\u0000"+
+ "\u00c1\u00c2\u0003P(\u0000\u00c2\u00c3\u0005\u0003\u0000\u0000\u00c3\u00c4"+
+ "\u0003V+\u0000\u00c4\u001f\u0001\u0000\u0000\u0000\u00c5\u00c7\u0003\u0002"+
+ "\u0001\u0000\u00c6\u00c5\u0001\u0000\u0000\u0000\u00c6\u00c7\u0001\u0000"+
+ "\u0000\u0000\u00c7\u00c8\u0001\u0000\u0000\u0000\u00c8\u00c9\u0005\u000f"+
+ "\u0000\u0000\u00c9\u00cb\u0003P(\u0000\u00ca\u00cc\u0003&\u0013\u0000"+
+ "\u00cb\u00ca\u0001\u0000\u0000\u0000\u00cb\u00cc\u0001\u0000\u0000\u0000"+
+ "\u00cc\u00ce\u0001\u0000\u0000\u0000\u00cd\u00cf\u0003\u0018\f\u0000\u00ce"+
+ "\u00cd\u0001\u0000\u0000\u0000\u00ce\u00cf\u0001\u0000\u0000\u0000\u00cf"+
+ "\u00d1\u0001\u0000\u0000\u0000\u00d0\u00d2\u0003$\u0012\u0000\u00d1\u00d0"+
+ "\u0001\u0000\u0000\u0000\u00d1\u00d2\u0001\u0000\u0000\u0000\u00d2!\u0001"+
+ "\u0000\u0000\u0000\u00d3\u00d5\u0003\u0002\u0001\u0000\u00d4\u00d3\u0001"+
+ "\u0000\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5\u00d6\u0001"+
+ "\u0000\u0000\u0000\u00d6\u00d7\u0005\u0017\u0000\u0000\u00d7\u00d8\u0005"+
+ "\u000f\u0000\u0000\u00d8\u00da\u0003P(\u0000\u00d9\u00db\u0003&\u0013"+
+ "\u0000\u00da\u00d9\u0001\u0000\u0000\u0000\u00da\u00db\u0001\u0000\u0000"+
+ "\u0000\u00db\u00dd\u0001\u0000\u0000\u0000\u00dc\u00de\u0003\u0018\f\u0000"+
+ "\u00dd\u00dc\u0001\u0000\u0000\u0000\u00dd\u00de\u0001\u0000\u0000\u0000"+
+ "\u00de\u00e0\u0001\u0000\u0000\u0000\u00df\u00e1\u0003$\u0012\u0000\u00e0"+
+ "\u00df\u0001\u0000\u0000\u0000\u00e0\u00e1\u0001\u0000\u0000\u0000\u00e1"+
+ "#\u0001\u0000\u0000\u0000\u00e2\u00e4\u0005\u0001\u0000\u0000\u00e3\u00e5"+
+ "\u0003@ \u0000\u00e4\u00e3\u0001\u0000\u0000\u0000\u00e5\u00e6\u0001\u0000"+
+ "\u0000\u0000\u00e6\u00e4\u0001\u0000\u0000\u0000\u00e6\u00e7\u0001\u0000"+
+ "\u0000\u0000\u00e7\u00e8\u0001\u0000\u0000\u0000\u00e8\u00e9\u0005\u0002"+
+ "\u0000\u0000\u00e9%\u0001\u0000\u0000\u0000\u00ea\u00ec\u0005\u0010\u0000"+
+ "\u0000\u00eb\u00ed\u0005\b\u0000\u0000\u00ec\u00eb\u0001\u0000\u0000\u0000"+
+ "\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed\u00ee\u0001\u0000\u0000\u0000"+
+ "\u00ee\u00f3\u0005\"\u0000\u0000\u00ef\u00f0\u0005\b\u0000\u0000\u00f0"+
+ "\u00f2\u0005\"\u0000\u0000\u00f1\u00ef\u0001\u0000\u0000\u0000\u00f2\u00f5"+
+ "\u0001\u0000\u0000\u0000\u00f3\u00f1\u0001\u0000\u0000\u0000\u00f3\u00f4"+
+ "\u0001\u0000\u0000\u0000\u00f4\'\u0001\u0000\u0000\u0000\u00f5\u00f3\u0001"+
+ "\u0000\u0000\u0000\u00f6\u00f8\u0003\u0002\u0001\u0000\u00f7\u00f6\u0001"+
+ "\u0000\u0000\u0000\u00f7\u00f8\u0001\u0000\u0000\u0000\u00f8\u00f9\u0001"+
+ "\u0000\u0000\u0000\u00f9\u00fa\u0005\u0015\u0000\u0000\u00fa\u00fc\u0003"+
+ "P(\u0000\u00fb\u00fd\u0003\u0018\f\u0000\u00fc\u00fb\u0001\u0000\u0000"+
+ "\u0000\u00fc\u00fd\u0001\u0000\u0000\u0000\u00fd\u00ff\u0001\u0000\u0000"+
+ "\u0000\u00fe\u0100\u0003,\u0016\u0000\u00ff\u00fe\u0001\u0000\u0000\u0000"+
+ "\u00ff\u0100\u0001\u0000\u0000\u0000\u0100)\u0001\u0000\u0000\u0000\u0101"+
+ "\u0103\u0003\u0002\u0001\u0000\u0102\u0101\u0001\u0000\u0000\u0000\u0102"+
+ "\u0103\u0001\u0000\u0000\u0000\u0103\u0104\u0001\u0000\u0000\u0000\u0104"+
+ "\u0105\u0005\u0017\u0000\u0000\u0105\u0106\u0005\u0015\u0000\u0000\u0106"+
+ "\u0108\u0003P(\u0000\u0107\u0109\u0003\u0018\f\u0000\u0108\u0107\u0001"+
+ "\u0000\u0000\u0000\u0108\u0109\u0001\u0000\u0000\u0000\u0109\u010b\u0001"+
+ "\u0000\u0000\u0000\u010a\u010c\u0003,\u0016\u0000\u010b\u010a\u0001\u0000"+
+ "\u0000\u0000\u010b\u010c\u0001\u0000\u0000\u0000\u010c+\u0001\u0000\u0000"+
+ "\u0000\u010d\u010f\u0005\u0001\u0000\u0000\u010e\u0110\u0003.\u0017\u0000"+
+ "\u010f\u010e\u0001\u0000\u0000\u0000\u0110\u0111\u0001\u0000\u0000\u0000"+
+ "\u0111\u010f\u0001\u0000\u0000\u0000\u0111\u0112\u0001\u0000\u0000\u0000"+
+ "\u0112\u0113\u0001\u0000\u0000\u0000\u0113\u0114\u0005\u0002\u0000\u0000"+
+ "\u0114-\u0001\u0000\u0000\u0000\u0115\u0117\u0003\u0002\u0001\u0000\u0116"+
+ "\u0115\u0001\u0000\u0000\u0000\u0116\u0117\u0001\u0000\u0000\u0000\u0117"+
+ "\u0118\u0001\u0000\u0000\u0000\u0118\u0119\u0003P(\u0000\u0119\u011a\u0005"+
+ "\u0003\u0000\u0000\u011a\u011c\u0003F#\u0000\u011b\u011d\u0003N\'\u0000"+
+ "\u011c\u011b\u0001\u0000\u0000\u0000\u011c\u011d\u0001\u0000\u0000\u0000"+
+ "\u011d\u011f\u0001\u0000\u0000\u0000\u011e\u0120\u0003\u0018\f\u0000\u011f"+
+ "\u011e\u0001\u0000\u0000\u0000\u011f\u0120\u0001\u0000\u0000\u0000\u0120"+
+ "/\u0001\u0000\u0000\u0000\u0121\u0123\u0003\u0002\u0001\u0000\u0122\u0121"+
+ "\u0001\u0000\u0000\u0000\u0122\u0123\u0001\u0000\u0000\u0000\u0123\u0124"+
+ "\u0001\u0000\u0000\u0000\u0124\u0125\u0005\u0011\u0000\u0000\u0125\u0127"+
+ "\u0003P(\u0000\u0126\u0128\u0003\u0018\f\u0000\u0127\u0126\u0001\u0000"+
+ "\u0000\u0000\u0127\u0128\u0001\u0000\u0000\u0000\u0128\u012a\u0001\u0000"+
+ "\u0000\u0000\u0129\u012b\u0003$\u0012\u0000\u012a\u0129\u0001\u0000\u0000"+
+ "\u0000\u012a\u012b\u0001\u0000\u0000\u0000\u012b1\u0001\u0000\u0000\u0000"+
+ "\u012c\u012e\u0003\u0002\u0001\u0000\u012d\u012c\u0001\u0000\u0000\u0000"+
+ "\u012d\u012e\u0001\u0000\u0000\u0000\u012e\u012f\u0001\u0000\u0000\u0000"+
+ "\u012f\u0130\u0005\u0018\u0000\u0000\u0130\u0132\u0003P(\u0000\u0131\u0133"+
+ "\u0003\u0018\f\u0000\u0132\u0131\u0001\u0000\u0000\u0000\u0132\u0133\u0001"+
+ "\u0000\u0000\u0000\u01333\u0001\u0000\u0000\u0000\u0134\u0136\u0003\u0002"+
+ "\u0001\u0000\u0135\u0134\u0001\u0000\u0000\u0000\u0135\u0136\u0001\u0000"+
+ "\u0000\u0000\u0136\u0137\u0001\u0000\u0000\u0000\u0137\u0138\u0005\u0014"+
+ "\u0000\u0000\u0138\u013a\u0003P(\u0000\u0139\u013b\u0003\u0018\f\u0000"+
+ "\u013a\u0139\u0001\u0000\u0000\u0000\u013a\u013b\u0001\u0000\u0000\u0000"+
+ "\u013b\u013c\u0001\u0000\u0000\u0000\u013c\u013d\u0005\t\u0000\u0000\u013d"+
+ "\u013e\u00038\u001c\u0000\u013e5\u0001\u0000\u0000\u0000\u013f\u0141\u0003"+
+ "\u0002\u0001\u0000\u0140\u013f\u0001\u0000\u0000\u0000\u0140\u0141\u0001"+
+ "\u0000\u0000\u0000\u0141\u0142\u0001\u0000\u0000\u0000\u0142\u0143\u0005"+
+ "\u0017\u0000\u0000\u0143\u0144\u0005\u0014\u0000\u0000\u0144\u0146\u0003"+
+ "P(\u0000\u0145\u0147\u0003\u0018\f\u0000\u0146\u0145\u0001\u0000\u0000"+
+ "\u0000\u0146\u0147\u0001\u0000\u0000\u0000\u0147\u0148\u0001\u0000\u0000"+
+ "\u0000\u0148\u0149\u0005\t\u0000\u0000\u0149\u014a\u00038\u001c\u0000"+
+ "\u014a7\u0001\u0000\u0000\u0000\u014b\u014c\u0003P(\u0000\u014c\u014d"+
+ "\u0005\u0004\u0000\u0000\u014d\u014f\u0001\u0000\u0000\u0000\u014e\u014b"+
+ "\u0001\u0000\u0000\u0000\u014f\u0152\u0001\u0000\u0000\u0000\u0150\u014e"+
+ "\u0001\u0000\u0000\u0000\u0150\u0151\u0001\u0000\u0000\u0000\u0151\u0153"+
+ "\u0001\u0000\u0000\u0000\u0152\u0150\u0001\u0000\u0000\u0000\u0153\u0154"+
+ "\u0003P(\u0000\u01549\u0001\u0000\u0000\u0000\u0155\u0157\u0003\u0002"+
+ "\u0001\u0000\u0156\u0155\u0001\u0000\u0000\u0000\u0156\u0157\u0001\u0000"+
+ "\u0000\u0000\u0157\u0158\u0001\u0000\u0000\u0000\u0158\u0159\u0005\u0013"+
+ "\u0000\u0000\u0159\u015b\u0003P(\u0000\u015a\u015c\u0003\u0018\f\u0000"+
+ "\u015b\u015a\u0001\u0000\u0000\u0000\u015b\u015c\u0001\u0000\u0000\u0000"+
+ "\u015c\u015d\u0001\u0000\u0000\u0000\u015d\u015e\u0003<\u001e\u0000\u015e"+
+ ";\u0001\u0000\u0000\u0000\u015f\u0161\u0005\u0001\u0000\u0000\u0160\u0162"+
+ "\u0003>\u001f\u0000\u0161\u0160\u0001\u0000\u0000\u0000\u0162\u0163\u0001"+
+ "\u0000\u0000\u0000\u0163\u0161\u0001\u0000\u0000\u0000\u0163\u0164\u0001"+
+ "\u0000\u0000\u0000\u0164\u0165\u0001\u0000\u0000\u0000\u0165\u0166\u0005"+
+ "\u0002\u0000\u0000\u0166=\u0001\u0000\u0000\u0000\u0167\u0169\u0003\u0002"+
+ "\u0001\u0000\u0168\u0167\u0001\u0000\u0000\u0000\u0168\u0169\u0001\u0000"+
+ "\u0000\u0000\u0169\u016a\u0001\u0000\u0000\u0000\u016a\u016c\u0003R)\u0000"+
+ "\u016b\u016d\u0003\u0018\f\u0000\u016c\u016b\u0001\u0000\u0000\u0000\u016c"+
+ "\u016d\u0001\u0000\u0000\u0000\u016d?\u0001\u0000\u0000\u0000\u016e\u0170"+
+ "\u0003\u0002\u0001\u0000\u016f\u016e\u0001\u0000\u0000\u0000\u016f\u0170"+
+ "\u0001\u0000\u0000\u0000\u0170\u0171\u0001\u0000\u0000\u0000\u0171\u0173"+
+ "\u0003P(\u0000\u0172\u0174\u0003B!\u0000\u0173\u0172\u0001\u0000\u0000"+
+ "\u0000\u0173\u0174\u0001\u0000\u0000\u0000\u0174\u0175\u0001\u0000\u0000"+
+ "\u0000\u0175\u0176\u0005\u0003\u0000\u0000\u0176\u0178\u0003F#\u0000\u0177"+
+ "\u0179\u0003\u0018\f\u0000\u0178\u0177\u0001\u0000\u0000\u0000\u0178\u0179"+
+ "\u0001\u0000\u0000\u0000\u0179A\u0001\u0000\u0000\u0000\u017a\u017c\u0005"+
+ "\u0006\u0000\u0000\u017b\u017d\u0003D\"\u0000\u017c\u017b\u0001\u0000"+
+ "\u0000\u0000\u017d\u017e\u0001\u0000\u0000\u0000\u017e\u017c\u0001\u0000"+
+ "\u0000\u0000\u017e\u017f\u0001\u0000\u0000\u0000\u017f\u0180\u0001\u0000"+
+ "\u0000\u0000\u0180\u0181\u0005\u0007\u0000\u0000\u0181C\u0001\u0000\u0000"+
+ "\u0000\u0182\u0184\u0003\u0002\u0001\u0000\u0183\u0182\u0001\u0000\u0000"+
+ "\u0000\u0183\u0184\u0001\u0000\u0000\u0000\u0184\u0185\u0001\u0000\u0000"+
+ "\u0000\u0185\u0186\u0003P(\u0000\u0186\u0187\u0005\u0003\u0000\u0000\u0187"+
+ "\u0189\u0003F#\u0000\u0188\u018a\u0003N\'\u0000\u0189\u0188\u0001\u0000"+
+ "\u0000\u0000\u0189\u018a\u0001\u0000\u0000\u0000\u018a\u018c\u0001\u0000"+
+ "\u0000\u0000\u018b\u018d\u0003\u0018\f\u0000\u018c\u018b\u0001\u0000\u0000"+
+ "\u0000\u018c\u018d\u0001\u0000\u0000\u0000\u018dE\u0001\u0000\u0000\u0000"+
+ "\u018e\u0191\u0003H$\u0000\u018f\u0191\u0003J%\u0000\u0190\u018e\u0001"+
+ "\u0000\u0000\u0000\u0190\u018f\u0001\u0000\u0000\u0000\u0191\u0193\u0001"+
+ "\u0000\u0000\u0000\u0192\u0194\u0003L&\u0000\u0193\u0192\u0001\u0000\u0000"+
+ "\u0000\u0193\u0194\u0001\u0000\u0000\u0000\u0194G\u0001\u0000\u0000\u0000"+
+ "\u0195\u0196\u0003P(\u0000\u0196I\u0001\u0000\u0000\u0000\u0197\u0198"+
+ "\u0005\n\u0000\u0000\u0198\u0199\u0003F#\u0000\u0199\u019a\u0005\u000b"+
+ "\u0000\u0000\u019aK\u0001\u0000\u0000\u0000\u019b\u019c\u0005\f\u0000"+
+ "\u0000\u019cM\u0001\u0000\u0000\u0000\u019d\u019e\u0005\t\u0000\u0000"+
+ "\u019e\u019f\u0003V+\u0000\u019fO\u0001\u0000\u0000\u0000\u01a0\u01a5"+
+ "\u0003R)\u0000\u01a1\u01a5\u0005\u001f\u0000\u0000\u01a2\u01a5\u0005 "+
+ "\u0000\u0000\u01a3\u01a5\u0005!\u0000\u0000\u01a4\u01a0\u0001\u0000\u0000"+
+ "\u0000\u01a4\u01a1\u0001\u0000\u0000\u0000\u01a4\u01a2\u0001\u0000\u0000"+
+ "\u0000\u01a4\u01a3\u0001\u0000\u0000\u0000\u01a5Q\u0001\u0000\u0000\u0000"+
+ "\u01a6\u01a7\u0007\u0001\u0000\u0000\u01a7S\u0001\u0000\u0000\u0000\u01a8"+
+ "\u01a9\u0007\u0002\u0000\u0000\u01a9U\u0001\u0000\u0000\u0000\u01aa\u01b4"+
+ "\u0005#\u0000\u0000\u01ab\u01b4\u0005$\u0000\u0000\u01ac\u01b4\u0005*"+
+ "\u0000\u0000\u01ad\u01b4\u0005+\u0000\u0000\u01ae\u01b4\u0003T*\u0000"+
+ "\u01af\u01b4\u0003`0\u0000\u01b0\u01b4\u0003X,\u0000\u01b1\u01b4\u0003"+
+ "Z-\u0000\u01b2\u01b4\u0003\\.\u0000\u01b3\u01aa\u0001\u0000\u0000\u0000"+
+ "\u01b3\u01ab\u0001\u0000\u0000\u0000\u01b3\u01ac\u0001\u0000\u0000\u0000"+
+ "\u01b3\u01ad\u0001\u0000\u0000\u0000\u01b3\u01ae\u0001\u0000\u0000\u0000"+
+ "\u01b3\u01af\u0001\u0000\u0000\u0000\u01b3\u01b0\u0001\u0000\u0000\u0000"+
+ "\u01b3\u01b1\u0001\u0000\u0000\u0000\u01b3\u01b2\u0001\u0000\u0000\u0000"+
+ "\u01b4W\u0001\u0000\u0000\u0000\u01b5\u01b6\u0003R)\u0000\u01b6Y\u0001"+
+ "\u0000\u0000\u0000\u01b7\u01bb\u0005\n\u0000\u0000\u01b8\u01ba\u0003V"+
+ "+\u0000\u01b9\u01b8\u0001\u0000\u0000\u0000\u01ba\u01bd\u0001\u0000\u0000"+
+ "\u0000\u01bb\u01b9\u0001\u0000\u0000\u0000\u01bb\u01bc\u0001\u0000\u0000"+
+ "\u0000\u01bc\u01be\u0001\u0000\u0000\u0000\u01bd\u01bb\u0001\u0000\u0000"+
+ "\u0000\u01be\u01bf\u0005\u000b\u0000\u0000\u01bf[\u0001\u0000\u0000\u0000"+
+ "\u01c0\u01c4\u0005\u0001\u0000\u0000\u01c1\u01c3\u0003^/\u0000\u01c2\u01c1"+
+ "\u0001\u0000\u0000\u0000\u01c3\u01c6\u0001\u0000\u0000\u0000\u01c4\u01c2"+
+ "\u0001\u0000\u0000\u0000\u01c4\u01c5\u0001\u0000\u0000\u0000\u01c5\u01c7"+
+ "\u0001\u0000\u0000\u0000\u01c6\u01c4\u0001\u0000\u0000\u0000\u01c7\u01c8"+
+ "\u0005\u0002\u0000\u0000\u01c8]\u0001\u0000\u0000\u0000\u01c9\u01ca\u0003"+
+ "P(\u0000\u01ca\u01cb\u0005\u0003\u0000\u0000\u01cb\u01cc\u0003V+\u0000"+
+ "\u01cc_\u0001\u0000\u0000\u0000\u01cd\u01ce\u0005!\u0000\u0000\u01cea"+
+ "\u0001\u0000\u0000\u0000=mov|\u0083\u0096\u009d\u00a4\u00aa\u00b2\u00b7"+
+ "\u00bd\u00c6\u00cb\u00ce\u00d1\u00d4\u00da\u00dd\u00e0\u00e6\u00ec\u00f3"+
+ "\u00f7\u00fc\u00ff\u0102\u0108\u010b\u0111\u0116\u011c\u011f\u0122\u0127"+
+ "\u012a\u012d\u0132\u0135\u013a\u0140\u0146\u0150\u0156\u015b\u0163\u0168"+
+ "\u016c\u016f\u0173\u0178\u017e\u0183\u0189\u018c\u0190\u0193\u01a4\u01b3"+
+ "\u01bb\u01c4";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/java/com/walmartlabs/lacinia/ParseError.java b/java/com/walmartlabs/lacinia/ParseError.java
new file mode 100644
index 00000000..3f352ea7
--- /dev/null
+++ b/java/com/walmartlabs/lacinia/ParseError.java
@@ -0,0 +1,18 @@
+package com.walmartlabs.lacinia;
+
+import clojure.lang.IDeref;
+
+public class ParseError extends RuntimeException implements IDeref {
+ public final Object errors;
+ public final Object tree;
+
+ public ParseError(final Object errors, final Object tree, final String msg) {
+ super(msg);
+ this.errors = errors;
+ this.tree = tree;
+ }
+
+ public Object deref() {
+ return errors;
+ }
+}
diff --git a/resources/com/walmartlabs/lacinia/schema.g4 b/resources/com/walmartlabs/lacinia/GraphqlSchema.g4
similarity index 100%
rename from resources/com/walmartlabs/lacinia/schema.g4
rename to resources/com/walmartlabs/lacinia/GraphqlSchema.g4
diff --git a/src/com/walmartlabs/lacinia/parser/antlr.clj b/src/com/walmartlabs/lacinia/parser/antlr.clj
new file mode 100644
index 00000000..a76a20e4
--- /dev/null
+++ b/src/com/walmartlabs/lacinia/parser/antlr.clj
@@ -0,0 +1,146 @@
+(ns com.walmartlabs.lacinia.parser.antlr
+ "Mostly excerpted from clj-antlr.common"
+ (:require [clojure.string :as string])
+ (:import (com.walmartlabs.lacinia ParseError)
+ (java.util.concurrent ConcurrentHashMap)
+ (org.antlr.v4.runtime ANTLRErrorListener
+ CharStreams CommonTokenStream Lexer Parser
+ RecognitionException)
+ (org.antlr.v4.runtime.tree ParseTree Tree)))
+
+(def ^ConcurrentHashMap fast-keyword-cache
+ "A map of strings to keywords."
+ (ConcurrentHashMap. 1024))
+
+(defn fast-keyword
+ "Like (keyword str), but faster."
+ [s]
+ (or (.get fast-keyword-cache s)
+ (let [k (keyword s)]
+ (if (< 1024 (.size fast-keyword-cache))
+ k
+ (do
+ (.put fast-keyword-cache s k)
+ k)))))
+
+(defn child-count
+ "How many children does a node have?"
+ [^Tree node]
+ (.getChildCount node))
+
+(defn children
+ "Returns the children of a RuleNode."
+ [^Tree node]
+ (map #(.getChild node %)
+ (range (child-count node))))
+
+(defn parser-rule-name
+ "Given a parser and an integer rule index, returns the string name of that
+ rule. Negative indexes map to nil."
+ [^Parser parser ^long index]
+ (when-not (neg? index)
+ (aget (.getRuleNames parser) index)))
+
+(defn parse-error
+ "Constructs a new ParseError exception with a list of errors."
+ [errors tree]
+ (ParseError. errors
+ tree
+ (string/join "\n" (map :message errors))))
+
+(defn recognition-exception->map
+ "Converts a RecognitionException to a nice readable map."
+ [^RecognitionException e]
+ {:rule (.getCtx e)
+ :state (.getOffendingState e)
+ :expected (try (.getExpectedTokens e)
+ (catch IllegalArgumentException _
+ ; I think ANTLR throws here for
+ ; tokenizer errors.
+ nil))
+ :token (.getOffendingToken e)})
+
+(defn error-listener
+ "A stateful error listener which accretes parse errors in a deref-able
+ structure. Deref returns nil if there are no errors; else a sequence of
+ heterogenous maps, depending on what debugging information is available."
+ []
+ (let [errors (atom [])]
+ (reify
+ clojure.lang.IDeref
+ (deref [this] (seq (deref errors)))
+
+ ANTLRErrorListener
+ (reportAmbiguity [this
+ parser
+ dfa
+ start-index
+ stop-idex
+ exact
+ ambig-alts
+ configs]
+ ; TODO
+ )
+
+ (reportAttemptingFullContext [this
+ parser
+ dfa
+ start-index
+ stop-index
+ conflicting-alts
+ configs])
+
+ (reportContextSensitivity [this
+ parser
+ dfa
+ start-index
+ stop-index
+ prediction
+ configs])
+
+ (syntaxError [this
+ recognizer
+ offending-symbol
+ line
+ char
+ message
+ e]
+ (let [err {:symbol offending-symbol
+ :line line
+ :char char
+ :message message}
+ err (if (isa? Parser recognizer)
+ (assoc err :stack (->> ^Parser recognizer
+ .getRuleInvocationStack
+ reverse))
+ err)
+ err (if e
+ (merge err (recognition-exception->map e))
+ err)]
+ (swap! errors conj err))))))
+
+(defprotocol AntlrParser
+ (^Lexer lexer [_ ^CharStream chars])
+ (^Parser parser [_ ^TokenStream lexer])
+ (^ParseTree tree [_ ^Parser parser]))
+
+(defn parse [ap ^String input]
+ (let [error-listener (error-listener)
+
+ lexer (lexer ap (CharStreams/fromString input))
+ _ (doto lexer
+ (.removeErrorListeners)
+ (.addErrorListener error-listener))
+
+ parser (parser ap (CommonTokenStream. lexer))
+ _ (doto parser
+ (.removeErrorListeners)
+ (.addErrorListener error-listener))
+
+ tree (tree ap parser)]
+
+ (when-let [errors @error-listener]
+ (throw (parse-error errors tree)))
+
+ {:tree tree
+ :parser parser}))
diff --git a/src/com/walmartlabs/lacinia/parser/common.clj b/src/com/walmartlabs/lacinia/parser/common.clj
index 06563e91..edad7fb3 100644
--- a/src/com/walmartlabs/lacinia/parser/common.clj
+++ b/src/com/walmartlabs/lacinia/parser/common.clj
@@ -13,15 +13,12 @@
; limitations under the License.
(ns ^:no-doc com.walmartlabs.lacinia.parser.common
- (:require [clj-antlr.proto :as antlr.proto]
- [clj-antlr.common :as antlr.common]
- [clojure.string :as str]
+ (:require [clojure.string :as str]
[com.walmartlabs.lacinia.internal-utils :refer [keepv]]
- [clojure.java.io :as io]
- [clj-antlr.core :as antlr.core])
+ [com.walmartlabs.lacinia.parser.antlr :as antlr])
(:import (org.antlr.v4.runtime.tree ParseTree TerminalNode)
(org.antlr.v4.runtime Parser ParserRuleContext Token)
- (clj_antlr ParseError)))
+ (com.walmartlabs.lacinia ParseError)))
(defn as-map
"Converts a normal Antlr production into a map."
@@ -142,15 +139,15 @@
[^ParseTree t ^Parser p]
(if (instance? ParserRuleContext t)
(let [node (cons (->> (.getRuleIndex ^ParserRuleContext t)
- (antlr.common/parser-rule-name p)
- antlr.common/fast-keyword)
+ (antlr/parser-rule-name p)
+ antlr/fast-keyword)
(keepv (comp
#(attach-location-as-meta t %)
#(traverse % p))
- (antlr.common/children t)))]
+ (antlr/children t)))]
(if-let [e (.exception ^ParserRuleContext t)]
(with-meta (list :clj-antlr/error node)
- {:error (antlr.common/recognition-exception->map e)})
+ {:error (antlr/recognition-exception->map e)})
node))
(let [token-name* (token-name t p)]
@@ -159,8 +156,8 @@
(.getText t))))))
(defn antlr-parse
- [grammar input-document]
- (let [{:keys [tree parser]} (antlr.proto/parse grammar nil input-document)]
+ [ap input]
+ (let [{:keys [tree parser]} (antlr/parse ap input)]
(traverse tree parser)))
(defn parse-failures
@@ -171,10 +168,3 @@
:column column}]
:message message})
errors)))
-
-(defn compile-grammar
- [path]
- (-> path
- io/resource
- slurp
- antlr.core/parser))
diff --git a/src/com/walmartlabs/lacinia/parser/query.clj b/src/com/walmartlabs/lacinia/parser/query.clj
index 29f96fe6..d04684ec 100644
--- a/src/com/walmartlabs/lacinia/parser/query.clj
+++ b/src/com/walmartlabs/lacinia/parser/query.clj
@@ -21,12 +21,12 @@
(:require
#_[io.pedestal.log :as log]
#_[clojure.pprint :as pprint]
+ [com.walmartlabs.lacinia.parser.antlr :refer [AntlrParser]]
[com.walmartlabs.lacinia.parser.common :as common])
(:import
- (clj_antlr ParseError)))
+ (com.walmartlabs.lacinia GraphqlParser GraphqlLexer ParseError)))
-(def ^:private grammar
- (common/compile-grammar "com/walmartlabs/lacinia/Graphql.g4"))
+(set! *warn-on-reflection* true)
(defmulti ^:private xform
"Transform an Antlr production into a result.
@@ -256,9 +256,15 @@
[input]
(xform-query
(try
- (common/antlr-parse grammar input)
+ (let [ap (reify AntlrParser
+ (lexer [_ char-stream]
+ (GraphqlLexer. char-stream))
+ (parser [_ token-stream]
+ (GraphqlParser. token-stream))
+ (tree [_ parser]
+ (.document ^GraphqlParser parser)))]
+ (common/antlr-parse ap input))
(catch ParseError e
(let [failures (common/parse-failures e)]
(throw (ex-info "Failed to parse GraphQL query."
{:errors failures})))))))
-
diff --git a/src/com/walmartlabs/lacinia/parser/schema.clj b/src/com/walmartlabs/lacinia/parser/schema.clj
index 5e62b8cb..a6bd648a 100644
--- a/src/com/walmartlabs/lacinia/parser/schema.clj
+++ b/src/com/walmartlabs/lacinia/parser/schema.clj
@@ -18,23 +18,20 @@
(:require
#_[io.pedestal.log :as log]
[com.walmartlabs.lacinia.internal-utils :refer [remove-vals keepv q qualified-name]]
+ [com.walmartlabs.lacinia.parser.antlr :refer [AntlrParser]]
[com.walmartlabs.lacinia.parser.common :as common]
[com.walmartlabs.lacinia.util :refer [inject-descriptions]]
[com.walmartlabs.lacinia.schema :as schema]
[com.walmartlabs.lacinia.federation :as federation]
[clojure.spec.alpha :as s]
[clojure.string :as str])
- (:import
- (clj_antlr ParseError)))
+ (:import (com.walmartlabs.lacinia GraphqlSchemaLexer GraphqlSchemaParser ParseError)))
;; When using Clojure 1.8, the dependency on clojure-future-spec must be included,
;; and this code will trigger
(when (-> *clojure-version* :minor (< 9))
(require '[clojure.future :refer [simple-keyword?]]))
-(def ^:private grammar
- (common/compile-grammar "com/walmartlabs/lacinia/schema.g4"))
-
(def ^:private extension-meta {:extension true})
(defn ^:private tag
@@ -606,7 +603,14 @@
federation/foundation-types
{})
antlr-tree (try
- (common/antlr-parse grammar schema-string)
+ (let [ap (reify AntlrParser
+ (lexer [_ char-stream]
+ (GraphqlSchemaLexer. char-stream))
+ (parser [_ token-stream]
+ (GraphqlSchemaParser. token-stream))
+ (tree [_ parser]
+ (.graphqlSchema ^GraphqlSchemaParser parser)))]
+ (common/antlr-parse ap schema-string))
(catch ParseError e
(let [failures (common/parse-failures e)]
(throw (ex-info "Failed to parse GraphQL schema."
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlBaseListener.class b/target/classes/com/walmartlabs/lacinia/GraphqlBaseListener.class
new file mode 100644
index 00000000..f0c0018d
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlBaseListener.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlLexer.class b/target/classes/com/walmartlabs/lacinia/GraphqlLexer.class
new file mode 100644
index 00000000..6f68cbab
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlLexer.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlListener.class b/target/classes/com/walmartlabs/lacinia/GraphqlListener.class
new file mode 100644
index 00000000..0c68cc7b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlListener.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$AliasContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$AliasContext.class
new file mode 100644
index 00000000..1c5cecdf
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$AliasContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArgumentContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArgumentContext.class
new file mode 100644
index 00000000..4fc85148
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArgumentContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArgumentsContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArgumentsContext.class
new file mode 100644
index 00000000..f73c1a6c
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArgumentsContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArrayValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArrayValueContext.class
new file mode 100644
index 00000000..3d9ffad4
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ArrayValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$DefaultValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DefaultValueContext.class
new file mode 100644
index 00000000..2e638104
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DefaultValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$DefinitionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DefinitionContext.class
new file mode 100644
index 00000000..f5cf7236
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DefinitionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$DirectiveContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DirectiveContext.class
new file mode 100644
index 00000000..1f5215a1
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DirectiveContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$DirectivesContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DirectivesContext.class
new file mode 100644
index 00000000..86cfa6cb
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DirectivesContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$DocumentContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DocumentContext.class
new file mode 100644
index 00000000..fa0129ad
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$DocumentContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$EnumValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$EnumValueContext.class
new file mode 100644
index 00000000..b4937501
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$EnumValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$FieldContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FieldContext.class
new file mode 100644
index 00000000..8e4511ae
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FieldContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentDefinitionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentDefinitionContext.class
new file mode 100644
index 00000000..6215f31f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentDefinitionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentNameContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentNameContext.class
new file mode 100644
index 00000000..8cbc34cd
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentNameContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentSpreadContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentSpreadContext.class
new file mode 100644
index 00000000..39a908d0
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$FragmentSpreadContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$InlineFragmentContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$InlineFragmentContext.class
new file mode 100644
index 00000000..efa833dc
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$InlineFragmentContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ListTypeContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ListTypeContext.class
new file mode 100644
index 00000000..e874af03
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ListTypeContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$NameContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$NameContext.class
new file mode 100644
index 00000000..279b5a71
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$NameContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$NonNullTypeContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$NonNullTypeContext.class
new file mode 100644
index 00000000..e4438a6b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$NonNullTypeContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ObjectFieldContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ObjectFieldContext.class
new file mode 100644
index 00000000..839da532
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ObjectFieldContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ObjectValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ObjectValueContext.class
new file mode 100644
index 00000000..e81538fb
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ObjectValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$OperationDefinitionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$OperationDefinitionContext.class
new file mode 100644
index 00000000..782b51e8
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$OperationDefinitionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$OperationTypeContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$OperationTypeContext.class
new file mode 100644
index 00000000..902984e2
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$OperationTypeContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$SelectionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$SelectionContext.class
new file mode 100644
index 00000000..3a053a7a
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$SelectionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$SelectionSetContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$SelectionSetContext.class
new file mode 100644
index 00000000..4bb32c69
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$SelectionSetContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeConditionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeConditionContext.class
new file mode 100644
index 00000000..5b766628
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeConditionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeContext.class
new file mode 100644
index 00000000..be7bbc37
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeNameContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeNameContext.class
new file mode 100644
index 00000000..fad8847f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$TypeNameContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$ValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ValueContext.class
new file mode 100644
index 00000000..8c500b30
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$ValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableContext.class
new file mode 100644
index 00000000..2c2489ac
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableDefinitionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableDefinitionContext.class
new file mode 100644
index 00000000..87cc26b4
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableDefinitionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableDefinitionsContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableDefinitionsContext.class
new file mode 100644
index 00000000..50dc7d8f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser$VariableDefinitionsContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlParser.class b/target/classes/com/walmartlabs/lacinia/GraphqlParser.class
new file mode 100644
index 00000000..ee2e1652
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlParser.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaBaseListener.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaBaseListener.class
new file mode 100644
index 00000000..52aaa21b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaBaseListener.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaLexer.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaLexer.class
new file mode 100644
index 00000000..e6b557e8
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaLexer.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaListener.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaListener.class
new file mode 100644
index 00000000..1bc39dd9
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaListener.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$AnyNameContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$AnyNameContext.class
new file mode 100644
index 00000000..902e504d
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$AnyNameContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArgListContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArgListContext.class
new file mode 100644
index 00000000..de36edc9
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArgListContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArgumentContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArgumentContext.class
new file mode 100644
index 00000000..dcb1b6c6
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArgumentContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArrayValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArrayValueContext.class
new file mode 100644
index 00000000..b83fcedb
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ArrayValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$BooleanValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$BooleanValueContext.class
new file mode 100644
index 00000000..231cf203
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$BooleanValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DefaultValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DefaultValueContext.class
new file mode 100644
index 00000000..ddb5c909
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DefaultValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DescriptionContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DescriptionContext.class
new file mode 100644
index 00000000..08883ed6
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DescriptionContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveArgContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveArgContext.class
new file mode 100644
index 00000000..129315a6
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveArgContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveArgListContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveArgListContext.class
new file mode 100644
index 00000000..cc7c39cf
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveArgListContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveContext.class
new file mode 100644
index 00000000..26aad62f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveDefContext.class
new file mode 100644
index 00000000..5df29467
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveListContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveListContext.class
new file mode 100644
index 00000000..c741213b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveListContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveLocationContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveLocationContext.class
new file mode 100644
index 00000000..8c882f15
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveLocationContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveLocationListContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveLocationListContext.class
new file mode 100644
index 00000000..ecac2215
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$DirectiveLocationListContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumDefContext.class
new file mode 100644
index 00000000..e5789b9f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueContext.class
new file mode 100644
index 00000000..293109e5
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueDefContext.class
new file mode 100644
index 00000000..8e020264
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueDefsContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueDefsContext.class
new file mode 100644
index 00000000..a365833b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$EnumValueDefsContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ExecutableDirectiveLocationContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ExecutableDirectiveLocationContext.class
new file mode 100644
index 00000000..b0117ab9
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ExecutableDirectiveLocationContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$FieldDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$FieldDefContext.class
new file mode 100644
index 00000000..df600e05
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$FieldDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$FieldDefsContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$FieldDefsContext.class
new file mode 100644
index 00000000..cddc74d3
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$FieldDefsContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$GraphqlSchemaContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$GraphqlSchemaContext.class
new file mode 100644
index 00000000..8b25045f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$GraphqlSchemaContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ImplementationDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ImplementationDefContext.class
new file mode 100644
index 00000000..0a3a2233
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ImplementationDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputTypeDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputTypeDefContext.class
new file mode 100644
index 00000000..86bcd96d
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputTypeDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputTypeExtDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputTypeExtDefContext.class
new file mode 100644
index 00000000..33314742
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputTypeExtDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputValueDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputValueDefContext.class
new file mode 100644
index 00000000..9f9f0dc0
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputValueDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputValueDefsContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputValueDefsContext.class
new file mode 100644
index 00000000..5c2b1444
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InputValueDefsContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InterfaceDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InterfaceDefContext.class
new file mode 100644
index 00000000..51cde69f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$InterfaceDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ListTypeContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ListTypeContext.class
new file mode 100644
index 00000000..9bbd5d08
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ListTypeContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$MutationOperationDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$MutationOperationDefContext.class
new file mode 100644
index 00000000..bfe02ab8
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$MutationOperationDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$NameTokensContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$NameTokensContext.class
new file mode 100644
index 00000000..8b30ef04
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$NameTokensContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$NullValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$NullValueContext.class
new file mode 100644
index 00000000..c3698efa
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$NullValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ObjectFieldContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ObjectFieldContext.class
new file mode 100644
index 00000000..604ab774
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ObjectFieldContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ObjectValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ObjectValueContext.class
new file mode 100644
index 00000000..4e0995ac
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ObjectValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$OperationTypeDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$OperationTypeDefContext.class
new file mode 100644
index 00000000..f0ba133b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$OperationTypeDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$QueryOperationDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$QueryOperationDefContext.class
new file mode 100644
index 00000000..00a84464
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$QueryOperationDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$RequiredContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$RequiredContext.class
new file mode 100644
index 00000000..19598611
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$RequiredContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ScalarDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ScalarDefContext.class
new file mode 100644
index 00000000..fd80e061
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ScalarDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$SchemaDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$SchemaDefContext.class
new file mode 100644
index 00000000..3075a4d1
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$SchemaDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$SubscriptionOperationDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$SubscriptionOperationDefContext.class
new file mode 100644
index 00000000..5f4f41a5
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$SubscriptionOperationDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeDefContext.class
new file mode 100644
index 00000000..0dc6820b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeExtDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeExtDefContext.class
new file mode 100644
index 00000000..8e6da6c6
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeExtDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeNameContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeNameContext.class
new file mode 100644
index 00000000..6c3fff5f
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeNameContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeSpecContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeSpecContext.class
new file mode 100644
index 00000000..7a7847c4
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeSpecContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeSystemDirectiveLocationContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeSystemDirectiveLocationContext.class
new file mode 100644
index 00000000..1acc11cd
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$TypeSystemDirectiveLocationContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionDefContext.class
new file mode 100644
index 00000000..66572837
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionExtDefContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionExtDefContext.class
new file mode 100644
index 00000000..a98e05b1
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionExtDefContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionTypesContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionTypesContext.class
new file mode 100644
index 00000000..3c62607b
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$UnionTypesContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ValueContext.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ValueContext.class
new file mode 100644
index 00000000..db93acd7
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser$ValueContext.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser.class b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser.class
new file mode 100644
index 00000000..7b08d5d4
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/GraphqlSchemaParser.class differ
diff --git a/target/classes/com/walmartlabs/lacinia/ParseError.class b/target/classes/com/walmartlabs/lacinia/ParseError.class
new file mode 100644
index 00000000..756c8a24
Binary files /dev/null and b/target/classes/com/walmartlabs/lacinia/ParseError.class differ