Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <iostream>
- #include <fstream>
- using namespace std;
- int main(int argc, char* argv[])
- {
- string inData;
- if (argc == 2)
- {
- string codeFile = argv[1];
- ifstream file(codeFile, ios::in);
- char buff;
- while (file >> buff)
- inData += buff;
- file.close();
- }
- else
- {
- inData = "++++[>++++[>++++<-]<-]>>.";
- }
- vector<unsigned char> memory;
- size_t memory_limit = 30000;
- memory.reserve(memory_limit);
- for (int i = 0; i < memory_limit; i++)
- memory.push_back(0);
- vector<unsigned char>::iterator pointer = memory.begin();
- vector<string::iterator> loopPosition;
- for (string::iterator buffer = inData.begin(); buffer != inData.end(); ++buffer)
- {
- switch (*buffer)
- {
- case '>':
- ++pointer;
- break;
- case '<':
- --pointer;
- break;
- case '+':
- ++(*pointer);
- break;
- case '-':
- --(*pointer);
- break;
- case '[':
- if (*pointer)
- {
- loopPosition.push_back(buffer);
- }
- else
- {
- while (*buffer != ']')
- ++buffer;
- }
- break;
- case ']':
- if (*pointer)
- {
- buffer = loopPosition.back();
- }
- else
- {
- loopPosition.pop_back();
- }
- break;
- case '.':
- cout << *pointer;
- break;
- case ',':
- cin >> *pointer;
- break;
- default:
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement