summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2020-02-16 16:52:09 +0100
committerRoland Reichwein <mail@reichwein.it>2020-02-16 16:52:09 +0100
commit6340b97a4fc435d838262ed25cee9566fea7da4c (patch)
tree296e968e1545c9f51c0b4d14044a257fe588241f
parent2f4118526972f7f3d5147342bc65909fcc82b6c7 (diff)
Add translation phases stubs
-rw-r--r--cpp.cpp71
-rw-r--r--cpp.h14
2 files changed, 85 insertions, 0 deletions
diff --git a/cpp.cpp b/cpp.cpp
index d9f2efb..54dd0d2 100644
--- a/cpp.cpp
+++ b/cpp.cpp
@@ -1,5 +1,8 @@
#include "cpp.h"
+#include <gtest/gtest.h>
+#include <gmock/gmock.h>
+
void CPP::PreprocessorTokensToTokens(std::vector<Token>& tokens)
{
for (auto& i : tokens) {
@@ -8,3 +11,71 @@ void CPP::PreprocessorTokensToTokens(std::vector<Token>& tokens)
}
}
+// Phase 1: Map physical character set to basic source character set
+void CPP::source_charset_map()
+{
+ // TODO
+}
+
+// Phase 2: Escape backslashed line endings
+void CPP::backslash_escape()
+{
+ // TODO
+}
+
+// Phase 3: Parse preprocessing tokens
+void CPP::preprocessing_tokenize()
+{
+ // TODO
+}
+
+// Phase 4: Preprocessing
+void CPP::preprocess()
+{
+ // TODO
+}
+
+// Phase 5: Map chars and strings to execution charset
+void CPP::execution_charset_map()
+{
+ // TODO
+}
+
+// Phase 6: Concatenate adjacent string literals
+void CPP::concatenate_strings()
+{
+ // TODO
+}
+
+// Phase 7: Create tokens from preprocessing tokens
+void CPP::tokens_from_pptokens()
+{
+}
+
+// Phase 8: Instantiate objects
+void CPP::instantiate()
+{
+}
+
+// Phase 9: Link libraries
+void CPP::link()
+{
+}
+
+// phases of translation, according to standard
+void CPP::translate()
+{
+ source_charset_map();
+ backslash_escape();
+ preprocessing_tokenize();
+ preprocess();
+ execution_charset_map();
+ concatenate_strings();
+ tokens_from_pptokens();
+ instantiate();
+ link();
+}
+
+TEST(Cpp, translate) {
+ CPP::translate();
+}
diff --git a/cpp.h b/cpp.h
index 97eea2c..7bb62c2 100644
--- a/cpp.h
+++ b/cpp.h
@@ -8,4 +8,18 @@ namespace CPP {
void PreprocessorTokensToTokens(std::vector<Token>& tokens);
+// phases of translation, according to standard
+void source_charset_map(); // phase 1
+void backslash_escape(); // phase 2
+void preprocessing_tokenize(); // phase 3
+void preprocess(); // phase 4
+void execution_charset_map(); // phase 5
+void concatenate_strings(); // phase 6
+void tokens_from_pptokens(); // phase 7
+void instantiate(); // phase 8
+void link(); // phase 9
+
+// all phases of translation
+void translate();
+
}