Guest User

Untitled

a guest
Oct 15th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. function bf (code) {
  2. var codeSize = code.length;
  3. var ip = 0, cp = 0, dp = 0, m = {};
  4.  
  5. var loopIn = {}
  6. , loopOut = {}
  7. , tmp = [];
  8.  
  9. for (cp = 0; cp < codeSize ; cp++)
  10. if (code[cp] == '[') tmp.push(cp);
  11. else if (code[cp] == ']') loopOut[loopIn[cp] = tmp.pop()] = cp;
  12.  
  13. var ops = {
  14. '>': function () { dp++; runNext();}
  15. , '<': function () { dp--; runNext();}
  16. , '+': function () {m[dp] = ((m[dp]||0)+1)&255; runNext();}
  17. , '-': function () {m[dp] = ((m[dp]||0)-1)&255; runNext();}
  18. , '.': function () {console.log(String.fromCharCode(m[dp])); runNext();}
  19. , ',': function () {
  20. console.input(function (data) {
  21. m[dp] = data.charCodeAt(ip++) || 0;
  22. runNext();
  23. });
  24. }
  25. , '[': function () {m[dp]||(cp=loopOut[cp]); runNext();}
  26. , ']': function () {cp = loopIn[cp]-1; runNext();}
  27. };
  28.  
  29. function noop () {}
  30. function runNext () {
  31. cp++;
  32. if (cp < codeSize) {
  33. (ops[code[cp]] || noop)();
  34. }
  35. }
  36. cp = -1;
  37. runNext();
  38. }
Add Comment
Please, Sign In to add comment