#include "types.h" #include #include #include #include /// < Move pointer left /// > Move pointer right /// + Increment cell by one /// - Decrement cell by one /// [ Jump past the matching ] if the cell at the pointer is 0 /// ] Jump back to the matching [ if the cell at the pointer is nonzero /// . Output ascii at current cell /// , Input ascii into current cell /// * Allocate new tape size of current cell and replace with pointer /// ! Free allocated pointer in current cell /// ( Go to tape at pointer in current cell /// ) Leave tape last entered /// ` Output null terminated string at current cell /// ~ Input string into current cells with max length in current cell /// % Clear screen /// $ Set n cells to 0 where n is the count of the current cell int main(int argc, char** argv) { FILE* file; if (argc == 1) { file = stdin; } else if (argc == 2) { file = fopen (argv[1], "r"); if (file == NULL) { printf("error: failed to open %s (%s)\n", argv[1], strerror(errno)); exit(EXIT_FAILURE); } } else { printf("usage: brainfucked infile\n"); return EXIT_FAILURE; } Program program; program_init(&program, file); interpret(&program); program_free(&program); return EXIT_SUCCESS; }