diff options
author | keiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-23 08:35:22 +0000 |
---|---|---|
committer | keiju <keiju@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-23 08:35:22 +0000 |
commit | f984a4d8476c8e1349caed98379843d1268bb069 (patch) | |
tree | fd228ae79d707658d0c316136895c12e5eaaedcf | |
parent | dac591d01b0f6f85003b0268119da1d3df8527b5 (diff) | |
download | ruby-f984a4d8476c8e1349caed98379843d1268bb069.tar.gz |
* lib/irb/ruby-lex.rb: make irb be able to parse
string_dvar. [ruby-core: 24051]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | lib/irb/ruby-lex.rb | 38 |
2 files changed, 44 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Thu Jul 23 17:31:02 2009 Keiju Ishitsuka <keiju@ruby-lang.org> + + * lib/irb/ruby-lex.rb: make irb be able to parse + string_dvar. [ruby-core: 24051] + Thu Jul 23 17:26:51 2009 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp> * ext/tk/extconf.rb: should not create "config_list" in a $srcdir. @@ -89,7 +94,7 @@ Wed Jul 22 06:35:56 2009 Yukihiro Matsumoto <matz@ruby-lang.org> * test/ruby/test_enum.rb (TestEnumerable#each): recursive join now raises ArgumentError. -Wed Jul 22 02:33:57 2009 Keiju Ishitsuka <keiju@emperor2.pendome> +Wed Jul 22 02:33:57 2009 Keiju Ishitsuka <keiju@ruby-lang.org> * lib/irb.rb: forget svn commit. diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb index b36629b38e..c758f1dcf2 100644 --- a/lib/irb/ruby-lex.rb +++ b/lib/irb/ruby-lex.rb @@ -1047,6 +1047,8 @@ class RubyLex while ch = getc if @quoted == ch and nest == 0 break + elsif ch == "#" and peek(0) == "{" + identify_string_dvar elsif @ltype != "'" && @ltype != "]" && @ltype != ":" and ch == "#" subtype = true elsif ch == '\\' and @ltype == "'" #' @@ -1083,6 +1085,42 @@ class RubyLex end end + def identify_string_dvar + begin + getc + + reserve_continue = @continue + reserve_ltype = @ltype + reserve_indent = @indent + reserve_indent_stack = @indent_stack + reserve_state = @lex_state + reserve_quoted = @quoted + + @ltype = nil + @quoted = nil + @indent = 0 + @indent_stack = [] + @lex_state = EXPR_BEG + + loop do + @continue = false + prompt + tk = token + if @ltype or @continue or @indent > 0 + next + end + break if tk.kind_of?(TkRBRACE) + end + ensure + @continue = reserve_continue + @ltype = reserve_ltype + @indent = reserve_indent + @indent_stack = reserve_indent_stack + @lex_state = reserve_state + @quoted = reserve_quoted + end + end + def identify_comment @ltype = "#" |