aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/primitives.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/include/primitives.hpp')
-rw-r--r--c_compiler/include/primitives.hpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/c_compiler/include/primitives.hpp b/c_compiler/include/primitives.hpp
new file mode 100644
index 0000000..2eeaa19
--- /dev/null
+++ b/c_compiler/include/primitives.hpp
@@ -0,0 +1,40 @@
+#ifndef AST_PRIMITIVES_HPP
+#define AST_PRIMITIVES_HPP
+
+#include "ast.hpp"
+
+#include <string>
+
+class Variable : public Base {
+private:
+ std::string id;
+public:
+ Variable(const std::string& _id) : id(_id) {}
+
+ virtual void print() const {
+ std::cout << "<Variable id=\"" << id << "\" />" << std::endl;
+ }
+
+ virtual void push(const Base* var) const {
+ std::cerr << "Error: Can't call this function on this class" << std::endl;
+ (void)var;
+ }
+};
+
+class Parameter : public Base {
+private:
+ std::string id;
+public:
+ Parameter(const std::string& _id) : id(_id) {}
+
+ virtual void print() const {
+ std::cout << "<Parameter id=\"" << id << "\" />" << std::endl;
+ }
+
+ virtual void push(const Base* var) const {
+ std::cerr << "Error: Can't call this function on this class" << std::endl;
+ (void)var;
+ }
+};
+
+#endif