diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-03-02 23:22:51 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-03-02 23:22:51 +0000 |
commit | 446c2394ec8970198d645bbbb462c67b9e3f1b1e (patch) | |
tree | fc85d32c2b68efa80910d0a4ce4c1bed78ec4717 /c_compiler/include/function.hpp | |
parent | 34d69709e621b9609833a3d6bae31195b425f2f8 (diff) | |
download | Compiler-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.hpp | 46 |
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 |