diff options
author | keiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-06-30 10:11:14 +0000 |
---|---|---|
committer | keiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-06-30 10:11:14 +0000 |
commit | 70ca76ab04140c794a0f5e85f3199b8724ebe3ae (patch) | |
tree | 8b87d94ab615235207646139198e283f83e7773d /lib | |
parent | a9fa5f5a15d191bb2660da6be5ef898191c536d3 (diff) |
* 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/branches/ruby_1_8@8681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/irb/ruby-lex.rb | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index 4b7ad6a0bf..4bfa5f2001 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -936,23 +936,29 @@ 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 == "_" |