Advertisement
Guest User

Untitled

a guest
Apr 21st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.33 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define CELL_LENGTH (300)
  5.  
  6. int interpret(char* ip, FILE* ost, FILE* ist)
  7. {
  8.     unsigned char* cells = calloc(CELL_LENGTH, 1);
  9.     unsigned char dp = 0;
  10.     while (*ip)
  11.     {
  12.         switch (*ip++)
  13.         {
  14.         case '>':
  15.             putchar('>');
  16.             ++dp;
  17.             if (dp >= CELL_LENGTH) { return 1; }
  18.             break;
  19.         case '<':
  20.             putchar('<');
  21.             --dp;
  22.             if (dp < 0) { return 2; }
  23.             break;
  24.         case '+':
  25.             putchar('+');
  26.             cells[dp]++;
  27.             break;
  28.         case '-':
  29.             putchar('-');
  30.             cells[dp]--;
  31.             break;
  32.         case '.':
  33.             putchar('.');
  34.             putc(cells[dp], ost);
  35.             break;
  36.         case ',':
  37.             putchar(',');
  38.             cells[dp]=(char)getc(ist);
  39.             break;
  40.         case '[':
  41.             putchar('[');
  42.             if (cells[dp]==0) { while (*ip) { ip++; if (*ip == ']') { break; } } }
  43.             break;
  44.         case ']':
  45.             putchar(']');
  46.             if (cells[dp] != 0) { while (*ip) { ip--; if (*ip == '[') { ip++; break; } } }
  47.             break;
  48.         }
  49.     }
  50.  
  51.     free(cells);
  52.     dp = NULL;
  53.     cells = NULL;
  54.     return 0;
  55. }
  56.  
  57. main() {
  58.     //>+++[<++++++++++>-]<++>++++++++++>>+++[<++++++++++>-]<+++++>++++[>+[>+>+<<-]>>[<<+>>-]<[<<<.<<.>>>>>-]<<<<.>>-]
  59.     //interpret(">+++[<++++++++++>-]<++>++++++++++>>+++[<++++++++++>-]<+++++>++++[>+[>+>+<<-]>>[<<+>>-]<[<<<.<<.>>>>>-]<<<<.>>-]", stdout, stdin);
  60.     printf("\n---\nran with return of %i ", interpret("-[.-]", stdout, stdin));
  61.     getchar();
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement