/* ** Yab2Cpp ** ** Transpiler by Samuel D. Crow ** ** Based on Yab ** */ #include "yab2cpp.h" /* base class of all the code structure types */ codeType::codeType(enum CODES t) { this->id= ++nextID; nesting.push_back(this); this->type=t; } codeType *codeType::getCurrent() { return nesting.back; } void codeType::close() { nesting.pop_back(); } /* label definitions and helper routines */ label *label::find(string &s) { auto ret=lookup.find(s); return(ret==lookup.end()?NULL:ret->second); } void label::dumpLabels(ostream &v) { v << "Global Labels\n\n"; for(auto iter=lookup.begin(); iter!=lookup.end(); ++iter) { v << "label " << iter->first << " has ID " << iter->second->getID() << "\n" ; } v << endl; } void label::generateJumpTo(ostream &out) { out << "state=" << this->getID() << ";\nbreak;\n"; } void label::generateOnNSkip(ostream &k, list