docs: public Token scanNumber() {
          int length = 0;
          if ('-' == charAt(offset + length)) {
              length++;
          }
          length += getDigitalLength(offset + length);
          boolean isFloat = false;
          if ('.' == charAt(offset + length)) {
              isFloat = true;
              length++;
              length += getDigitalLength(offset + length);
          }
          if (isScientificNotation(offset + length)) {
              isFloat = true;
              length++;
              if ('+' == charAt(offset + length) || '-' == charAt(offset + length)) {
                  length++;
              }
              length += getDigitalLength(offset + length);
          }
          if (isBinaryNumber(offset + length)) {
              isFloat = true;
              length++;
          }
          return new Token(isFloat ? Literals.FLOAT : Literals.INT, input.substring(offset, offset + length), offset + length);
      }