/*193:*/ //#line 553 "/usr/local/yacco2/library/thread.w" /*565:*/ //#line 24 "/usr/local/yacco2/library/macros.w" /*:565*/ //#line 554 "/usr/local/yacco2/library/thread.w" /*23:*/ //#line 392 "/usr/local/yacco2/library/intro.w" using namespace yacco2; /*:23*/ //#line 555 "/usr/local/yacco2/library/thread.w" /*200:*/ //#line 650 "/usr/local/yacco2/library/thread.w" char ma[SMALL_BUFFER_4K]; const char*pp_start= "YACCO2_MSG__::%i::%s start parsing\n"; const char*pp_stop= "YACCO2_MSG__::%i::%s stop parsing\n"; /*23:*/ //#line 392 "/usr/local/yacco2/library/intro.w" using namespace yacco2; /*:23*/ //#line 654 "/usr/local/yacco2/library/thread.w" /*:200*/ //#line 556 "/usr/local/yacco2/library/thread.w" /*202:*/ //#line 663 "/usr/local/yacco2/library/thread.w" Parser pp_parser(ssPARSE_TABLE,pp_thread_entry,Caller_pp); /*:202*/ //#line 557 "/usr/local/yacco2/library/thread.w" /*201:*/ //#line 657 "/usr/local/yacco2/library/thread.w" pp_parser.pp_requesting_parallelism__= Caller_pp; pp_parser.from_thread__= Caller_pp; pp_parser.no_competing_pp_ths__= Caller_pp->no_requested_ths_to_run__; /*:201*/ //#line 558 "/usr/local/yacco2/library/thread.w" do{ /*199:*/ //#line 618 "/usr/local/yacco2/library/thread.w" pp_parser.override_current_token(*pp_parser.pp_requesting_parallelism__->current_token() ,pp_parser.pp_requesting_parallelism__->current_token_pos__); pp_parser.set_start_token(*pp_parser.pp_requesting_parallelism__->current_token()); pp_parser.set_start_token_pos(pp_parser.pp_requesting_parallelism__->current_token_pos__); pp_parser.top_stack_record()->set_symbol(pp_parser.current_token()); pp_parser.token_supplier__= pp_parser.pp_requesting_parallelism__->token_supplier__; pp_parser.token_producer__= pp_parser.pp_requesting_parallelism__->token_producer__; pp_parser.error_queue__= pp_parser.pp_requesting_parallelism__->error_queue__; pp_parser.recycle_bin__= pp_parser.pp_requesting_parallelism__->recycle_bin__; pp_parser.sym_lookup_functor__= pp_parser.pp_requesting_parallelism__->sym_lookup_functor__; pp_parser.supplier_r_w_cnt__= pp_parser.pp_requesting_parallelism__->supplier_r_w_cnt__; if(pp_parser.th_blk__.grammar_s_parser__!=&pp_parser){ char a[BUFFER_SIZE]; yacco2::KCHARP msg= "parser's thd blk's pp addr != itself thd: %i::%s"; sprintf(a,msg,pp_parser.thread_no__,pp_parser.thread_name()); Yacco2_faulty_precondition(a,__FILE__,__LINE__); exit(1); } if(pp_parser.th_blk__.grammar_s_parser__->pp_requesting_parallelism__ !=pp_parser.pp_requesting_parallelism__){ char a[BUFFER_SIZE]; yacco2::KCHARP msg= "caller's pp addr not = in called parser's thd blk ptr, and its parser thd: %i::%s"; sprintf(a,msg,pp_parser.thread_no__,pp_parser.thread_name()); Yacco2_faulty_precondition(a,__FILE__,__LINE__); exit(1); } /*:199*/ //#line 560 "/usr/local/yacco2/library/thread.w" /*637:*/ //#line 1330 "/usr/local/yacco2/library/macros.w" if(yacco2::YACCO2_MSG__){ /*389:*/ //#line 3053 "/usr/local/yacco2/library/parser.w" LOCK_MUTEX(yacco2::TRACE_MU); if(yacco2::YACCO2_MU_TRACING__){ yacco2::lrclog<<"YACCO2_MU_TRACING__::Acquired trace mu"<no_requested_ths_to_run__ <<" Caller's # active threads: "<th_active_cnt__ <<" Self # competing threads: "<current_token() <<'"'<id__<<'"' <<" pos: "<tok_co_ords__.line_no__ <<" GPS CHR POS: " <tok_co_ords__.pos_in_line__ <enumerated_id__ <<" pos: "<id__<<'"' <tok_co_ords__.line_no__ <<" GPS CHR POS: " <tok_co_ords__.pos_in_line__ <tok_co_ords__.line_no__ <<" GPS CHR POS: " <tok_co_ords__.pos_in_line__ <symbol__; if(sym!=0){ if(sym->auto_delete__==ON){ /*640:*/ //#line 1470 "/usr/local/yacco2/library/macros.w" if(yacco2::YACCO2_TH__){ THREAD_NO tid= pp_parser.thread_no__; /*389:*/ //#line 3053 "/usr/local/yacco2/library/parser.w" LOCK_MUTEX(yacco2::TRACE_MU); if(yacco2::YACCO2_MU_TRACING__){ yacco2::lrclog<<"YACCO2_MU_TRACING__::Acquired trace mu"<id__<<"::" <id__ <set_symbol(0); } pp_parser.parse_stack__.lr_stk_init(*pp_parser.fsm_tbl__->start_state__); /*:197*/ //#line 564 "/usr/local/yacco2/library/thread.w" /*196:*/ //#line 586 "/usr/local/yacco2/library/thread.w" pp_parser.use_all_shift__= ON; pp_parser.abort_parse__= OFF; pp_parser.stop_parse__= OFF; pp_parser.has_questionable_shift_occured__= OFF; /*:196*/ //#line 565 "/usr/local/yacco2/library/thread.w" /*642:*/ //#line 1495 "/usr/local/yacco2/library/macros.w" if(yacco2::YACCO2_MSG__){ /*389:*/ //#line 3053 "/usr/local/yacco2/library/parser.w" LOCK_MUTEX(yacco2::TRACE_MU); if(yacco2::YACCO2_MU_TRACING__){ yacco2::lrclog<<"YACCO2_MU_TRACING__::Acquired trace mu"<PP waiting for work: " <PP go process work: " <PP finished working" <