Skip to content

Instantly share code, notes, and snippets.

@amasad
Created May 30, 2012 07:51
Show Gist options
  • Save amasad/2834420 to your computer and use it in GitHub Desktop.
Save amasad/2834420 to your computer and use it in GitHub Desktop.
function bf (code) {
var codeSize = code.length;
var i = 0, ip = 0, cp = 0, dp = 0, m = {};
var loopIn = {}, loopOut = {};
var tmp = [];
for ( var cp = 0; cp < codeSize ; cp++ )
if ( code[cp] == '[' )
tmp.push(cp);
else
if ( code[cp] == ']' )
loopOut[loopIn[cp] = tmp.pop()] = cp;
for (var cp = 0; cp < codeSize && i < 100000; cp++, i++) {
switch(code[cp]) {
case '>': dp++; break;
case '<': dp--; break;
case '+': m[dp] = ((m[dp]||0)+1)&255; break
case '-': m[dp] = ((m[dp]||0)-1)&255; break;
case '.': console.log(String.fromCharCode(m[dp])); break;
case ',': m[dp] = prompt('input').charCodeAt(ip++)||0; break;
case '[': m[dp]||(cp=loopOut[cp]); break;
case ']': cp = loopIn[cp]-1; break;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment