class Tina4::GraphQLParser

def parse_definition

def parse_definition
  tok = current
  if tok.nil?
    raise GraphQLError, "Unexpected end of input"
  end
  if tok.type == :keyword && tok.value == "fragment"
    return parse_fragment
  end
  if tok.type == :keyword && (tok.value == "query" || tok.value == "mutation")
    return parse_operation
  end
  # Shorthand query (just a selection set)
  if tok.type == :punct && tok.value == "{"
    return { kind: :operation, operation: :query, name: nil, variables: [], selection_set: parse_selection_set }
  end
  raise GraphQLError, "Unexpected token '#{tok.value}' at position #{tok.pos}"
end