diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-17 15:44:46 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-02-17 15:44:46 +0000 |
commit | 31262fce1956cc68503cc6ee52c07bd087fae60e (patch) | |
tree | f2e779a6ed0f0879875e5a0482f2dfcafeaffef3 /c_parser/include/ast_function.hpp | |
parent | 045b421e10c3a1d5c96e26d64f35969e11fb3cf5 (diff) | |
parent | b81f60d8b523260526af15361d4ce0ac4a7757c8 (diff) | |
download | Compiler-31262fce1956cc68503cc6ee52c07bd087fae60e.tar.gz Compiler-31262fce1956cc68503cc6ee52c07bd087fae60e.zip |
Merge branch 'parser'
Diffstat (limited to 'c_parser/include/ast_function.hpp')
-rw-r--r-- | c_parser/include/ast_function.hpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/c_parser/include/ast_function.hpp b/c_parser/include/ast_function.hpp new file mode 100644 index 0000000..86230d1 --- /dev/null +++ b/c_parser/include/ast_function.hpp @@ -0,0 +1,48 @@ +#ifndef AST_FUNCTION_HPP +#define AST_FUNCTION_HPP + +#include "ast.hpp" + +#include <string> +#include <iostream> + +class ast_Function : public ast_Base { +private: + std::string id; + const ast_Base* param; + const ast_Base* comp_statement; +public: + ast_Function(const std::string& _id, const ast_Base* _param, const ast_Base* _comp_statement) : + id(_id), param(_param), comp_statement(_comp_statement) {} + + virtual void print() const { + std::cout << "<Function id=\"" << id << "\">" << std::endl; + param->print(); + comp_statement->print(); + std::cout << "</Function>" << std::endl; + } + + virtual void push(const ast_Base* var) const {} +}; + +class ast_ParamList : public ast_Base { +private: + mutable std::vector<const ast_Base*> param_list; + +public: + ast_ParamList(const ast_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 ast_Base* _var) const { + param_list.push_back(_var); + } +}; + +#endif |