ruby r-fxxkがおかしい

けものフレンズBrainfuck言語を使ってみたが、どうも動きがおかしいので調べてみたところrubyのr-fxxkライブラリで入力プログラムに二重ループがある場合何かおかしいようだ。

例えば


0000000000111111
0123456789012345
++[>++[>++<-]<-]
を実行するとハングする。

調べると、
12桁目の閉じカッコが6桁目の開きカッコに飛ぶが、
15桁目の閉じカッコも6桁目に飛んでいる!


/usr/lib/ruby/gems/1.9.1/gems/r-fxxk-0.4.0/lib/r-fxxk.rb



cell[ptr] -= 1
when :put
output << cell[ptr].chr
when :get
when :opn
if cell[ptr] == 0
open_count = 1
buf_cur = cur
while open_count > 0
open_count.times do
next_cur = src.index(self.class.bf_mapping[:cls], buf_cur)
open_count = src[buf_cur+1..next_cur].count(self.class.bf_mapping[:opn])
buf_cur = next_cur
end
end
next_cur = next_cur + 1
end
when :cls
close_count = 1
buf_cur = cur
while close_count > 0
close_count.times do
next_cur = src.rindex(self.class.bf_mapping[:opn], buf_cur)
close_count = src[next_cur..buf_cur-1].count(self.class.bf_mapping[:cls])
buf_cur = next_cur
end
end
end
cur = next_cur || src.index(reg, cur) + matches[1].length
end
output.join
end

class << self
Brainfuck.default_mapping.keys.each do |op|

うーん・・・よくわからん

参考:
けものフレンズ語録から出来たプログラミング言語「Kemono」の使い方 - https://nijipi.com/it-news/kemono-lang_ruby-brainfuck/