code: func readDigits(s *source.Source, start int, firstCode rune, codeLength int) (int, error) {
  	body := s.Body
  	position := start
  	code := firstCode
  	if code >= '0' && code <= '9' { // 0 - 9
  		for {
  			if code >= '0' && code <= '9' { // 0 - 9
  				position += codeLength
  				code, codeLength = runeAt(body, position)
  				continue
  			} else {
  				break
  			}
  		}
  		return position, nil
  	}
  	var description string
  	description = fmt.Sprintf("Invalid number, expected digit but got: %v.", printCharCode(code))
  	return position, gqlerrors.NewSyntaxError(s, position, description)
  }
docs: // Returns the new position in the source after reading digits.