From e66e6c2690ab4690d2e671268b971536e97a3ffb Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Wed, 27 Nov 2019 18:21:20 +0800 Subject: [PATCH] Add file I/O --- balloon/abstract_syntax_tree.cpp | 107 +++++++++++++++++++++++++++++++ balloon/lib/io.nas | 12 ++++ 2 files changed, 119 insertions(+) diff --git a/balloon/abstract_syntax_tree.cpp b/balloon/abstract_syntax_tree.cpp index 00e9638..cb79ed0 100644 --- a/balloon/abstract_syntax_tree.cpp +++ b/balloon/abstract_syntax_tree.cpp @@ -1137,6 +1137,113 @@ var abstract_syntax_tree::run_func(std::list parameter,var self_func) ret.set_type(__null_type); ret_stack.push(ret); } + else if(self_func.get_name()=="read") + { + if(!parameter.empty()) + { + std::list::iterator i=parameter.begin(); + if(i->get_type()==__var_string) + { + std::string str=i->get_string(); + ret.set_type(__var_array); + std::ifstream fin(str); + if(fin.fail()) + { + exit_type=__open_file_failed; + std::cout<<">>[Runtime-error] line "<line<<": cannot open file named \'"<>str; + var new_str; + new_str.set_type(__var_string); + new_str.set_string(str); + ret.append_array(new_str); + } + } + fin.close(); + } + else + { + exit_type=__error_value_type; + std::cout<<">>[Runtime-error] line "<line<<": incorrect value type.filename is a string."<>[Runtime-error] line "<line<<": lack parameter(s)."<::iterator i=parameter.begin(); + if(i->get_type()==__var_string) + { + std::string str=i->get_string(); + std::ofstream fout(str); + if(fout.fail()) + { + exit_type=__open_file_failed; + std::cout<<">>[Runtime-error] line "<line<<": cannot open file named \'"<get_type()==__var_array) + { + int size=i->get_array_size(); + for(int j=0;jget_array_member(j); + if(temp.get_type()==__var_number) + fout<>[Runtime] warning: line "<line<<": cannot put array/hash/function into a file."<>[Runtime-error] line "<line<<": output must use an array."<>[Runtime-error] line "<line<<": lack parameter(s)."<>[Runtime-error] line "<line<<": incorrect value type.filename is a string."<>[Runtime-error] line "<line<<": lack parameter(s)."<