Skip to content

Instantly share code, notes, and snippets.

@Spuffynism
Created December 22, 2017 22:03
Show Gist options
  • Save Spuffynism/ade5b053fff8d4c426d5dc2a72aeb084 to your computer and use it in GitHub Desktop.
Save Spuffynism/ade5b053fff8d4c426d5dc2a72aeb084 to your computer and use it in GitHub Desktop.
Brainfuck Java compiler
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BrainfuckCompiler {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("import java.util.Scanner;\n");
sb.append("public class BrainfuckProgram {\n");
sb.append("public static void main(String[] args) {\n");
sb.append("Scanner sc = new Scanner(System.in);\n");
sb.append("int[] bytes = new int[30000];\n");
sb.append("int ptr = 0;\n");
for (String arg : args) {
for (char c : arg.toCharArray()) {
switch (c) {
case '+':
sb.append("bytes[ptr]++;\n");
break;
case '-':
sb.append("bytes[ptr]--;\n");
break;
case '>':
sb.append("ptr++;\n");
break;
case '<':
sb.append("ptr--;\n");
break;
case '.':
sb.append("System.out.print((char)bytes[ptr]);\n");
break;
case ',':
sb.append("bytes[ptr] = sc.nextByte();\n");
break;
case '[':
sb.append("while (bytes[ptr] != 0){\n");
break;
case ']':
sb.append("}\n");
break;
default:
break;
}
}
}
sb.append("}\n}");
createFile(sb.toString());
}
private static void createFile(String content) {
try {
BufferedWriter bf = new BufferedWriter(new FileWriter("BrainfuckProgram.java"));
bf.write(content);
bf.close();
} catch (IOException ignored) {}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment