#include #include #include unsigned char tape[30000] = {0}; unsigned char* ptr = tape; 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 == '>') { ++ptr; } else if (current_char == '<') { --ptr; } else if (current_char == '+') { ++*ptr; } else if (current_char == '-') { --*ptr; } else if (current_char == '.' ) { putchar(*ptr); } else if (current_char == ',') { *ptr = getchar(); } else if (current_char == '[') { continue; } else if (current_char == ']' && *ptr) { loop = 1; while (loop > 0) { current_char = input[--i]; if (current_char == '[') { loop--; } else if (current_char == ']') { loop++; } } } } } int main() { interpret(",[.[-],]"); // outputs input return 0; }