/*55:*/
//#line 77 "/usr/local/yacco2/library/rc.w"

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



/*:565*/
//#line 78 "/usr/local/yacco2/library/rc.w"

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

#include "yacco2.h"

/*:26*/
//#line 79 "/usr/local/yacco2/library/rc.w"

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

#include "yacco2_characters.h"

/*:27*/
//#line 80 "/usr/local/yacco2/library/rc.w"

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

#include "yacco2_k_symbols.h"

/*:28*/
//#line 81 "/usr/local/yacco2/library/rc.w"

using namespace NS_yacco2_characters;
/*54:*/
//#line 38 "/usr/local/yacco2/library/rc.w"

int yacco2::rc_map::current_rc_malloc_sub__(-1);
char yacco2::rc_map::array_chr_sym__[SIZE_RC_MALLOC];
yacco2::KCHARP yacco2::rc_map::chr_literal__[ASCII_8_BIT]= 
{"\x00","\x01","\x02","\x03","\x04","\x05","\x06","\x07","\x08","\x09","\x0a"
,"\x0b","\x0c","\x0d","\x0e","\x0f"
,"\x10","\x11","\x12","\x13","\x14","\x15","\x16","\x17","\x18","\x19","\x1a"
,"\x1b","\x1c","\x1d","\x1e","\x1f"
,"\x20","\x21","\x22","\x23","\x24","\x25","\x26","\x27","\x28","\x29","\x2a"
,"\x2b","\x2c","\x2d","\x2e","\x2f"
,"\x30","\x31","\x32","\x33","\x34","\x35","\x36","\x37","\x38","\x39","\x3a"
,"\x3b","\x3c","\x3d","\x3e","\x3f"
,"\x40","\x41","\x42","\x43","\x44","\x45","\x46","\x47","\x48","\x49","\x4a"
,"\x4b","\x4c","\x4d","\x4e","\x4f"
,"\x50","\x51","\x52","\x53","\x54","\x55","\x56","\x57","\x58","\x59","\x5a"
,"\x5b","\x5c","\x5d","\x5e","\x5f"
,"\x60","\x61","\x62","\x63","\x64","\x65","\x66","\x67","\x68","\x69","\x6a"
,"\x6b","\x6c","\x6d","\x6e","\x6f"
,"\x70","\x71","\x72","\x73","\x74","\x75","\x76","\x77","\x78","\x79","\x7a"
,"\x7b","\x7c","\x7d","\x7e","\x7f"
,"\x80","\x81","\x82","\x83","\x84","\x85","\x86","\x87","\x88","\x89","\x8a"
,"\x8b","\x8c","\x8d","\x8e","\x8f"
,"\x90","\x91","\x92","\x93","\x94","\x95","\x96","\x97","\x98","\x99","\x9a"
,"\x9b","\x9c","\x9d","\x9e","\x9f"
,"\xa0","\xa1","\xa2","\xa3","\xa4","\xa5","\xa6","\xa7","\xa8","\xa9","\xaa"
,"\xab","\xac","\xad","\xae","\xaf"
,"\xb0","\xb1","\xb2","\xb3","\xb4","\xb5","\xb6","\xb7","\xb8","\xb9","\xba"
,"\xbb","\xbc","\xbd","\xbe","\xbf"
,"\xc0","\xc1","\xc2","\xc3","\xc4","\xc5","\xc6","\xc7","\xc8","\xc9","\xca"
,"\xcb","\xcc","\xcd","\xce","\xcf"
,"\xd0","\xd1","\xd2","\xd3","\xd4","\xd5","\xd6","\xd7","\xd8","\xd9","\xda"
,"\xdb","\xdc","\xdd","\xde","\xdf"
,"\xe0","\xe1","\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea"
,"\xeb","\xec","\xed","\xee","\xef"
,"\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xf7","\xf8","\xf9","\xfa"
,"\xfb","\xfc","\xfd","\xfe","\xff"
};

/*:54*//*56:*/
//#line 89 "/usr/local/yacco2/library/rc.w"

