Execute Brain****: Difference between revisions

Add Jsish, interpreter fron jsi/tests, Goodbye message bf code from Hello World/text task entry
(Add Jsish, interpreter fron jsi/tests, Goodbye message bf code from Hello World/text task entry)
Line 2,380:
[[/JavaScript|Implementation in JavaScript]].
 
=={{header|Jsish}}==
Part of the Jsi source kit unit tests. bf code from Hello World/text task entry.
 
<lang javascript>/*
* javascript brainf*** interpreter
* by wenxichang@163.com
*/
 
function execute(code)
{
var mem = new Array(30000);
var sp = 10000;
var opcode = new String(code);
var oplen = opcode.length;
var ip = 0;
var loopstack = new Array();
var output = "";
for (var i = 0; i < 30000; ++i) mem[i] = 0;
while (ip < oplen) {
switch(opcode[ip]) {
case '+':
mem[sp]++;
break;
case '-':
mem[sp]--;
break;
case '>':
sp++;
break;
case '<':
sp--;
break;
case '.':
if (mem[sp] != 10 && mem[sp] != 13) {
output = output + Util.fromCharCode(mem[sp]);
} else {
puts(output);
output = "";
}
break;
case ',':
var s = console.input();
if (!s) exit(0);
mem[sp] = s.charCodeAt(0);
break;
case '[':
if (mem[sp]) {
loopstack.push(ip);
} else {
for (var k = ip, j = 0; k < oplen; k++) {
opcode[k] == '[' && j++;
opcode[k] == ']' && j--;
if (j == 0) break;
}
if (j == 0) ip = k;
else {
puts("Unmatched loop");
return false;
}
}
break;
case ']':
ip = loopstack.pop() - 1;
break;
default:
break;
}
ip++;
}
return true;
};
 
execute('\
++++++++++[>+>+++>++++>+++++++>++++++++>+++++++++>++\
++++++++>+++++++++++>++++++++++++<<<<<<<<<-]>>>>+.>>>\
>+..<.<++++++++.>>>+.<<+.<<<<++++.<++.>>>+++++++.>>>.+++.\
<+++++++.--------.<<<<<+.<+++.---.\
');</lang>
 
{{out}}
<pre>prompt$ jsish brainf.jsi
Goodbye, World!
</pre>
 
=={{header|Julia}}==
Anonymous user