/* File: linker_id.cpp Date and Time: Fri Jan 30 18:55:14 2015 */ #include "linker_id.h" using namespace NS_yacco2_T_enum;// enumerate using namespace NS_yacco2_err_symbols;// error symbols using namespace NS_yacco2_k_symbols;// lrk using namespace NS_yacco2_terminals;// terminals using namespace NS_yacco2_characters;// rc using namespace yacco2;// yacco2 library using namespace NS_linker_id;// grammar's ns // first set terminals fsm_rules_reuse_table_type::fsm_rules_reuse_table_type(){ no_rules_entries_ = 11; per_rule_s_table_[0] = new Per_rule_s_reuse_table(); per_rule_s_table_[1] = new Per_rule_s_reuse_table(); per_rule_s_table_[2] = new Per_rule_s_reuse_table(); per_rule_s_table_[3] = new Per_rule_s_reuse_table(); per_rule_s_table_[4] = new Per_rule_s_reuse_table(); per_rule_s_table_[5] = new Per_rule_s_reuse_table(); per_rule_s_table_[6] = new Per_rule_s_reuse_table(); per_rule_s_table_[7] = new Per_rule_s_reuse_table(); per_rule_s_table_[8] = new Per_rule_s_reuse_table(); per_rule_s_table_[9] = new Per_rule_s_reuse_table(); per_rule_s_table_[10] = new Per_rule_s_reuse_table(); } Clinker_id:: Clinker_id() :yacco2::CAbs_fsm ("linker_id.lex" ,"1.0" ,"17 Juin 2003" ,false ,"\\olinker identifiers recognizer: uses symbol table." ,"Fri Jan 30 18:55:14 2015 " ,S1_Clinker_id){ data_.erase(); } Clinker_id::~Clinker_id(){ for(int x = 0;x < 11;++x){ ///delete fsm_rules_reuse_table.per_rule_s_table_[x]; } } bool Clinker_id::failed(){ return false; } void Clinker_id::op(){ data_.erase(); } int Clinker_id::rhs_to_rules_mapping_[87] = { -1 ,0 // subrule 1 for rule 1 ,0 // subrule 2 for rule 1 ,1 // subrule 3 for rule 2 ,1 // subrule 4 for rule 2 ,2 // subrule 5 for rule 3 ,2 // subrule 6 for rule 3 ,2 // subrule 7 for rule 3 ,2 // subrule 8 for rule 3 ,3 // subrule 9 for rule 4 ,3 // subrule 10 for rule 4 ,4 // subrule 11 for rule 5 ,4 // subrule 12 for rule 5 ,4 // subrule 13 for rule 5 ,4 // subrule 14 for rule 5 ,4 // subrule 15 for rule 5 ,5 // subrule 16 for rule 6 ,5 // subrule 17 for rule 6 ,5 // subrule 18 for rule 6 ,5 // subrule 19 for rule 6 ,5 // subrule 20 for rule 6 ,5 // subrule 21 for rule 6 ,5 // subrule 22 for rule 6 ,5 // subrule 23 for rule 6 ,5 // subrule 24 for rule 6 ,6 // subrule 25 for rule 7 ,6 // subrule 26 for rule 7 ,6 // subrule 27 for rule 7 ,6 // subrule 28 for rule 7 ,6 // subrule 29 for rule 7 ,6 // subrule 30 for rule 7 ,6 // subrule 31 for rule 7 ,6 // subrule 32 for rule 7 ,6 // subrule 33 for rule 7 ,6 // subrule 34 for rule 7 ,6 // subrule 35 for rule 7 ,6 // subrule 36 for rule 7 ,6 // subrule 37 for rule 7 ,7 // subrule 38 for rule 8 ,7 // subrule 39 for rule 8 ,7 // subrule 40 for rule 8 ,7 // subrule 41 for rule 8 ,7 // subrule 42 for rule 8 ,7 // subrule 43 for rule 8 ,7 // subrule 44 for rule 8 ,7 // subrule 45 for rule 8 ,7 // subrule 46 for rule 8 ,7 // subrule 47 for rule 8 ,7 // subrule 48 for rule 8 ,7 // subrule 49 for rule 8 ,7 // subrule 50 for rule 8 ,8 // subrule 51 for rule 9 ,8 // subrule 52 for rule 9 ,8 // subrule 53 for rule 9 ,8 // subrule 54 for rule 9 ,8 // subrule 55 for rule 9 ,8 // subrule 56 for rule 9 ,8 // subrule 57 for rule 9 ,8 // subrule 58 for rule 9 ,8 // subrule 59 for rule 9 ,8 // subrule 60 for rule 9 ,8 // subrule 61 for rule 9 ,8 // subrule 62 for rule 9 ,8 // subrule 63 for rule 9 ,9 // subrule 64 for rule 10 ,9 // subrule 65 for rule 10 ,9 // subrule 66 for rule 10 ,9 // subrule 67 for rule 10 ,9 // subrule 68 for rule 10 ,9 // subrule 69 for rule 10 ,9 // subrule 70 for rule 10 ,9 // subrule 71 for rule 10 ,9 // subrule 72 for rule 10 ,9 // subrule 73 for rule 10 ,9 // subrule 74 for rule 10 ,9 // subrule 75 for rule 10 ,9 // subrule 76 for rule 10 ,10 // subrule 77 for rule 11 ,10 // subrule 78 for rule 11 ,10 // subrule 79 for rule 11 ,10 // subrule 80 for rule 11 ,10 // subrule 81 for rule 11 ,10 // subrule 82 for rule 11 ,10 // subrule 83 for rule 11 ,10 // subrule 84 for rule 11 ,10 // subrule 85 for rule 11 ,10 // subrule 86 for rule 11 }; Rlinker_id::Rlinker_id(yacco2::Parser* P) :CAbs_lr1_sym ("Rlinker_id",0,Clinker_id::R_Rlinker_id_,P,false,false){ } void Rlinker_id::op(){ sstrace_rulesss Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; T_sym_tbl_report_card report_card; kw_in_stbl* kw_in; using namespace yacco2_stbl; find_sym_in_stbl(report_card,*fsm->data_.c_str()); if(report_card.action_ == T_sym_tbl_report_card::fnd){ if(report_card.tbl_entry_->type_ == table_entry::keyword){ kw_in = (kw_in_stbl*)report_card.tbl_entry_->symbol_; CAbs_lr1_sym* kw = kw_in->keyword_in_stbl(); CAbs_lr1_sym* nkw; switch(kw->enumerated_id__){ case T_Enum::T_T_transitive_:{nkw = new T_transitive;break;} case T_Enum::T_T_grammar_name_:{nkw = new T_grammar_name;break;} case T_Enum::T_T_error_symbols_:{nkw = new T_error_symbols;break;} case T_Enum::T_T_name_space_:{nkw = new T_name_space;break;} case T_Enum::T_T_thread_name_:{nkw = new T_thread_name;break;} case T_Enum::T_T_monolithic_:{nkw = new T_monolithic;break;} case T_Enum::T_T_file_name_:{nkw = new T_file_name;break;} case T_Enum::T_T_no_of_T_:{nkw = new T_no_of_T;break;} case T_Enum::T_T_list_of_native_first_set_terminals_: {nkw = new T_list_of_native_first_set_terminals;break;} case T_Enum::T_T_end_list_of_native_first_set_terminals_: {nkw = new T_end_list_of_native_first_set_terminals;break;} case T_Enum::T_T_list_of_transitive_threads_: {nkw = new T_list_of_transitive_threads;break;} case T_Enum::T_T_end_list_of_transitive_threads_: {nkw = new T_end_list_of_transitive_threads;break;} case T_Enum::T_T_list_of_used_threads_: {nkw = new T_list_of_used_threads;break;} case T_Enum::T_T_end_list_of_used_threads_: {nkw = new T_end_list_of_used_threads;break;} case T_Enum::T_T_T_alphabet_:{nkw = new T_T_alphabet;break;} case T_Enum::T_T_end_T_alphabet_:{nkw = new T_end_T_alphabet;break;} case T_Enum::T_T_file_of_T_alphabet_:{nkw = new T_file_of_T_alphabet;break;} case T_Enum::T_T_emitfile_:{nkw = new T_emitfile;break;} case T_Enum::T_T_preamble_:{nkw = new T_preamble;break;} case T_Enum::T_T_fsm_comments_:{nkw = new T_fsm_comments;break;} case T_Enum::T_T_end_preamble_:{nkw = new T_end_preamble;break;} } nkw->set_rc(*rule_info__.parser__->start_token__,__FILE__,__LINE__); RSVP(nkw); return; }else{ RSVP(report_card.tbl_entry_->symbol_); return; } } T_identifier* id = new T_identifier(fsm->data_.c_str()); id->set_rc(*rule_info__.parser__->start_token__,__FILE__,__LINE__); RSVP(id); } Rtail_chars::Rtail_chars(yacco2::Parser* P) :CAbs_lr1_sym ("Rtail_chars",0,Clinker_id::R_Rtail_chars_,P,false,false){ } Rstart_char::Rstart_char(yacco2::Parser* P) :CAbs_lr1_sym ("Rstart_char",0,Clinker_id::R_Rstart_char_,P,false,false){ } Rtail_char::Rtail_char(yacco2::Parser* P) :CAbs_lr1_sym ("Rtail_char",0,Clinker_id::R_Rtail_char_,P,false,false){ } Rno_and_underscore_and_hyphen::Rno_and_underscore_and_hyphen(yacco2::Parser* P) :CAbs_lr1_sym ("Rno_and_underscore_and_hyphen",0,Clinker_id::R_Rno_and_underscore_and_hyphen_,P,false,false){ } void Rno_and_underscore_and_hyphen::sr1(){ struct SF{ raw_colon* p1__; State* s1__; bool abort1__; Rule_s_reuse_entry* rule_s_reuse_entry1__; }; SF* sf = (SF*)rule_info__.parser__->parse_stack__.sf_by_top(1); Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; fsm->data_ += sf->p1__->id__; } void Rno_and_underscore_and_hyphen::sr2(){ struct SF{ raw_period* p1__; State* s1__; bool abort1__; Rule_s_reuse_entry* rule_s_reuse_entry1__; }; SF* sf = (SF*)rule_info__.parser__->parse_stack__.sf_by_top(1); Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; fsm->data_ += sf->p1__->id__; } void Rno_and_underscore_and_hyphen::sr3(){ struct SF{ raw_under_score* p1__; State* s1__; bool abort1__; Rule_s_reuse_entry* rule_s_reuse_entry1__; }; SF* sf = (SF*)rule_info__.parser__->parse_stack__.sf_by_top(1); Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; fsm->data_ += sf->p1__->id__; } void Rno_and_underscore_and_hyphen::sr4(){ struct SF{ raw_minus* p1__; State* s1__; bool abort1__; Rule_s_reuse_entry* rule_s_reuse_entry1__; }; SF* sf = (SF*)rule_info__.parser__->parse_stack__.sf_by_top(1); Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; fsm->data_ += sf->p1__->id__; } Rminus_la::Rminus_la(yacco2::Parser* P) :CAbs_lr1_sym ("Rminus_la",0,Clinker_id::R_Rminus_la_,P,false,false){ } RUPPER_A_M::RUPPER_A_M(yacco2::Parser* P) :CAbs_lr1_sym ("RUPPER_A_M",0,Clinker_id::R_RUPPER_A_M_,P,false,false){ } void RUPPER_A_M::op(){ sstrace_rulesss Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; size_t pos = rule_info__.parser__->parse_stack__.top_sub__ - 1; CAbs_lr1_sym* sym = rule_info__.parser__->get_spec_stack_token(pos); fsm->data_ += sym->id__; } RUPPER_N_Z::RUPPER_N_Z(yacco2::Parser* P) :CAbs_lr1_sym ("RUPPER_N_Z",0,Clinker_id::R_RUPPER_N_Z_,P,false,false){ } void RUPPER_N_Z::op(){ sstrace_rulesss Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; size_t pos = rule_info__.parser__->parse_stack__.top_sub__ - 1; CAbs_lr1_sym* sym = rule_info__.parser__->get_spec_stack_token(pos); fsm->data_ += sym->id__; } Rlower_a_m::Rlower_a_m(yacco2::Parser* P) :CAbs_lr1_sym ("Rlower_a_m",0,Clinker_id::R_Rlower_a_m_,P,false,false){ } void Rlower_a_m::op(){ sstrace_rulesss Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; size_t pos = rule_info__.parser__->parse_stack__.top_sub__ - 1; CAbs_lr1_sym* sym = rule_info__.parser__->get_spec_stack_token(pos); fsm->data_ += sym->id__; } Rlower_n_z::Rlower_n_z(yacco2::Parser* P) :CAbs_lr1_sym ("Rlower_n_z",0,Clinker_id::R_Rlower_n_z_,P,false,false){ } void Rlower_n_z::op(){ sstrace_rulesss Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; size_t pos = rule_info__.parser__->parse_stack__.top_sub__ - 1; CAbs_lr1_sym* sym = rule_info__.parser__->get_spec_stack_token(pos); fsm->data_ += sym->id__; } RNUMBERS::RNUMBERS(yacco2::Parser* P) :CAbs_lr1_sym ("RNUMBERS",0,Clinker_id::R_RNUMBERS_,P,false,false){ } void RNUMBERS::op(){ sstrace_rulesss Clinker_id* fsm = (Clinker_id*) rule_info__.parser__->fsm_tbl__; size_t pos = rule_info__.parser__->parse_stack__.top_sub__ - 1; CAbs_lr1_sym* sym = rule_info__.parser__->get_spec_stack_token(pos); fsm->data_ += sym->id__; }