diff options
Diffstat (limited to 'web/yacco2/compiler/grammars/esc_seq.cpp')
-rw-r--r-- | web/yacco2/compiler/grammars/esc_seq.cpp | 432 |
1 files changed, 432 insertions, 0 deletions
diff --git a/web/yacco2/compiler/grammars/esc_seq.cpp b/web/yacco2/compiler/grammars/esc_seq.cpp new file mode 100644 index 0000000000..7fed3a7ac2 --- /dev/null +++ b/web/yacco2/compiler/grammars/esc_seq.cpp @@ -0,0 +1,432 @@ +/* + File: esc_seq.cpp + Date and Time: Fri Jan 30 18:55:11 2015 +*/ +#include "esc_seq.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_esc_seq;// grammar's ns +// first set terminals +fsm_rules_reuse_table_type::fsm_rules_reuse_table_type(){ + no_rules_entries_ = 17; + 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(); + per_rule_s_table_[11] = new Per_rule_s_reuse_table(); + per_rule_s_table_[12] = new Per_rule_s_reuse_table(); + per_rule_s_table_[13] = new Per_rule_s_reuse_table(); + per_rule_s_table_[14] = new Per_rule_s_reuse_table(); + per_rule_s_table_[15] = new Per_rule_s_reuse_table(); + per_rule_s_table_[16] = new Per_rule_s_reuse_table(); +} + Cesc_seq:: + Cesc_seq() + :yacco2::CAbs_fsm + ("esc_seq.lex" + ,"1.0" + ,"25 Juin 2003" + ,false + ,"C type escape sequence recognizer." + ,"Fri Jan 30 18:55:11 2015 " + ,S1_Cesc_seq){ + + } + +Cesc_seq::~Cesc_seq(){ + + for(int x = 0;x < 17;++x){ + ///delete fsm_rules_reuse_table.per_rule_s_table_[x]; + } +} + + bool Cesc_seq::failed(){ + return false; + } + void Cesc_seq::op(){ + parser__->set_use_all_shift_on(); + data_.clear(); + +} +int Cesc_seq::rhs_to_rules_mapping_[65] = { + -1 + ,0 // subrule 1 for rule 1 + ,0 // subrule 2 for rule 1 + ,0 // subrule 3 for rule 1 + ,0 // subrule 4 for rule 1 + ,0 // subrule 5 for rule 1 + ,1 // subrule 6 for rule 2 + ,2 // subrule 7 for rule 3 + ,2 // subrule 8 for rule 3 + ,2 // subrule 9 for rule 3 + ,2 // subrule 10 for rule 3 + ,2 // subrule 11 for rule 3 + ,2 // subrule 12 for rule 3 + ,2 // subrule 13 for rule 3 + ,2 // subrule 14 for rule 3 + ,2 // subrule 15 for rule 3 + ,2 // subrule 16 for rule 3 + ,2 // subrule 17 for rule 3 + ,2 // subrule 18 for rule 3 + ,3 // subrule 19 for rule 4 + ,4 // subrule 20 for rule 5 + ,5 // subrule 21 for rule 6 + ,6 // subrule 22 for rule 7 + ,7 // subrule 23 for rule 8 + ,8 // subrule 24 for rule 9 + ,8 // subrule 25 for rule 9 + ,9 // subrule 26 for rule 10 + ,10 // subrule 27 for rule 11 + ,11 // subrule 28 for rule 12 + ,11 // subrule 29 for rule 12 + ,12 // subrule 30 for rule 13 + ,12 // subrule 31 for rule 13 + ,13 // subrule 32 for rule 14 + ,13 // subrule 33 for rule 14 + ,13 // subrule 34 for rule 14 + ,13 // subrule 35 for rule 14 + ,13 // subrule 36 for rule 14 + ,13 // subrule 37 for rule 14 + ,13 // subrule 38 for rule 14 + ,13 // subrule 39 for rule 14 + ,13 // subrule 40 for rule 14 + ,13 // subrule 41 for rule 14 + ,14 // subrule 42 for rule 15 + ,14 // subrule 43 for rule 15 + ,14 // subrule 44 for rule 15 + ,14 // subrule 45 for rule 15 + ,14 // subrule 46 for rule 15 + ,14 // subrule 47 for rule 15 + ,14 // subrule 48 for rule 15 + ,14 // subrule 49 for rule 15 + ,14 // subrule 50 for rule 15 + ,14 // subrule 51 for rule 15 + ,14 // subrule 52 for rule 15 + ,14 // subrule 53 for rule 15 + ,15 // subrule 54 for rule 16 + ,15 // subrule 55 for rule 16 + ,15 // subrule 56 for rule 16 + ,16 // subrule 57 for rule 17 + ,16 // subrule 58 for rule 17 + ,16 // subrule 59 for rule 17 + ,16 // subrule 60 for rule 17 + ,16 // subrule 61 for rule 17 + ,16 // subrule 62 for rule 17 + ,16 // subrule 63 for rule 17 + ,16 // subrule 64 for rule 17 +}; + + yacco2::CAbs_lr1_sym* Cesc_seq::chk_for_overrun(){ + switch (parser__->current_token()->enumerated_id__){ + case T_Enum::T_raw_lf_: break; + case T_Enum::T_raw_cr_: break; + case T_Enum::T_T_eol_: break; + case T_Enum::T_LR1_eog_: break; + default: return 0; + } + CAbs_lr1_sym* sym = new Err_bad_eos; + sym->set_rc(*parser__->start_token__,__FILE__,__LINE__); + parser__->set_use_all_shift_off(); + return sym; + } + +Resc_seq::Resc_seq(yacco2::Parser* P) + :CAbs_lr1_sym + ("Resc_seq",0,Cesc_seq::R_Resc_seq_,P,false,false){ +} + +void Resc_seq::op(){ + sstrace_rulesss + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + CAbs_lr1_sym* sym = new T_esc_seq(fsm->data_.c_str()); + sym->set_rc(*rule_info__.parser__->start_token__,__FILE__,__LINE__); + sym->set_line_no_and_pos_in_line(*rule_info__.parser__->start_token__); + RSVP(sym); + +} +void Resc_seq::sr2(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += '\\'; + fsm->data_ += fsm->octal_data_.c_str(); + +} + +void Resc_seq::sr3(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += fsm->hex_data_.c_str(); + +} + +Rslash::Rslash(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rslash",0,Cesc_seq::R_Rslash_,P,false,false){ +} + +void Rslash::sr1(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + CAbs_lr1_sym* sym = fsm->chk_for_overrun(); + if(sym == 0) return; + RSVP(sym); + rule_info__.parser__->set_stop_parse(true); + +} + +Rliteral::Rliteral(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rliteral",0,Cesc_seq::R_Rliteral_,P,false,false){ +} + +void Rliteral::sr1(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_ += 'n'; + +} + +void Rliteral::sr2(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='t'; + +} + +void Rliteral::sr3(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='v'; + +} + +void Rliteral::sr4(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='b'; + +} + +void Rliteral::sr5(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='r'; + +} + +void Rliteral::sr6(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='f'; + +} + +void Rliteral::sr7(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='a'; + +} + +void Rliteral::sr8(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+="\\"; + +} + +void Rliteral::sr9(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='?'; + +} + +void Rliteral::sr10(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+="'"; + +} + +void Rliteral::sr11(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+='"'; + +} + +void Rliteral::sr12(){ + + CAbs_lr1_sym* sym = new Err_bad_esc; + sym->set_rc(*rule_info__.parser__->start_token__,__FILE__,__LINE__); + sym->set_line_no_and_pos_in_line(*rule_info__.parser__->start_token__); + RSVP(sym); + rule_info__.parser__->set_stop_parse(true); + +} + +Ruhex::Ruhex(yacco2::Parser* P) + :CAbs_lr1_sym + ("Ruhex",0,Cesc_seq::R_Ruhex_,P,false,false){ +} + +Ru::Ru(yacco2::Parser* P) + :CAbs_lr1_sym + ("Ru",0,Cesc_seq::R_Ru_,P,false,false){ +} + +void Ru::sr1(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+= 'u'; + +} + +RU::RU(yacco2::Parser* P) + :CAbs_lr1_sym + ("RU",0,Cesc_seq::R_RU_,P,false,false){ +} + +void RU::sr1(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+= 'U'; + +} + +Rx::Rx(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rx",0,Cesc_seq::R_Rx_,P,false,false){ +} + +void Rx::sr1(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + fsm->data_ += "\\"; + fsm->data_+= 'x'; + +} + +RUhex::RUhex(yacco2::Parser* P) + :CAbs_lr1_sym + ("RUhex",0,Cesc_seq::R_RUhex_,P,false,false){ +} + +Rmhex_no::Rmhex_no(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rmhex_no",0,Cesc_seq::R_Rmhex_no_,P,false,false){ +} + +void Rmhex_no::sr2(){ + + CAbs_lr1_sym* sym = new Err_bad_esc; + sym->set_rc(*rule_info__.parser__->start_token__,__FILE__,__LINE__); + RSVP(sym); + rule_info__.parser__->set_stop_parse(true); + +} + +Rcalc_hex_char::Rcalc_hex_char(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rcalc_hex_char",0,Cesc_seq::R_Rcalc_hex_char_,P,false,false){ +} + +void Rcalc_hex_char::sr1(){ + + Cesc_seq* fsm = (Cesc_seq*) rule_info__.parser__->fsm_tbl__; + unsigned long usl = strtoul(fsm->hex_data_.c_str(),0,16); + unsigned char c = usl; + fsm->data_ += "\\x"; + fsm->data_ += c; + fsm->hex_data_.clear(); + +} + +Rhex::Rhex(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rhex",0,Cesc_seq::R_Rhex_,P,false,false){ +} + +Rhex_nos::Rhex_nos(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rhex_nos",0,Cesc_seq::R_Rhex_nos_,P,false,false){ +} + +Rhex_no::Rhex_no(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rhex_no",0,Cesc_seq::R_Rhex_no_,P,false,false){ +} + +Rhex_no_digit::Rhex_no_digit(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rhex_no_digit",0,Cesc_seq::R_Rhex_no_digit_,P,false,false){ +} + +void Rhex_no_digit::op(){ + sstrace_rulesss + + Cesc_seq* fsm = (Cesc_seq*) 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->hex_data_ += sym->id__; + +} +Rhex_no_letter::Rhex_no_letter(yacco2::Parser* P) + :CAbs_lr1_sym + ("Rhex_no_letter",0,Cesc_seq::R_Rhex_no_letter_,P,false,false){ +} + +void Rhex_no_letter::op(){ + sstrace_rulesss + + Cesc_seq* fsm = (Cesc_seq*) 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->hex_data_ += sym->id__; + +} +Roctal::Roctal(yacco2::Parser* P) + :CAbs_lr1_sym + ("Roctal",0,Cesc_seq::R_Roctal_,P,false,false){ +} + +Roctal_no::Roctal_no(yacco2::Parser* P) + :CAbs_lr1_sym + ("Roctal_no",0,Cesc_seq::R_Roctal_no_,P,false,false){ +} + +void Roctal_no::op(){ + sstrace_rulesss + + Cesc_seq* fsm = (Cesc_seq*) 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->octal_data_ += sym->id__; + +} |