aboutsummaryrefslogtreecommitdiffstats
path: root/c_parser/include/ast_function.hpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-02-17 15:44:46 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-02-17 15:44:46 +0000
commit31262fce1956cc68503cc6ee52c07bd087fae60e (patch)
treef2e779a6ed0f0879875e5a0482f2dfcafeaffef3 /c_parser/include/ast_function.hpp
parent045b421e10c3a1d5c96e26d64f35969e11fb3cf5 (diff)
parentb81f60d8b523260526af15361d4ce0ac4a7757c8 (diff)
downloadCompiler-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.hpp48
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