All pastes #785007 Raw Edit

Someone

public java v1 · immutable
·published 2007-11-19 23:48 UTC
rendered paste body
package com.cp.brainfuck;public class BrainfuckThread implements Runnable{    private char[] segments;    private char[] code;    private char[] stack;    private BrainfuckWriter out;    private int stackIndex;    private boolean running;    public BrainfuckThread(char[] code, char[] codeSegments, BrainfuckWriter out)    {        this.segments = codeSegments;        this.code = code;        this.out = out;        stack = new char[32767];    }    public void run()    {        running = true;        for (int index = 0; index < code.length && running; index++)        {            switch (code[index])            {                case '<':                    stackIndex = (stackIndex + (stack.length - 1)) % stack.length;                    break;                case '>':                    stackIndex = (stackIndex + 1) % stack.length;                    break;                case '+':                    stack[stackIndex]++;                    break;                case '-':                    stack[stackIndex]--;                    break;                case '.':                    out.append(stack[stackIndex]);                    break;                case ',':                    // can't do this right now                    // TODO: maybe set up something so the person                    // who started the script can input data ?                    break;                case '[':                    if (stack[stackIndex] == 0)                        index = segments[index];                    break;                case ']':                    index = segments[index] - 1;                    break;                default:                    //ignore            }        }        running = false;    }    public void halt()    {        running = false;    }    public boolean isRunning()    {        return running;    }    public BrainfuckWriter getOutput()    {        return out;    }}