#include #include "BFTranslator.h" BFTranslator::BFTranslator() { _map['+'] = "(*p)++;"; _map['-'] = "(*p)--;"; _map['>'] = "p++;"; _map['<'] = "p--;"; _map['.'] = "putchar(*p);"; _map[','] = "*p=getchar();"; _map['['] = "while(*p){"; _map[']'] = "}"; } BFTranslator::BFTranslator( const BFTranslator &t ) { this->_map = t._map; } BFTranslator::~BFTranslator() { } BFTranslator &BFTranslator::operator= ( const BFTranslator &t ) { if (this != &t) this->_map = t._map; return *this; } bool BFTranslator::translate( std::string in, std::string out ) { if (this->openFile(in, out)) return true; return false; } bool BFTranslator::openFile( std::string in, std::string out ) { std::ifstream inStream; std::ofstream outStream; char c = 0; inStream.open(in.c_str(), std::ios_base::in); outStream.open(out.c_str(), std::ios_base::out); if (inStream.fail() || outStream.fail()) return false; outStream << "#include" << std::endl; outStream << "int main(){char m[60000]={0};char *p=m;"; while (!inStream.eof()) { inStream.get(c); outStream << _map[c]; } outStream << "}"; inStream.close(); outStream.close(); return true; }