けいじゅ@いしつかです.

In [ruby-dev:26412] the message: "[ruby-dev:26412] Re: irbのlexerが数
値認識に失敗", on Jun/30 17:30(JST) 

>まつもと ゆきひろです
>そのようですね。直しておきます。

あれま. 一足遅かった...

松本さんのだと, 09などがエラーにならないので, 以下のパッチではいかがで
しょう? 

# ついでに 0d9999 も対応しています.

-- patched by matz
  def identify_number
    @lex_state = EXPR_END

    if peek(0) == "0" && peek(1) !~ /[.eE]/
      len0 = true
      non_digit = false
      getc
      if /[xX]/ =~ peek(0)
	ch = getc
	match = /[0-9a-fA-F_]/
      elsif /[bB]/ =~ peek(0)
	ch = getc
	match = /[01_]/
      elsif /[oO]/ =~ peek(0)
	ch = getc
	match = /[0-7_]/
      else
	match = /[0-7_]/
        len0 = false
      end

      while ch = getc
	if match =~ ch
	  if ch == "_"

-- patched by keiju
  def identify_number
    @lex_state = EXPR_END

    if peek(0) == "0" && peek(1) !~ /[.eE]/
      getc
      case peek(0)
      when /[xX]/
	ch = getc
	match = /[0-9a-fA-F_]/
      when /[bB]/
	ch = getc
	match = /[01_]/
      when /[oO]/
	ch = getc
	match = /[0-7_]/
      when /[dD]/
	ch = getc
	match = /[0-9_]/
      when /[0-7]/
	match = /[0-7_]/
      when /[89]/
	RubyLex.fail SyntaxError, "Illegal octal digit"
      else 
	return Token(TkINTEGER)
      end
      
      len0 = true
      non_digit = false
      while ch = getc



__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju / ishitsuka.com <<---