js.bml[1] = 'BF->JS compiler'

#3981Bookmarklet版。
投稿するつもりで書いたものの,長くなりすぎて見苦しいのでここへ。

javascript:s='',o={'>':'m[p+=1]|=0;','<':'m[p-=1]|=0;','+':'m[p]=m[p]+1&255;','-':'m[p]=m[p]-1&255;',',':'m[p]=get().charCodeAt()&255;','.':'put(c(m[p]));','[':'while(m[p]){',']':'}'},b=document.body;(b.innerText||b.textContent).replace(/>+|<+|\++|-+|[,.[\]]/g,function($){s+=(l=$.length)>1?o[$.charAt()].replace(1,l):o[$]});'<textarea id=X cols=50 rows=20>'+eval('0,function(get,put){var m=[0],p=0,c=String.fromCharCode;'+s+'return [m, p]}')+'</textarea><button onclick=\'x=X.value,X.value="",I=[],eval("0,"+x)(function(){while(!I[0])I=prompt("stdin",I.join("")).split("");return I.shift()},function($){X.value+=$})\'>Run</button>'
// 07/11/20 修正:
// * バイト列のエミュレーション (&255)
// * 終了状態を返す (return [m, p])

body内をBFコードとみなしてコンパイルし,textareaに出力。buttonを押すと実行。
Firefoxだと生成したコードをちゃんと整形してくれるのが素晴らしい。