/*76:*/
//#line 18 "/usr/local/yacco2/library/tok_can.w"

/*565:*/
//#line 24 "/usr/local/yacco2/library/macros.w"



/*:565*/
//#line 19 "/usr/local/yacco2/library/tok_can.w"

/*26:*/
//#line 404 "/usr/local/yacco2/library/intro.w"

#include "yacco2.h"

/*:26*/
//#line 20 "/usr/local/yacco2/library/tok_can.w"

/*27:*/
//#line 408 "/usr/local/yacco2/library/intro.w"

#include "yacco2_characters.h"

/*:27*/
//#line 21 "/usr/local/yacco2/library/tok_can.w"

/*28:*/
//#line 412 "/usr/local/yacco2/library/intro.w"

#include "yacco2_k_symbols.h"

/*:28*/
//#line 22 "/usr/local/yacco2/library/tok_can.w"

using namespace NS_yacco2_characters;
/*23:*/
//#line 392 "/usr/local/yacco2/library/intro.w"

using namespace yacco2;

/*:23*/
//#line 24 "/usr/local/yacco2/library/tok_can.w"

/*77:*/
//#line 28 "/usr/local/yacco2/library/tok_can.w"


/*:77*//*84:*/
//#line 483 "/usr/local/yacco2/library/tok_can.w"

yacco2::tok_can<std::string> ::tok_can()
:tok_base(1)
,pos_(0)
,have_1st_rec__(false)
,file_no__(MAX_USINT)
,line_no__(START_LINE_NO)
,pos_in_line__(START_CHAR_POS)
,string__(std::string())
,eof_sym_(0)
,real_start_pos_in_line_(START_CHAR_POS)
,eof_pos_(0)
,gps__(0)
{}

yacco2::tok_can<std::string> ::tok_can(const char*String,CAbs_lr1_sym*GPS)
:tok_base(1)
,pos_(0)
,have_1st_rec__(false)
,file_no__(MAX_USINT)
,line_no__(START_LINE_NO)
,pos_in_line__(START_CHAR_POS)
,string__(String)
,eof_sym_(0)
,real_start_pos_in_line_(START_CHAR_POS)
,eof_pos_(0)
,gps__(GPS)
{
if(GPS==0)return;
line_no__= GPS->tok_co_ords__.line_no__;
pos_in_line__= GPS->tok_co_ords__.pos_in_line__;
file_no__= GPS->tok_co_ords__.external_file_id__;
real_start_pos_in_line_= pos_in_line__;
}

void yacco2::tok_can<std::string> ::set_gps(CAbs_lr1_sym*GPS){
gps__= GPS;
if(GPS==0)return;
line_no__= GPS->tok_co_ords__.line_no__;
pos_in_line__= GPS->tok_co_ords__.pos_in_line__;
file_no__= GPS->tok_co_ords__.external_file_id__;
real_start_pos_in_line_= pos_in_line__;
}
yacco2::CAbs_lr1_sym*yacco2::tok_can<std::string> ::gps_used(){
return gps__;
}

yacco2::tok_can<std::string> ::~tok_can(){}

bool yacco2::tok_can<std::string> ::empty(){
if(string__.empty()==true)return YES;
return NO;
}
void yacco2::tok_can<std::string> ::reuse_string(const char*Str,CAbs_lr1_sym*GPS){
string__.erase();
string__+= Str;
file_no__= MAX_USINT;
line_no__= START_LINE_NO;
pos_in_line__= START_CHAR_POS;
eof_sym_= 0;
real_start_pos_in_line_= START_CHAR_POS;
eof_pos_= 0;
if(GPS==0)return;
set_gps(GPS);
}

/*:84*//*85:*/
//#line 572 "/usr/local/yacco2/library/tok_can.w"

