# Token:: # Punctuator # Name # IntValue # FloatValue # StringValue # Punctuator:: one of # ! $ ( ) ... : = @ [ ] { | } # Name:: # /[_A-Za-z][_0-9A-Za-z]*/ # Document : # Definition (list) # Definition : # ExecutableDefinition # TypeSystemDefinition # TypeSystemExtension # ExecutableDefinition : # FragmentDefinition # OperationDefintion # FragmentDefinition type someType {  id: ID } fragment subsriberFields on someType {  id  name  fooInt(int: 1234, negInt: -56789, zero: 0)  fooFloat(  float: 1.1  floatExp: 1.4e10  floatExpSign1: 1.4e+10  floatExpSign2: 1.5e-40  floatExpBigE: 1.5E10  )  fooBool(x: true, y: false)  fooString(str: "hello", strUni: "\u2116", strEscWs: "\t")  fooLongStr(  lStr: """  Hello Reader,  This is a long string block.  Best,  Writer  """  )  fooNull(nullThing: null)  fooList(numList: [1, 2, 3], strList: ["a", "b", "c"])  fooObj(someObj: { str: "hi", int: 2 }) } # OperationDefintion query _A1 {  getThings(strArg: "string") {  id # commas here are ignored but valid  name  } } query _A2($x: String) {  someFn(episode: $x) {  name  } } mutation B1 {  changeThings(intArg: 123) {  parent {  nestedField1  nestedField2  }  } } subscription C1_Hello {  subsribePlease(floatArg: 1.4) {  id  ...subsriberFields  } } # TypeSystemDefinition : # SchemaDefinition # TypeDefinition schema {  query: Query  mutation: Mutation } type Query {  """  Can provide documentation this way.  """  scalars: Scalars  someList: SomeLists  fooBar: FooBar } interface Thing {  id: ID! } type Scalars implements Thing {  id: ID!  int: Int!  float: Float!  str: String! @deprecated(reason: "Need to test a directive")  bool: Boolean  type: StringTypes } type SomeLists {  ints: [Int!]! } type Foo {  fooVal: String } type Bar {  barVal: String } union FooBar = Foo | Bar enum StringTypes {  ONE  TWO } input Xyz {  id: ID! } type Mutation {  createXyz(input: xyz!): Xyz! }