unfuck
Version:
A brainfuck to Javascript compiler with optimizations.
31 lines (28 loc) • 759 B
JavaScript
var valid = [
'+','-','>','<','[',']','.',','
]
function prepare ( settings, bf ) {
var program = bf.split('').filter(x => valid.indexOf(x) > -1).join('');
if (program[0] === "[") {
var i = 0;
var length = 0;
var prev = 0;
var open = 1;
while (open > 0) {
for (let j = (i + 1); program[j] !== ']' && j < program.length; j++) {
if (program[j] == "[") open++;
length++;
}
i += (length - prev) + 1
prev = ((length - prev) + 1) + prev
open--;
length++;
}
if (length >= program.length) {
throw new BrainfuckError(program, {start: 0, end: 1}, 'Comment loop is never closed!')
}
program = program.slice(length+1);
}
return program;
}
module.exports = prepare;