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]);