aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/function.hpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-02 23:22:51 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-02 23:22:51 +0000
commit446c2394ec8970198d645bbbb462c67b9e3f1b1e (patch)
treefc85d32c2b68efa80910d0a4ce4c1bed78ec4717 /c_compiler/include/function.hpp
parent34d69709e621b9609833a3d6bae31195b425f2f8 (diff)
downloadCompiler-446c2394ec8970198d645bbbb462c67b9e3f1b1e.tar.gz
Compiler-446c2394ec8970198d645bbbb462c67b9e3f1b1e.zip
Changing ast structure again
Diffstat (limited to 'c_compiler/include/function.hpp')
-rw-r--r--c_compiler/include/function.hpp46
1 files changed, 12 insertions, 34 deletions
diff --git a/c_compiler/include/function.hpp b/c_compiler/include/function.hpp
index 6fbcdee..955420d 100644
--- a/c_compiler/include/function.hpp
+++ b/c_compiler/include/function.hpp
@@ -3,51 +3,29 @@
#include "ast.hpp"
-#include <string>
-#include <iostream>
-class Function : public Base {
-private:
+class Function : public BaseNode {
+protected:
std::string id;
- const Base* param;
- const Base* comp_statement;
+
public:
- Function(const std::string& _id, const Base* _param, const Base* _comp_statement) :
- id(_id), param(_param), comp_statement(_comp_statement) {}
+ Function(const std::string& _id, const BaseList* _param_list, const BaseNode* _comp_statement)
+ : BaseNode(_param_list, _comp_statement), id(_id) {}
- virtual void print() const {
+ virtual void printxml() const override {
std::cout << "<Function id=\"" << id << "\">" << std::endl;
- param->print();
- comp_statement->print();
+ leftNode->printxml();
+ rightNode->printxml();
std::cout << "</Function>" << 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 ParamList : public Base {
-private:
- mutable std::vector<const Base*> param_list;
+class ParamList : public BaseList {
public:
- ParamList() {}
-
- ParamList(const Base* param) {
- param_list.push_back(param);
- }
-
- virtual void print() const {
- for(size_t i = 0; i < param_list.size(); ++i) {
- param_list[i]->print();
- }
- }
-
- virtual void push(const Base* _var) const {
- param_list.push_back(_var);
- }
+ ParamList() : BaseList() {}
+ ParamList(const Base* _param) : BaseList(_param) {}
};
+
#endif