aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/src/translation_unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/src/translation_unit.cpp')
-rw-r--r--c_compiler/src/translation_unit.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/c_compiler/src/translation_unit.cpp b/c_compiler/src/translation_unit.cpp
new file mode 100644
index 0000000..e85237b
--- /dev/null
+++ b/c_compiler/src/translation_unit.cpp
@@ -0,0 +1,37 @@
+#include "ast.hpp"
+
+
+// Translation Unit definition
+
+TranslationUnit::TranslationUnit(Node* decl)
+{
+ push(decl);
+}
+
+void TranslationUnit::print() const
+{
+ for(auto& node : translation_unit) {
+ node->print();
+ }
+}
+
+void TranslationUnit::printxml() const
+{
+ std::cout << "<?xml version=\"1.0\"?>\n<Program>" << std::endl;
+ for(auto& node : translation_unit) {
+ node->printxml();
+ }
+ std::cout << "</Program>" << std::endl;
+}
+
+void TranslationUnit::printasm(VariableStackBindings bindings, int32_t& var_count) const
+{
+ for(auto& node : translation_unit) {
+ node->printasm(bindings, var_count);
+ }
+}
+
+void TranslationUnit::push(Node* decl)
+{
+ translation_unit.push_back(decl);
+}