code: def parse_radix(self, radix, chars, stream):
          
          value = b''
          sign = self.parse_sign(stream)
          self.expect(stream, b(str(radix)) + self.radix_symbole)
          sign *= self.parse_sign(stream)
  
          while not self.has_next(self.radix_symbole, stream):
              next = stream.read(1)
              if not next:
                  self.raise_unexpected_eof(stream)
  
              if next not in chars:
                  self.raise_unexpected(stream, next)
  
              value += next
  
          if not value:
              self.raise_unexpected(stream, self.radix_symbole)
  
          self.expect(stream, self.radix_symbole)
          return sign * int(value, radix)
docs: BinaryNum ::= [+-]? '2' RadixSymbol [0-1]+ RadixSymbol
          OctalChar ::= [+-]? '8' RadixSymbol [0-7]+ RadixSymbol
          HexadecimalNum ::= [+-]? '16' RadixSymbol [0-9a-zA-Z]+ RadixSymbol