#pragma once #include "grammer.h" #include "minicc.h" #include class CPP { public: CPP(); ~CPP(); std::string valueOfNode(index_t node_index, const std::vector& Tree); // phases of translation, according to standard void source_charset_map(); // phase 1 void backslash_escape(); // phase 2 std::pair> preprocessing_tokenize(const std::string& s); // phase 3 void preprocess(); // phase 4 void execution_charset_map(); // phase 5 void concatenate_strings(); // phase 6 std::vector tokens_from_pptokens(std::pair> Tree); // phase 7.a std::pair> analysis(std::vector); // phase 7.b void translate(); // phase 7.c void instantiate(); // phase 8 void link(); // phase 9 // all phases of translation void translate(const std::string& code); private: std::string m_code; std::vector m_charTokens; };