yacco2::CAbs_lr1_sym*yacco2::tok_can<std::string> ::operator[](yacco2::UINT Pos){
CAbs_lr1_sym*sym(0);
if(eof_pos_==EOF)return eof_sym_;
fetch_char:
if(have_1st_rec__==false){
have_1st_rec__= true;
pos_= 0;
}else{
if(Pos<=pos_){
return container__[Pos];
}
++pos_;
}
if(r_w_cnt__> 1){
/*391:*/
//#line 3068 "/usr/local/yacco2/library/parser.w"

LOCK_MUTEX(yacco2::TOKEN_MU);

/*:391*/
//#line 587 "/usr/local/yacco2/library/tok_can.w"

}
for(;;){
char c;
if(pos_>=string__.size()){
eof_pos_= EOF;
++pos_;
sym= RC__.map_char_to_raw_char_sym(EOF_CHAR_SUB,file_no__,pos_
,&line_no__,&pos_in_line__);
eof_sym_= sym;
container__.push_back(*sym);
container__.push_back(*sym);
return sym;
}
c= string__[pos_];
convert_char_to_unsigned_value:
unsigned char uc= c;
UINT slno= line_no__;
sym= RC__.map_char_to_raw_char_sym(uc,file_no__,pos_,&line_no__,&pos_in_line__);
if(gps__!=0){
line_no__= slno;
pos_in_line__= real_start_pos_in_line_+pos_;
}
container__.push_back(*sym);
if(Pos==pos_)break;
++pos_;
continue;
};
if(r_w_cnt__> 1){
/*392:*/
//#line 3072 "/usr/local/yacco2/library/parser.w"

UNLOCK_MUTEX(yacco2::TOKEN_MU);

/*:392*/
//#line 616 "/usr/local/yacco2/library/tok_can.w"

}
return sym;
}
/*:85*//*86:*/
//#line 621 "/usr/local/yacco2/library/tok_can.w"

yacco2::UINT yacco2::tok_can<std::string> ::size(){
return string__.size();
}

/*:86*//*87:*/
//#line 627 "/usr/local/yacco2/library/tok_can.w"

yacco2::UINT yacco2::tok_can<std::string> ::pos(){return pos_;}

void yacco2::tok_can<std::string> ::push_back(yacco2::CAbs_lr1_sym&Tok){
container__.push_back(Tok);
}

void yacco2::tok_can<std::string> ::clear(){container__.clear();
pos_= 0;
have_1st_rec__= false;
file_no__= MAX_USINT;
line_no__= START_LINE_NO;
pos_in_line__= START_CHAR_POS;
string__.clear();
eof_sym_= 0;
real_start_pos_in_line_= START_CHAR_POS;
eof_pos_= 0;
gps__= 0;
}

TOKEN_GAGGLE&yacco2::tok_can<std::string> ::container(){
return container__;
}

void tok_can<std::string> ::remove(){}

void yacco2::tok_can<std::string> ::set_string(const char*String){
string__+= String;
}

std::string*yacco2::tok_can<std::string> ::string_used(){return&string__;};


/*:87*//*88:*/
//#line 664 "/usr/local/yacco2/library/tok_can.w"

yacco2::tok_can<std::ifstream> ::tok_can()
:tok_base(1)
,pos_(0)
,have_1st_rec__(false)
,eof_pos_(EOF)
,file_ok_(NO)
,line_no__(START_LINE_NO)
,pos_in_line__(START_CHAR_POS)
,file_name__(std::string())
{}

yacco2::tok_can<std::ifstream> ::tok_can(const char*File_name)
:tok_base(1)
,pos_(0)
,have_1st_rec__(false)
,eof_pos_(EOF)
,file_ok_(NO)
,line_no__(START_LINE_NO)
,pos_in_line__(START_CHAR_POS)
,file_name__(File_name)
{
open_file();
}

yacco2::tok_can<std::ifstream> ::~tok_can(){
if(file_ok_==YES)
file__.close();
}

bool yacco2::tok_can<std::ifstream> ::empty(){
if(have_1st_rec__==false)return YES;
return NO;
}

/*:88*//*89:*/
//#line 703 "/usr/local/yacco2/library/tok_can.w"

bool yacco2::tok_can<std::ifstream> ::file_ok(){
return file_ok_;
}

/*:89*//*90:*/
//#line 715 "/usr/local/yacco2/library/tok_can.w"

