parse_number (RubyLexer)

    # File lib/ruby_lexer.rb, line 235
      def parse_number
        self.lex_state = :expr_end

        case
        when src.scan(/[+-]?0[xbd]\b/) then
          rb_compile_error "Invalid numeric format"
        when src.scan(/[+-]?0x[a-f0-9_]+/i) then
          int_with_base(16)
        when src.scan(/[+-]?0b[01_]+/) then
          int_with_base(2)
        when src.scan(/[+-]?0d[0-9_]+/) then
          int_with_base(10)
        when src.scan(/[+-]?0[Oo]?[0-7_]*[89]/) then
          rb_compile_error "Illegal octal digit."
        when src.scan(/[+-]?0[Oo]?[0-7_]+|0[Oo]/) then
          int_with_base(8)
        when src.scan(/[+-]?[\d_]+_(e|\.)/) then
          rb_compile_error "Trailing '_' in number."
        when src.scan(/[+-]?[\d_]+\.[\d_]+(e[+-]?[\d_]+)?\b|[+-]?[\d_]+e[+-]?[\d_]+\b/i) then
          number = src.matched
          if number =~ /__/ then
            rb_compile_error "Invalid numeric format"
          end
          self.yacc_value = number.to_f
          :tFLOAT
        when src.scan(/[+-]?0\b/) then
          int_with_base(10)
        when src.scan(/[+-]?[\d_]+\b/) then
          int_with_base(10)
        else
          rb_compile_error "Bad number format"
        end
      end