summaryrefslogtreecommitdiffhomepage
path: root/cpp.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp.h')
-rw-r--r--cpp.h58
1 files changed, 32 insertions, 26 deletions
diff --git a/cpp.h b/cpp.h
index 571182a..dfe09ca 100644
--- a/cpp.h
+++ b/cpp.h
@@ -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);
};
+