yacco2::CAbs_lr1_sym*yacco2::tok_can<std::ifstream> ::operator[](yacco2::UINT Pos){
if(file_ok_==NO){
char a[BUFFER_SIZE];

yacco2::KCHARP msg= 
"tok_can<ifstream>operator[] trying to access file that is bad: %s, position %i ";
sprintf(a,msg,file_name__.c_str(),Pos);
Yacco2_faulty_precondition(a,__FILE__,__LINE__);
exit(1);
}

CAbs_lr1_sym*sym(0);
if(eof_pos_==EOF&&Pos>=pos_){
return container__[pos_];
}
fetch_char:
if(have_1st_rec__==false){
have_1st_rec__= true;
pos_= 0;
}else{
if(Pos<=pos_){
return container__[Pos];
}
++pos_;
}
if(r_w_cnt__> 1){
/*391:*/
//#line 3068 "/usr/local/yacco2/library/parser.w"

LOCK_MUTEX(yacco2::TOKEN_MU);

/*:391*/
//#line 742 "/usr/local/yacco2/library/tok_can.w"

}
for(;;){
char c;
file__>>c;
if((file__.good()==false)or(file__.eof()==true)){
eof_pos_= EOF;
++pos_;
sym= RC__.map_char_to_raw_char_sym(EOF_CHAR_SUB,file_no__,pos_
,&line_no__,&pos_in_line__);
container__.push_back(*sym);
container__.push_back(*sym);
return sym;
}
convert_char_to_unsigned_value:
unsigned char uc= c;
sym= RC__.map_char_to_raw_char_sym(uc,file_no__,pos_,&line_no__,&pos_in_line__);
container__.push_back(*sym);
if(Pos==pos_)break;
++pos_;
continue;
};
if(r_w_cnt__> 1){
/*392:*/
//#line 3072 "/usr/local/yacco2/library/parser.w"

UNLOCK_MUTEX(yacco2::TOKEN_MU);

/*:392*/
//#line 765 "/usr/local/yacco2/library/tok_can.w"

}
return sym;
}
/*:90*//*91:*/
//#line 784 "/usr/local/yacco2/library/tok_can.w"

yacco2::UINT yacco2::tok_can<std::ifstream> ::size(){
return INT_MAX;
}

/*:91*//*92:*/
//#line 798 "/usr/local/yacco2/library/tok_can.w"

void yacco2::tok_can<std::ifstream> ::open_file(){
CAbs_lr1_sym*sym(0);
open_file:
file__.open(file_name__.c_str(),std::ios::in);
if(file__.is_open())goto filename_opened;
else goto filename_bad;

filename_opened:{
file_ok_= YES;
++yacco2::FILE_CNT__;
have_1st_rec__= true;
pos_= 0;
if(yacco2::FILE_CNT__==1){
std::string empty;
yacco2::FILE_TBL__.push_back(empty);
}
yacco2::STK_FILE_NOS__.push_back(yacco2::FILE_CNT__);
file_no__= yacco2::STK_FILE_NOS__.back();
yacco2::FILE_TBL__.push_back(file_name__);
eof_pos_= 0;
set_dont_skip_any_chars:
file__>>std::noskipws;
for(;eof_pos_!=EOF;++pos_){
char c;
if(file__.good()==true){
file__>>c;
}
if(file__.eof()==true)goto eoroad;
if(file__.fail()==true)goto eoroad;
convert_char_to_unsigned_value:
unsigned char uc= c;
sym= RC__.map_char_to_raw_char_sym(uc,file_no__,pos_,&line_no__,&pos_in_line__);
container__.push_back(*sym);
}
}
filename_bad:{
eof_pos_= EOF;
file_ok_= NO;
return;
}
eoroad:{
eof_pos_= EOF;
++pos_;
sym= RC__.map_char_to_raw_char_sym(EOF_CHAR_SUB,file_no__,pos_
,&line_no__,&pos_in_line__);
container__.push_back(*sym);
container__.push_back(*sym);
return;
}

}
/*:92*//*93:*/
//#line 853 "/usr/local/yacco2/library/tok_can.w"

void yacco2::tok_can<std::ifstream> ::close_file(){
if(file__.is_open()){
if(file_ok_==YES){
file__.close();
}
}
file_ok_= false;
}

