Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define CELL_LENGTH (300)
- int interpret(char* ip, FILE* ost, FILE* ist)
- {
- unsigned char* cells = calloc(CELL_LENGTH, 1);
- unsigned char dp = 0;
- while (*ip)
- {
- switch (*ip++)
- {
- case '>':
- putchar('>');
- ++dp;
- if (dp >= CELL_LENGTH) { return 1; }
- break;
- case '<':
- putchar('<');
- --dp;
- if (dp < 0) { return 2; }
- break;
- case '+':
- putchar('+');
- cells[dp]++;
- break;
- case '-':
- putchar('-');
- cells[dp]--;
- break;
- case '.':
- putchar('.');
- putc(cells[dp], ost);
- break;
- case ',':
- putchar(',');
- cells[dp]=(char)getc(ist);
- break;
- case '[':
- putchar('[');
- if (cells[dp]==0) { while (*ip) { ip++; if (*ip == ']') { break; } } }
- break;
- case ']':
- putchar(']');
- if (cells[dp] != 0) { while (*ip) { ip--; if (*ip == '[') { ip++; break; } } }
- break;
- }
- }
- free(cells);
- dp = NULL;
- cells = NULL;
- return 0;
- }
- main() {
- //>+++[<++++++++++>-]<++>++++++++++>>+++[<++++++++++>-]<+++++>++++[>+[>+>+<<-]>>[<<+>>-]<[<<<.<<.>>>>>-]<<<<.>>-]
- //interpret(">+++[<++++++++++>-]<++>++++++++++>>+++[<++++++++++>-]<+++++>++++[>+[>+>+<<-]>>[<<+>>-]<[<<<.<<.>>>>>-]<<<<.>>-]", stdout, stdin);
- printf("\n---\nran with return of %i ", interpret("-[.-]", stdout, stdin));
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement