#ifndef __NASAL_TOKEN_CPP__ #define __NASAL_TOKEN_CPP__ #include "nasal_token.h" #include "nasal_var_stack.h" #include "nasal_func_stack.h" token_list::token_list() { list_range=0; head=new token_unit; head->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<<" )"<