/*:93*//*94:*/
//#line 864 "/usr/local/yacco2/library/tok_can.w"

yacco2::UINT yacco2::tok_can<std::ifstream> ::pos(){return pos_;}

void yacco2::tok_can<std::ifstream> ::push_back(yacco2::CAbs_lr1_sym&Tok){
container__.push_back(Tok);
}

void yacco2::tok_can<std::ifstream> ::clear(){
container__.clear();
pos_= 0;
have_1st_rec__= false;
eof_pos_= EOF;
file_ok_= NO;
line_no__= START_LINE_NO;
pos_in_line__= START_CHAR_POS;
file_name__.clear();
}

TOKEN_GAGGLE&yacco2::tok_can<std::ifstream> ::container(){
return container__;
}

void yacco2::tok_can<std::ifstream> ::remove(){}

std::string&yacco2::tok_can<std::ifstream> ::file_name(){return file_name__;}

void yacco2::tok_can<std::ifstream> ::set_file_name(const char*File_name){
file_name__+= File_name;
}

/*:94*//*95:*/
//#line 920 "/usr/local/yacco2/library/tok_can.w"

yacco2::tok_can<yacco2::AST*> ::
tok_can
(yacco2::ast_stack&Walker)
:tok_base(1)
,pos_(0)
,have_1st_rec__(false)
,tree_end_reached__(false)
,nodes_visited_()
,accept_node_level_()
,traverse_(Walker){
operator[](0);
}

yacco2::tok_can<yacco2::AST*> ::
~tok_can(){}

bool yacco2::tok_can<yacco2::AST*> ::
empty(){
return nodes_visited_.empty();
}

void yacco2::tok_can<yacco2::AST*> ::
clear(){nodes_visited_.clear();}

/*:95*//*96:*/
//#line 957 "/usr/local/yacco2/library/tok_can.w"

