From: "ko1 (Koichi Sasada)" Date: 2012-04-09T14:20:20+09:00 Subject: [ruby-core:44212] [ruby-trunk - Bug #6211] Ripper lexes :on_rbrace when it should find :on_embexpr_end Issue #6211 has been updated by ko1 (Koichi Sasada). Category set to ext Assignee set to nobu (Nobuyoshi Nakada) ---------------------------------------- Bug #6211: Ripper lexes :on_rbrace when it should find :on_embexpr_end https://bugs.ruby-lang.org/issues/6211#change-25738 Author: turboladen (Steve Loveless) Status: Open Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: ext Target version: ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin11.3.0] =begin 1.9.3-p125 :001 > require 'ripper' => true 1.9.3-p125 :002 > Ripper.lex %Q{`\#{cmd}`} => [[[1, 0], :on_backtick, "`"], [[1, 1], :on_embexpr_beg, "\#{"], [[1, 3], :on_ident, "cmd"], [[1, 6], :on_rbrace, "}"], [[1, 7], :on_tstring_end, "`"]] I'd expect (({[[1, 6], :on_rbrace, "}"]})) to be (({[[1, 6], :on_embexpr_end, "}"]})). I also just noticed that there's similar behavior with backticks--the first gets parsed as such, but the last gets parsed as (({:on_tstring_end})). This seems less obvious/important (?) compared to the embexpr stuff, as the type of embexpr tokens imply a beg & end; backticks don't imply beg & end, but, all the same, feel inconsistent. =end -- http://bugs.ruby-lang.org/