From 62fe6cc020f737cbfbb87dc1d43016499a46ea1c Mon Sep 17 00:00:00 2001 From: Valk Richard Li <48872266+ValKmjolnir@users.noreply.github.com> Date: Thu, 26 Sep 2019 19:56:48 +0800 Subject: [PATCH] Delete nasal_functional.cpp --- version0.2/nasal_functional.cpp | 676 -------------------------------- 1 file changed, 676 deletions(-) delete mode 100644 version0.2/nasal_functional.cpp diff --git a/version0.2/nasal_functional.cpp b/version0.2/nasal_functional.cpp deleted file mode 100644 index 163560b..0000000 --- a/version0.2/nasal_functional.cpp +++ /dev/null @@ -1,676 +0,0 @@ -#ifndef __NASAL_FUNCTIONAL_CPP__ -#define __NASAL_FUNCTIONAL_CPP__ - -#include "nasal_functional.h" -#include "nasal_var_stack.h" -#include "nasal_func_stack.h" - -bool is_float(std::string &str) -{ - for(int i=0;i<(int)str.length();++i) - if(str[i]=='.') - return true; - return false; -} -long long int int_str2num(std::string &str) -{ - for(int i=0;i<(int)str.length();++i) - if(!(('0'<=str[i]) && (str[i]<='9') || (str[i]=='.'))) - { - std::cout<<"[Error] Non-numeric string."<=0;--i) - { - num+=acc*((long long int)(str[i]-'0')); - acc*=10; - } - return num; -} -double double_str2num(std::string &str) -{ - for(int i=0;i<(int)str.length();++i) - if(!(('0'<=str[i]) && (str[i]<='9') || (str[i]=='.'))) - { - std::cout<<"[Error] Non-numeric string."<=0;--i) - { - num+=acc*((double)(str[i]-'0')); - acc*=10; - } - return num; -} - - -func::func() -{ - statement_head=new token_unit; - statement_head->line=0; - statement_head->type=FUNC_BEGIN; - statement_head->content="__func_begin"; - statement_head->next=NULL; - - parameter_head=new parameter; - parameter_head->param_var.type=VAR_NONE; - parameter_head->param_var.data=NULL; - parameter_head->var_name="__null_var"; - parameter_head->next=NULL; -} -func::func(const func& temp) -{ - token_unit *statement_temp=statement_head; - token_unit *temp_state=temp.statement_head; - parameter *parameter_temp=parameter_head; - parameter *temp_param=temp.parameter_head; - while(temp_state->next) - { - temp_state=temp_state->next; - statement_temp->next=new token_unit; - statement_temp=statement_temp->next; - statement_temp->line=temp_state->line; - statement_temp->content=temp_state->content; - statement_temp->type=temp_state->type; - statement_temp->next=NULL; - } - while(temp_param->next) - { - temp_param=temp_param->next; - parameter_temp->next=new parameter; - parameter_temp=parameter_temp->next; - parameter_temp->param_var=temp_param->param_var; - parameter_temp->var_name=temp_param->var_name; - parameter_temp->next=NULL; - } -} -func::~func() -{ - token_unit *statement_temp=statement_head; - token_unit *statement_last_unit=NULL; - parameter *parameter_temp=parameter_head; - parameter *parameter_last_unit=NULL; - - while(statement_temp->next) - { - statement_last_unit=statement_temp; - statement_temp=statement_temp->next; - delete statement_last_unit; - } - delete statement_temp; - while(parameter_temp->next) - { - parameter_last_unit=parameter_temp; - parameter_temp=parameter_temp->next; - delete parameter_last_unit; - } - delete parameter_temp; -} -func& func::operator=(const func& temp) -{ - token_unit *statement_temp=statement_head->next; - token_unit *temp_state=temp.statement_head; - parameter *parameter_temp=parameter_head->next; - parameter *temp_param=temp.parameter_head; - - token_unit *statement_last=NULL; - parameter *parameter_last=NULL; - if(statement_temp) - { - while(statement_temp->next) - { - statement_last=statement_temp; - statement_temp=statement_temp->next; - delete statement_last; - } - delete statement_temp; - } - if(parameter_temp) - { - while(parameter_temp->next) - { - parameter_last=parameter_temp; - parameter_temp=parameter_temp->next; - delete parameter_last; - } - delete parameter_temp; - } - statement_head->next=NULL; - parameter_head->next=NULL; - statement_temp=statement_head; - parameter_temp=parameter_head; - while(temp_state->next) - { - temp_state=temp_state->next; - statement_temp->next=new token_unit; - statement_temp=statement_temp->next; - statement_temp->line=temp_state->line; - statement_temp->content=temp_state->content; - statement_temp->type=temp_state->type; - statement_temp->next=NULL; - } - while(temp_param->next) - { - temp_param=temp_param->next; - parameter_temp->next=new parameter; - parameter_temp=parameter_temp->next; - parameter_temp->param_var=temp_param->param_var; - parameter_temp->var_name=temp_param->var_name; - parameter_temp->next=NULL; - } - return *this; -} -void func::append_var(std::string& varia_name,var& p) -{ - parameter *parameter_temp=parameter_head; - while(parameter_temp->next) - { - parameter_temp=parameter_temp->next; - if(parameter_temp->var_name==varia_name) - { - std::cout<<"[Error] Redefinition of var \""<next=new parameter; - parameter_temp=parameter_temp->next; - parameter_temp->param_var=p; - parameter_temp->var_name=varia_name; - parameter_temp->next=NULL; - return; -} -void func::append_token(const int _line,const int _type,std::string &_content) -{ - token_unit *statement_temp=statement_head; - while(statement_temp->next) - statement_temp=statement_temp->next; - statement_temp->next=new token_unit; - statement_temp=statement_temp->next; - statement_temp->line=_line; - statement_temp->type=_type; - statement_temp->content=_content; - statement_temp->next=NULL; - return; -} -void func::print_info() -{ - parameter *para_temp=parameter_head; - token_unit *token_temp=statement_head; - std::cout<<"\n\t[parameter] :"; - while(para_temp->next) - { - para_temp=para_temp->next; - std::cout<var_name<<" "; - } - std::cout<<"\n\t[statement] :"; - while(token_temp->next) - { - token_temp=token_temp->next; - std::cout<content<<" "; - } - std::cout<type=FUNC_BEGIN; - head->content="__process_begin"; - head->line=0; - head->next=NULL; -} -token_list::~token_list() -{ - token_unit *temp=head; - token_unit *this_node=NULL; - while(temp->next) - { - this_node=temp; - temp=temp->next; - delete this_node; - } - delete temp; -} -token_unit* token_list::get_head() -{ - return head; -} -int token_list::get_list_range() -{ - return list_range; -} -void token_list::print_line_token(const int _line) -{ - std::cout<<"line "<<_line<<": "; - token_unit *temp=head; - while(temp->next) - { - temp=temp->next; - if(temp->line==_line) - std::cout<content<<" "; - else if(temp->line>_line) - break; - } - std::cout<next) - return; - token_unit *temp=head; - token_unit *this_node=NULL; - temp=temp->next; - head->next=NULL; - while(temp->next) - { - this_node=temp; - temp=temp->next; - delete this_node; - } - delete temp; - return; -} -void token_list::append(const int _line,const int _type,std::string &_content) -{ - token_unit *temp=head; - while(temp->next) - temp=temp->next; - ++list_range; - temp->next=new token_unit; - temp=temp->next; - temp->next=NULL; - temp->type=_type; - temp->line=_line; - temp->content=_content; - return; -} -void token_list::print() -{ - token_unit *temp=head; - std::cout<<"line "<line<<": "<<"( ProcessBegin | "<content<<" )"<next) - return; - while(temp->next) - { - temp=temp->next; - std::cout<<"line "<line<<": "; - if(temp->type==OPERATOR) - std::cout<<"( Operator | "; - else if(temp->type==IDENTIFIER) - std::cout<<"( Identifier | "; - else if(temp->type==NUMBER) - std::cout<<"( Number | "; - else if(temp->type==RESERVEWORD) - std::cout<<"( ReserveWord | "; - else if(temp->type==STRING) - std::cout<<"( String | "; - std::cout<content<<" )"<0) - std::cout<<"[Error] Missing \")\" ."<0) - std::cout<<"[Error] Missing \"]\" ."<0) - std::cout<<"[Error] Missing \"}\" ."<0? '}':'{')<<"\" ."<0? '}':'{')<<"\" ."<next) - { - temp=temp->next; - ++len;//begin from 1 - content_array[len].type=temp->type; - content_array[len].line=temp->line; - content_array[len].content=temp->content; - } - brace_check(); - for(int i=1;i<=len;++i) - { - if(content_array[i].type==RESERVEWORD && content_array[i].content=="var") - { - int in_brace=0; - bool is_func=false; - if(content_array[i+3].content=="func") - is_func=true; - statement_set_empty(); - for(int j=i;j<=len;++j) - { - statement[j-i]=content_array[j]; - if(content_array[j].type==OPERATOR && content_array[j].content=="{") - ++in_brace; - if(content_array[j].type==OPERATOR && content_array[j].content=="}") - --in_brace; - if(content_array[j].type==OPERATOR && content_array[j].content==";" && !in_brace && !is_func) - { - i=j; - break; - } - if(content_array[j].content=="}" && is_func && !in_brace) - { - i=j; - break; - } - } - definition(); - } - else if(content_array[i].type==IDENTIFIER) - { - int in_brace=0; - statement_set_empty(); - for(int j=i;j<=len;++j) - { - statement[j-i]=content_array[j]; - if(content_array[j].type==OPERATOR && content_array[j].content==";" && in_brace==0) - { - i=j; - break; - } - if(content_array[j].type==OPERATOR && content_array[j].content=="{") - ++in_brace; - if(content_array[j].type==OPERATOR && content_array[j].content=="}") - --in_brace; - } - assignment(); - } - } - nasal_var_stack.print_var(); - nasal_func_stack.print_function(); - return; -} - -#endif