
Untitled
By: a guest on
May 8th, 2012 | syntax:
Java | size: 1.35 KB | hits: 15 | expires: Never
public class Brainfuck
{
public static void main(String[] args)
{
execute("++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.,.");
}
public static int[] execute(String cmdString)
{
int p = 0;
int[] intArray = new int[30000];
char[] cmd = cmdString.toCharArray();
Scanner sf = new Scanner(System.in);
Stack<Integer> callback = new Stack<Integer>();
long skips = 0;
for (int cmdPointer = 0; cmdPointer < cmd.length; cmdPointer++)
{
if (skips > 0)
{
if (cmd[cmdPointer] == ']')
skips--;
else if (cmd[cmdPointer] == '[')
skips++;
}
else
switch (cmd[cmdPointer])
{
case '>':
++p;
break;
case '<':
--p;
break;
case '+':
++intArray[p];
break;
case '-':
--intArray[p];
break;
case '.':
System.out.print((char) intArray[p]);
break;
case ',':
intArray[p] = sf.next().charAt(0);
break;
case '[':
if (intArray[p] != 0)
callback.push(cmdPointer);
else
skips++;
break;
case ']':
if (!callback.isEmpty())
cmdPointer = callback.pop() - 1;
else
System.err.println("callback stack is empty.");
break;
}
}
return intArray;
}
}