Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function bf (code) {
- var codeSize = code.length;
- var ip = 0, cp = 0, dp = 0, m = {};
- var loopIn = {}
- , loopOut = {}
- , tmp = [];
- for (cp = 0; cp < codeSize ; cp++)
- if (code[cp] == '[') tmp.push(cp);
- else if (code[cp] == ']') loopOut[loopIn[cp] = tmp.pop()] = cp;
- var ops = {
- '>': function () { dp++; runNext();}
- , '<': function () { dp--; runNext();}
- , '+': function () {m[dp] = ((m[dp]||0)+1)&255; runNext();}
- , '-': function () {m[dp] = ((m[dp]||0)-1)&255; runNext();}
- , '.': function () {console.log(String.fromCharCode(m[dp])); runNext();}
- , ',': function () {
- console.input(function (data) {
- m[dp] = data.charCodeAt(ip++) || 0;
- runNext();
- });
- }
- , '[': function () {m[dp]||(cp=loopOut[cp]); runNext();}
- , ']': function () {cp = loopIn[cp]-1; runNext();}
- };
- function noop () {}
- function runNext () {
- cp++;
- if (cp < codeSize) {
- (ops[code[cp]] || noop)();
- }
- }
- cp = -1;
- runNext();
- }
Add Comment
Please, Sign In to add comment