diff options
Diffstat (limited to 'cpp.h')
-rw-r--r-- | cpp.h | 58 |
1 files changed, 32 insertions, 26 deletions
@@ -9,31 +9,37 @@ class CPP { public: -CPP(); -~CPP(); - -std::string valueOfNode(index_t node_index, const std::vector<Gram::TreeNode>& Tree); - -// phases of translation, according to standard -void source_charset_map(); // phase 1 -void backslash_escape(); // phase 2 -std::vector<Token> 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<Token> tokens_from_pptokens(const std::vector<Token>& pp_tokens); // phase 7.a -std::vector<Gram::TreeNode> analysis(const std::vector<Token>&); // phase 7.b -void translate(const std::vector<Gram::TreeNode>& tree); // phase 7.c -void instantiate(); // phase 8 -void link(); // phase 9 - -// all phases of translation -void compile(const std::string& code); - -std::vector<uint8_t> getCode(); -std::vector<uint8_t> getData(); - + CPP(); + ~CPP(); + + std::string valueOfNode(index_t node_index, const std::vector<Gram::TreeNode>& Tree); + + // phases of translation, according to standard + void source_charset_map(); // phase 1 + void backslash_escape(); // phase 2 + std::vector<Token> 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<Token> tokens_from_pptokens(const std::vector<Token>& pp_tokens); // phase 7.a + std::vector<Gram::TreeNode> analysis(const std::vector<Token>&); // phase 7.b + void translate(); // phase 7.c + void instantiate(); // phase 8 + void link(); // phase 9 + + // all phases of translation + void compile(const std::string& code); + + std::vector<uint8_t> getCode(); + std::vector<uint8_t> getData(); + + typedef std::unordered_map<std::string, std::function<void()>> map_type; + private: - std::string m_code; - std::vector<Token> m_charTokens; + std::string m_code; // input / start + std::vector<Token> m_charTokens; // result of phase 3 + std::vector<Gram::TreeNode> m_nodes; // result of phase 7.b + + void traverse(index_t node_id, map_type& map); }; + |