yacco2::CAbs_lr1_sym*
yacco2::rc_map::
map_char_to_raw_char_sym
(yacco2::UINT Char,yacco2::UINT File_no,yacco2::UINT Pos,UINT*Line_no,UINT*Pos_in_line){
map_char_to_symbol:
/*548:*/
//#line 65 "/usr/local/yacco2/library/constraints.w"

if(File_no<1){

yacco2::KCHARP msg= "Error - File_no not 1 or greater";
Yacco2_faulty_precondition(msg,__FILE__,__LINE__);
exit(1);
}

/*:548*/
//#line 95 "/usr/local/yacco2/library/rc.w"

if(Char>=rc_size_){
/*562:*/
//#line 241 "/usr/local/yacco2/library/constraints.w"

char a[BUFFER_SIZE];

yacco2::KCHARP msg= 
"Error - Bad char mapping chr value: %i";
sprintf(a,msg,Char);
Yacco2_faulty_precondition(a,__FILE__,__LINE__);
exit(1);

/*:562*/
//#line 97 "/usr/local/yacco2/library/rc.w"

return 0;
}
/*646:*/
//#line 1538 "/usr/local/yacco2/library/macros.w"

if(yacco2::YACCO2_TLEX__){
/*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 1540 "/usr/local/yacco2/library/macros.w"

yacco2::lrclog
<<"YACCO2_TLEX__:: "<<"chr: "<<Char<<" File: "
<<File_no<<" 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 1545 "/usr/local/yacco2/library/macros.w"

}

/*:646*/
//#line 100 "/usr/local/yacco2/library/rc.w"

if(Char==EOF_CHAR_SUB){
yacco2::PTR_LR1_eog__->tok_co_ords__.external_file_id__= File_no;
yacco2::PTR_LR1_eog__->tok_co_ords__.rc_pos__= Pos;
yacco2::PTR_LR1_eog__->set_line_no_and_pos_in_line(*Line_no,1);
return yacco2::PTR_LR1_eog__;
}
/*57:*/
//#line 121 "/usr/local/yacco2/library/rc.w"

++rc_map::current_rc_malloc_sub__;
long rc_sub= current_rc_malloc_sub__*SIZE_CAbs_lr1_sym;
if(rc_sub> SIZE_RC_MALLOC){
/*563:*/
//#line 251 "/usr/local/yacco2/library/constraints.w"

char a[BUFFER_SIZE];

yacco2::KCHARP msg= 
"Error - Sorry run out of raw character storage: need to regen Yacco2: %i";
sprintf(a,msg,SIZE_RC_MALLOC);
Yacco2_faulty_precondition(a,__FILE__,__LINE__);
exit(1);
//#line 1 "/usr/local/yacco2/library/macros.w"







/*:563*/
//#line 125 "/usr/local/yacco2/library/rc.w"

}
CAbs_lr1_sym*sym= (CAbs_lr1_sym*)&rc_map::array_chr_sym__[rc_sub];
sym->id__= rc_map::chr_literal__[Char];
sym->enumerated_id__= Char+START_OF_RC_ENUM;
sym->tok_co_ords__.external_file_id__= File_no;
sym->tok_co_ords__.rc_pos__= Pos;

/*49:*/
//#line 113 "/usr/local/yacco2/library/set.w"

INT R= sym->enumerated_id__%SET_ELEM_NO_BITS;
sym->tok_co_ords__.set_entry__.partition__
= sym->enumerated_id__/SET_ELEM_NO_BITS;
sym->tok_co_ords__.set_entry__.elements__= 1<<R;

/*:49*/
//#line 133 "/usr/local/yacco2/library/rc.w"

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







/*:57*/
//#line 107 "/usr/local/yacco2/library/rc.w"

++(*Pos_in_line);
sym->set_line_no_and_pos_in_line(*Line_no,*Pos_in_line);
if(Char==LINE_FEED){
++(*Line_no);
*Pos_in_line= START_CHAR_POS;
}
return sym;
}

/*:56*/
//#line 83 "/usr/local/yacco2/library/rc.w"


/*:55*/
