自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
January 13, 2007 [おもひで]
■ [Ruby] RubyLexでパースに失敗
Ruby-GetText-Packageでは、rgettextでrubyのソースファイルからmsgidを抜け出すときにRubyLexを使っているんだけど、rubyのソースファイルに"#{Time.now.strftime("%m/%d")"}"という記述があるとSyntaxErrorになるという報告があった。
以下のようにすると再現する。
% ruby -d -rirb/ruby-lex -e 'RubyLex.new.lex'
"#{Time.now.strftime("%m/%d")}Exception `Interrupt' at /usr/lib/ruby/1.8/irb/ruby-lex.rb:85 -
/usr/lib/ruby/1.8/irb/ruby-lex.rb:85:in `gets': Interrupt
from /usr/lib/ruby/1.8/irb/ruby-lex.rb:85:in `set_input'
from /usr/lib/ruby/1.8/irb/ruby-lex.rb:189:in `call'
from /usr/lib/ruby/1.8/irb/ruby-lex.rb:189:in `buf_input'
from /usr/lib/ruby/1.8/irb/ruby-lex.rb:104:in `getc'
from /usr/lib/ruby/1.8/irb/slex.rb:206:in `match_io'
from /usr/lib/ruby/1.8/irb/slex.rb:76:in `match'
from /usr/lib/ruby/1.8/irb/ruby-lex.rb:287:in `token'
from /usr/lib/ruby/1.8/irb/ruby-lex.rb:263:in `lex'
from -e:1
RubyLexのバグっぽかったので念のためruby-devに報告してみた。ruby-devにメールをしたのはひさしぶりでちょっと緊張した(苦笑)。
■ [Ruby] RubyLexでパースに失敗(2)
バグなんだけど直らないらしい。ripper使ってはどうか、ということなんだけど、ダブルクオートをシングルクオートに直せば動くので、まぁ、使う際に気をつけてもらうことにするかな・・・。
[ツッコミを入れる]
