From 1ffb788aaa0eea607812dc2941f96b9510e8e339 Mon Sep 17 00:00:00 2001 From: keiju Date: Thu, 30 Jun 2005 10:11:14 +0000 Subject: * lib/irb/ruby-lex.rb (RubyLex::identify_number): alternative implements for [ruby-dev:26410]. And support a numeric form of 0d99999. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ lib/irb/ruby-lex.rb | 23 +++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 08f219aaac..dd7e3a71bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Jun 30 19:00:21 2005 Keiju Ishitsuka + * lib/irb/ruby-lex.rb (RubyLex::identify_number): alternative implements + for [ruby-dev:26410]. And support a numeric form of 0d99999. + Thu Jun 30 17:28:10 2005 Yukihiro Matsumoto * lib/irb/ruby-lex.rb (RubyLex::identify_number): should not treat diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index 4b7ad6a0bf..8068d1c8bb 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -936,23 +936,30 @@ class RubyLex @lex_state = EXPR_END if peek(0) == "0" && peek(1) !~ /[.eE]/ - len0 = true - non_digit = false getc - if /[xX]/ =~ peek(0) + case peek(0) + when /[xX]/ ch = getc match = /[0-9a-fA-F_]/ - elsif /[bB]/ =~ peek(0) + when /[bB]/ ch = getc match = /[01_]/ - elsif /[oO]/ =~ peek(0) + when /[oO]/ ch = getc match = /[0-7_]/ - else + when /[dD]/ + ch = getc + match = /[0-9_]/ + when /[0-7]/ match = /[0-7_]/ - len0 = false + when /[89]/ + RubyLex.fail SyntaxError, "Illegal octal digit" + else + return Token(TkINTEGER) end - + + len0 = true + non_digit = false while ch = getc if match =~ ch if ch == "_" -- cgit v1.2.3