From da6fc18e3a329b0886f569dff0a75de4f272b314 Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Wed, 6 Nov 2019 23:42:40 +0800 Subject: [PATCH] Update --- balloon/abstract_syntax_tree.cpp | 58 +++++++++++++++++++++++++++++--- balloon/abstract_syntax_tree.h | 1 + balloon/balloon_type.h | 10 ++++-- 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/balloon/abstract_syntax_tree.cpp b/balloon/abstract_syntax_tree.cpp index c4fef75..4611161 100644 --- a/balloon/abstract_syntax_tree.cpp +++ b/balloon/abstract_syntax_tree.cpp @@ -2,33 +2,66 @@ #define __ABSTRACT_SYNTAX_TREE_CPP__ balloon_scope global; +int exit_type=0; +var abstract_syntax_tree::call_id() +{ + var temp; + if(children.empty()) + { + if(global.search_var(name)) + temp=global.get_var(name); + else + { + std::cout<<">>[Runtime-error] cannot find a var named \'"<::iterator i=children.begin();i!=children.end();++i) + { + new_var=i->get_value(); + temp.append_array(new_var); + } } else if(type==__hash) { var new_var; + for(std::list::iterator i=children.begin();i!=children.end();++i) + { + new_var=i->children.begin()->get_value(); + new_var.set_name(i->name); + temp.append_array(new_var); + } } else if(type==__function) temp.set_function(*this); - if(name.length()!=0) - temp.set_name(name); + else + { + std::cout<<">>[Runtime-error] incorrect value."<::iterator i=children.begin();i!=children.end();++i) { @@ -49,6 +82,23 @@ void abstract_syntax_tree::run_root() break; } } + else if(i->type==__number) + std::cout<number<type==__string) + std::cout<str<type==__id) + i->call_id(); + else if(i->type==__while) + { + ; + } + else if(i->type==__ifelse) + { + ; + } + + if(exit_type!=__process_exited_successfully) + break; } end_time=time(NULL); std::cout<<">>[Runtime] process exited after "<