yacco2::CAbs_lr1_sym*
yacco2::tok_can<yacco2::AST*> ::
operator[](yacco2::UINT Pos){
AST*t;
CAbs_lr1_sym*tsym;
AST*vnode;
CAbs_lr1_sym*sym;
ast_base_stack::s_rec*srec;
if(tree_end_reached__==true){
if(Pos<pos_)goto in_bnds;
if(YACCO2_T__!=0){
/*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"<<FILE_LINE<<std::endl;
}

/*:389*/
//#line 969 "/usr/local/yacco2/library/tok_can.w"

yacco2::lrclog<<"YACCO2_T__::tok_can token eog: "
<<PTR_LR1_eog__<<" pos: "<<Pos<<__FILE__<<__LINE__<<std::endl;
/*390:*/
//#line 3060 "/usr/local/yacco2/library/parser.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<FILE_LINE<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:390*/
//#line 972 "/usr/local/yacco2/library/tok_can.w"

}
sym= PTR_LR1_eog__;
goto rtn_fnd_T;
}
first_time_accessed:
if(have_1st_rec__==false){
have_1st_rec__= true;
goto out_bnds;
}
determine_where_t_is:
if(Pos<=pos_){
goto in_bnds;
}
++pos_;
goto out_bnds;
in_bnds:
/*97:*/
//#line 1016 "/usr/local/yacco2/library/tok_can.w"

t= nodes_visited_[Pos];
tsym= AST::content(*t);
if(YACCO2_T__!=0){
/*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"<<FILE_LINE<<std::endl;
}

/*:389*/
//#line 1020 "/usr/local/yacco2/library/tok_can.w"

yacco2::lrclog<<"YACCO2_T__::tok_can in-bnds already in container token: "<<tsym->id__
<<" *: "<<tsym<<" pos: "<<Pos<<" id: "<<tsym->id__<<" enum: "
<<tsym->enumerated_id__
<<FILE_LINE<<std::endl;
yacco2::lrclog
<<"\t\t::GPS FILE: ";
EXTERNAL_GPSing(tsym)
yacco2::lrclog
<<" GPS LINE: "
<<tsym->tok_co_ords__.line_no__
<<" GPS CHR POS: "
<<tsym->tok_co_ords__.pos_in_line__
<<FILE_LINE<<std::endl;
/*390:*/
//#line 3060 "/usr/local/yacco2/library/parser.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<FILE_LINE<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:390*/
//#line 1034 "/usr/local/yacco2/library/tok_can.w"

}
/*98:*/
//#line 1041 "/usr/local/yacco2/library/tok_can.w"

if(r_w_cnt__==1)return tsym;
if(Pos<pos_)return tsym;
/*391:*/
//#line 3068 "/usr/local/yacco2/library/parser.w"

LOCK_MUTEX(yacco2::TOKEN_MU);

/*:391*/
//#line 1044 "/usr/local/yacco2/library/tok_can.w"

if(tree_end_reached__==true){
}else{
if(Pos==pos_){
++pos_;
/*100:*/
//#line 1074 "/usr/local/yacco2/library/tok_can.w"

traverse_.exec();

/*:100*/
//#line 1049 "/usr/local/yacco2/library/tok_can.w"

/*99:*/
//#line 1057 "/usr/local/yacco2/library/tok_can.w"

if(tree_end_reached__!=true){
srec= traverse_.base_stk_.cur_stk_rec_;
if(srec==0){
tree_end_reached__= true;
if(YACCO2_T__!=0){
/*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"<<FILE_LINE<<std::endl;
}

/*:389*/
//#line 1063 "/usr/local/yacco2/library/tok_can.w"

yacco2::lrclog<<"YACCO2_T__::tok_can token eog: "
<<PTR_LR1_eog__<<" pos: "<<pos_<<FILE_LINE<<std::endl;
/*390:*/
//#line 3060 "/usr/local/yacco2/library/parser.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<FILE_LINE<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:390*/
//#line 1066 "/usr/local/yacco2/library/tok_can.w"

}
}else{
/*102:*/
//#line 1093 "/usr/local/yacco2/library/tok_can.w"

vnode= traverse_.base_stk_.cur_stk_rec_->node_;
sym= AST::content(*vnode);
accept_node_level_.push_back(traverse_.base_stk_.idx_);
nodes_visited_.push_back(vnode);
if(YACCO2_T__!=0){
/*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"<<FILE_LINE<<std::endl;
}

/*:389*/
//#line 1099 "/usr/local/yacco2/library/tok_can.w"

yacco2::lrclog<<"YACCO2_T__::tok_can token: "<<sym->id__
<<" *: "<<sym<<" pos: "<<pos_
<<" requested pos: "<<Pos
<<" node*: "<<vnode
<<" node content*: "<<AST::content(*vnode)
<<FILE_LINE<<std::endl;
/*390:*/
//#line 3060 "/usr/local/yacco2/library/parser.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<FILE_LINE<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:390*/
//#line 1106 "/usr/local/yacco2/library/tok_can.w"

}

/*:102*/
//#line 1069 "/usr/local/yacco2/library/tok_can.w"

}
}

/*:99*/
//#line 1050 "/usr/local/yacco2/library/tok_can.w"

}
}
/*392:*/
//#line 3072 "/usr/local/yacco2/library/parser.w"

UNLOCK_MUTEX(yacco2::TOKEN_MU);

/*:392*/
//#line 1053 "/usr/local/yacco2/library/tok_can.w"

return tsym;

/*:98*/
//#line 1036 "/usr/local/yacco2/library/tok_can.w"


/*:97*/
//#line 989 "/usr/local/yacco2/library/tok_can.w"

out_bnds:
if(r_w_cnt__> 1){
/*391:*/
//#line 3068 "/usr/local/yacco2/library/parser.w"

LOCK_MUTEX(yacco2::TOKEN_MU);

/*:391*/
//#line 992 "/usr/local/yacco2/library/tok_can.w"

}
get_tree_rec:{
/*100:*/
//#line 1074 "/usr/local/yacco2/library/tok_can.w"

traverse_.exec();

/*:100*/
//#line 995 "/usr/local/yacco2/library/tok_can.w"

/*101:*/
//#line 1078 "/usr/local/yacco2/library/tok_can.w"

srec= traverse_.base_stk_.cur_stk_rec_;
if(srec==0){
tree_end_reached__= true;
if(YACCO2_T__!=0){
/*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"<<FILE_LINE<<std::endl;
}

/*:389*/
//#line 1083 "/usr/local/yacco2/library/tok_can.w"

yacco2::lrclog<<"YACCO2_T__::tok_can token eog: "
<<PTR_LR1_eog__<<" pos: "<<pos_<<FILE_LINE<<std::endl;
/*390:*/
//#line 3060 "/usr/local/yacco2/library/parser.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<FILE_LINE<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:390*/
//#line 1086 "/usr/local/yacco2/library/tok_can.w"

}
sym= PTR_LR1_eog__;
goto rtn_fnd_T;
}

/*:101*/
//#line 996 "/usr/local/yacco2/library/tok_can.w"

/*102:*/
//#line 1093 "/usr/local/yacco2/library/tok_can.w"

vnode= traverse_.base_stk_.cur_stk_rec_->node_;
sym= AST::content(*vnode);
accept_node_level_.push_back(traverse_.base_stk_.idx_);
nodes_visited_.push_back(vnode);
if(YACCO2_T__!=0){
/*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"<<FILE_LINE<<std::endl;
}

/*:389*/
//#line 1099 "/usr/local/yacco2/library/tok_can.w"

yacco2::lrclog<<"YACCO2_T__::tok_can token: "<<sym->id__
<<" *: "<<sym<<" pos: "<<pos_
<<" requested pos: "<<Pos
<<" node*: "<<vnode
<<" node content*: "<<AST::content(*vnode)
<<FILE_LINE<<std::endl;
/*390:*/
//#line 3060 "/usr/local/yacco2/library/parser.w"

if(yacco2::YACCO2_MU_TRACING__){
yacco2::lrclog<<"YACCO2_MU_TRACING__::Releasing trace mu"<<FILE_LINE<<std::endl;
}
UNLOCK_MUTEX(yacco2::TRACE_MU);

/*:390*/
//#line 1106 "/usr/local/yacco2/library/tok_can.w"

}

/*:102*/
//#line 997 "/usr/local/yacco2/library/tok_can.w"

if(Pos==pos_)goto rtn_fnd_T;
++pos_;
goto get_tree_rec;
}
rtn_fnd_T:
if(r_w_cnt__> 1){
/*392:*/
//#line 3072 "/usr/local/yacco2/library/parser.w"

UNLOCK_MUTEX(yacco2::TOKEN_MU);

/*:392*/
//#line 1004 "/usr/local/yacco2/library/tok_can.w"

}
return sym;
}

