KarleFKremen

BrainFuck interpreter

Apr 1st, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. static char cpu[300000];
  8.  
  9. int main(int argc, char **argv)
  10. {
  11.  
  12.     vector<char> acc;
  13.     char ch;
  14.     ifstream infile(argv[1]);
  15.     while(infile)
  16.     {
  17.         infile.get(ch);
  18.         acc.push_back(ch);
  19.     }
  20.     infile.close();
  21.     unsigned int j = 0;
  22.     int brc = 0;
  23.     for(int i = 0; i < acc.size(); ++i)
  24.     {
  25.         if(acc[i] == '>') j++;
  26.         if(acc[i] == '<') j--;
  27.         if(acc[i] == '+') cpu[j]++;
  28.         if(acc[i] == '-') cpu[j]--;
  29.         if(acc[i] == '.') cout << cpu[j];
  30.         if(acc[i] == ',') cin >> cpu[j];
  31.         if(acc[i] == '[')
  32.         {
  33.             if(!cpu[j])
  34.             {
  35.                 ++brc;
  36.                 while(brc)
  37.                 {
  38.                     ++i;
  39.                     if (acc[i] == '[') ++brc;
  40.                     if (acc[i] == ']') --brc;
  41.                 }
  42.             }
  43.             else continue;
  44.         }
  45.         else if(acc[i] == ']')
  46.         {
  47.             if(!cpu[j])
  48.             {
  49.                 continue;
  50.             }
  51.             else
  52.             {
  53.                 if(acc[i] == ']') brc++;
  54.                 while(brc)
  55.                 {
  56.                     --i;
  57.                     if(acc[i] == '[') brc--;
  58.                     if(acc[i] == ']') brc++;
  59.                 }
  60.                 --i;
  61.             }
  62.         }
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment