All pastes #634608 Raw Edit

Something

public text v1 · immutable
#634608 ·published 2007-07-26 15:16 UTC
rendered paste body
# ----------------------------------------
# Get code from stdin and convert.
# ----------------------------------------
var.def code [io.read];

# -----------------------------------------
# Display C header.
# -----------------------------------------
func.def brainfuck.c.header () { 
 io.write "#include <stdio.h>";
 io.write "int main\(\) \{"; 
 io.write " int x\[32768\], xc;";
 io.write " for\(xc = 0; xc < 32768; xc++\) x\[xc\] = 0; ";
 io.write " xc = 0; ";
}

# ------------------------------------------
# Display C footer. (and close main)
# ------------------------------------------
func.def brainfuck.c.footer () { 
 io.write "\}"; 
}

# ------------------------------------------
# Convert from brainfuck to C code.
# ------------------------------------------
func.def brainfuck.c.code (code) { 
 var.def c [string.len $code] d 1;
 loop.while (<= $d $c) { 
  cond.switch (string [string.right [string.left $code $d] 1]) 
   (string "\+";) { io.write " x\[xc\]++;"; } 
   (string "\-";) { io.write " x\[xc\]--;"  } 
   (string "\.";) { io.write " putchar\(x\[xc\]\);"  } 
   (string "\,";) { io.write " x\[xc\] = getchar\(\);" } 
   (string "\>";) { io.write " xc++;" } 
   (string "\<";) { io.write " xc--;" } 
   (string "\[";) { io.write " while\(x\[xc\] != 0\) \{" } 
   (string "\]";) { io.write " \}" }
  var.def d [++ $d];
 }
}

# ------------------------------------------
# Convert.
# ------------------------------------------
brainfuck.c.header;
brainfuck.c.code $code;
brainfuck.c.footer;