/*:96*//*103:*/
//#line 1110 "/usr/local/yacco2/library/tok_can.w"

yacco2::UINT
yacco2::tok_can<yacco2::AST*> ::
pos(){return pos_;}

yacco2::UINT
yacco2::tok_can<yacco2::AST*> ::
size(){
if(tree_end_reached__==true){
return nodes_visited_.size();
}
return MAX_UINT;
}

void
yacco2::tok_can<yacco2::AST*> ::
push_back(AST&Tok_ast){
nodes_visited_.push_back(&Tok_ast);
++pos_;
}
void
yacco2::tok_can<yacco2::AST*> ::
push_back(yacco2::CAbs_lr1_sym&Node){}

yacco2::ast_stack&
yacco2::tok_can<yacco2::AST*> ::
container(){
return traverse_;
}

std::vector<AST*> *
yacco2::tok_can<yacco2::AST*> ::
nodes_visited(){
return&nodes_visited_;
}

void
yacco2::tok_can<yacco2::AST*> ::
remove(){
nodes_visited_.pop_back();
--pos_;
}

yacco2::AST*
yacco2::tok_can<yacco2::AST*> ::
ast(yacco2::UINT Pos){
if(Pos> pos_)return 0;
return nodes_visited_.operator[](Pos);
}

yacco2::INT
yacco2::tok_can<yacco2::AST*> ::
accept_node_level(yacco2::UINT Pos){
if((accept_node_level_.size()-1)<Pos)return No_Token_start_pos;
return accept_node_level_.operator[](Pos);
}


//#line 1 "/usr/local/yacco2/library/structures.w"







/*:103*/
//#line 25 "/usr/local/yacco2/library/tok_can.w"


/*:76*/