JSFiddle - React, Tailwind, and code Playground

by mcsf

JavaScript

string = ".+.>++<+++>,<";

reg = [0];
ptr = 0;
whi = null;

Array.from(string).forEach(char => {
  if (whi) {
    whi.push(char);
  }
  
	switch (char) {  
  	case '+':
    	reg[ptr]++;
      break;
      
		case '-':
    	reg[ptr]--;
      break;
      
		case '>':
    	ptr++;
      if (reg[ptr] === undefined) {
      	console.log('alloc', ptr);
        reg[ptr] = 0;
      }
      break;
      
		case '<':
    	if (ptr === 0) {
      	throw new Error('Negative pointer');
      }
    	ptr--;
      break;
    	
  	case '.':
    	console.log(reg[ptr]);
      break;
      
		case ',':
    	reg[ptr] = Number(prompt());
      break;
      
		case '[':
    	if (whi) {
      	throw new Error('Nested loop');
      }
      if (reg[ptr]) {
      
      }
    	whi = [];
      break;
  }
})

console.log('End:', reg);
console.log('Cur:', reg[ptr]);