diff --git a/version2.0/abstract_syntax_tree.h b/version2.0/abstract_syntax_tree.h deleted file mode 100644 index 9e7b634..0000000 --- a/version2.0/abstract_syntax_tree.h +++ /dev/null @@ -1,251 +0,0 @@ -#ifndef __ABSTRACT_SYNTAX_TREE_H__ -#define __ABSTRACT_SYNTAX_TREE_H__ - -class abstract_syntax_tree -{ - private: - // basic elements - int line; - int symbol_number; - bool symbol_is_global; - int node_type; - std::list children; - - // is this node is a number|string|identifier node - // then the three elements below is of great use - double var_number; - std::string var_string; - std::string var_name; - // var_name is set for __id - public: - // basic - abstract_syntax_tree(); - abstract_syntax_tree(const abstract_syntax_tree&); - ~abstract_syntax_tree(); - abstract_syntax_tree& operator=(const abstract_syntax_tree&); - - // main functions - // print - void print_tree(); - void print_tree_block(const int); - - // set - void set_clear(); - void set_node_type(const int); - void set_node_line(const int); - void set_symbol_number(const int); - void set_var_string(std::string); - void set_var_number(std::string); - void set_var_name(std::string); - void set_var_scope(bool);// true means it exists in global scope - void add_children(abstract_syntax_tree); - - // get - int get_node_type(); - int get_node_line(); - int get_symbol_number(); - double get_var_number(); - std::string get_var_string(); - std::string get_var_name(); - bool get_var_scope(); - std::list& get_children(); -}; - -abstract_syntax_tree::abstract_syntax_tree() -{ - node_type=__null_type; - line=0; - symbol_number=-1; - symbol_is_global=false; - var_number=0; - var_string=""; - var_name=""; - children.clear(); - return; -} - -abstract_syntax_tree::abstract_syntax_tree(const abstract_syntax_tree& tmp) -{ - node_type=tmp.node_type; - line=tmp.line; - symbol_number=tmp.symbol_number; - symbol_is_global=tmp.symbol_is_global; - var_number=tmp.var_number; - var_string=tmp.var_string; - var_name=tmp.var_name; - children=tmp.children; - return; -} - -abstract_syntax_tree::~abstract_syntax_tree() -{ - node_type=__null_type; - line=0; - symbol_number=-1; - symbol_is_global=false; - var_number=0; - var_string.clear(); - var_name.clear(); - children.clear(); - return; -} - -abstract_syntax_tree& abstract_syntax_tree::operator=(const abstract_syntax_tree& tmp) -{ - node_type=tmp.node_type; - line=tmp.line; - symbol_number=tmp.symbol_number; - symbol_is_global=tmp.symbol_is_global; - var_number=tmp.var_number; - var_string=tmp.var_string; - var_name=tmp.var_name; - children.clear(); - children=tmp.children; - return *this; -} - -void abstract_syntax_tree::print_tree() -{ - std::cout<<">> [Abstract-syntax-tree] get tree root: "<<(this)<<""<::iterator i=children.begin();i!=children.end();++i) - i->print_tree_block(n+1); - } - return; -} - -void abstract_syntax_tree::set_clear() -{ - node_type=__null_type; - line=0; - symbol_number=-1; - var_number=0; - var_string=""; - var_name=""; - children.clear(); - return; -} - -void abstract_syntax_tree::set_node_type(const int __node_type) -{ - node_type=__node_type; - return; -} - -void abstract_syntax_tree::set_node_line(const int __line) -{ - if(__line>=0) - line=__line; - else - { - std::cout<<">> [Abstract-syntax-tree-warning] incorrect line under 0: "<<__line<<"."<& abstract_syntax_tree::get_children() -{ - return children; -} -#endif