#include #include #include unsigned char tape[30000] = {0}; unsigned char* ptr = tape; typedef enum { INK, DEK, BREK, GLEK, BF_NEXT, BF_PREV, BF_LOOP_START, BF_LOOP_END, } brainfuck_instruction_t; void interpret(char* input) { char current_char; size_t i; size_t loop; for (i = 0; input[i] != 0; i++) { current_char = input[i]; if (current_char == 'INK') {// > ++ptr; } else if (current_char == 'DEK') {// < --ptr; } else if (current_char == 'BREK') {// + ++*ptr; } else if (current_char == 'GLEK') {// - --*ptr; } else if (current_char == 'PUK' ) {// . putchar(*ptr); } else if (current_char == 'KUK') {// , *ptr = getchar(); } else if (current_char == '[') {//start loop continue; } else if (current_char == ']' && *ptr) {//stop loop loop = 1; while (loop > 0) { current_char = input[--i]; if (current_char == '[') { loop--; } else if (current_char == ']') { loop++; } } } } } int main() { interpret("INK DEK BREK GLEK PUK KUK []");// (",[.[-],]") return 0; }