void MRF2YH2MRF::FsTags2YmmTags( const FSXSTRING* p_sona, MRFTUL* p_mTul, FSXSTRING& yhmarg1, FSXSTRING& yhmarg2, FSXSTRING& yhmarg3 ) const { FSUNUSED(yhmarg3); MRF2YH_LOEND* p_rec; const FSWCHAR* p_yTag; // punktuatsioon --> ühestajamärgendiks if(p_mTul->sl==FSWSTR("Z")) // sõnaliik oli punktuatsioon { p_rec=punktuatsioon.Get((FSWCHAR*)(const FSWCHAR*)*p_sona); if(p_rec!= NULL) // oli meie punktuatsiooni loendis { //p_mTul->mrg1st=p_rec->p_yhTag; yhmarg1=p_rec->p_yhTag; return; } // p_rec==NULL -- polnud loendis... else // vt kas esimene m�rk oli loendis { FSXSTRING algustht = p_sona->Left(1); p_rec=punktuatsioon.Get((FSWCHAR*)(const FSWCHAR*)algustht); if(p_rec!= NULL) // oli meie punktuatsiooni loendis { //p_mTul->mrg1st=p_rec->p_yhTag; yhmarg1=p_rec->p_yhTag; return; } } // p_rec==NULL -- polnud loendis... //p_mTul->mrg1st=FSWSTR("WIE"); //...vaikimisi see //p_mTul->mrg1st=FSWSTR("X"); //...vaikimisi see yhmarg1=FSWSTR("X"); //...vaikimisi see return; } // sõna --> ühestajamärgendiks // if(sonaliik != "H") if(p_mTul->sl[0]!=(FSWCHAR)'H') { p_rec=sona.Get((FSWCHAR*)(const FSWCHAR*)*p_sona); if(p_rec!= NULL) // oli meie sõnade loendis { //p_mTul->mrg1st=p_rec->p_yhTag; yhmarg1=p_rec->p_yhTag; return; } } // endif // sõnaliik + sõna --> ühestajamärgendiks // DXIG -> RR RR II ASG t��tlus if(muut1.Find(p_mTul->sl[0]) >= 0) // sõnaliik oli 'muut1' loendis { p_rec=rr.Get((FSWCHAR*)(const FSWCHAR*)*p_sona); if(p_rec!= NULL) // { //p_mTul->mrg1st=p_rec->p_yhTag; yhmarg1=p_rec->p_yhTag; return; } // p_rec==NULL -- polnud loendis... if((p_rec=noomTags.Get((FSWCHAR*)(const FSWCHAR*)(p_mTul->sl)))!=NULL) { // märgendi 1. pool //p_mTul->mrg1st=p_rec->p_yhTag; // tuleneb sõnaliigist yhmarg1=p_rec->p_yhTag; return; } //p_mTul->mrg1st=FSWSTR("RR"); //...vaikimisi see VALE!!!! // return; } // sõnaliik + sõnalõpp --> ühestajamärgendiks // nud-tud-dud lõpulised V, A -> VMAZ (partitsiip) if(verb_v_adj.Find(p_mTul->sl[0]) >= 0) // sõnaliik oli 'verb_v_adj' loendis { // kas sõna "[ntd]ud" lõpuline if(TaheHulgad::OnLopus(p_sona, FSWSTR("nud"))==true || TaheHulgad::OnLopus(p_sona, FSWSTR("tud"))==true || TaheHulgad::OnLopus(p_sona, FSWSTR("dud"))==true ) { //p_mTul->mrg1st=FSWSTR("VMAZ"); yhmarg1=FSWSTR("VMAZ"); return; //?? } //return; //?? } // sõnaliik + sõnalõpp --> ühestajamärgendiks // nud-tud lõpulised S -> VMAZ (partitsiip) // if(p_mTul->sl[0] == (FSWCHAR)'S') // { // // kas sõna "[nt]ud" lõpuline // if(TaheHulgad::OnLopus(p_sona, FSWSTR("nud"))==true || // TaheHulgad::OnLopus(p_sona, FSWSTR("tud"))==true ) // { // p_mTul->mrg1st=FSWSTR("VMAZ"); // return; //?? // } // // return; //?? // } // yks ja teine -> YKS* ja TEINE* if(yks_v_teine_sonaliik.Find(p_mTul->sl[0]) >= 0) // sõnaliik oli 'yks_v_teine_sonaliik' loendis { //p_rec=yksTeine.Get((FSWCHAR*)(const FSWCHAR*)*p_sona); p_rec=yksTeine.Get((FSWCHAR*)(const FSWCHAR*)p_mTul->tyvi); if(p_rec!= NULL) // oli loendis { // märgendi 1. pool //p_mTul->mrg1st=p_rec->p_yhTag; // tuleneb sõnast yhmarg1=p_rec->p_yhTag; p_yTag=Kaane(&(p_mTul->vormid)); if(p_yTag==NULL) // seda ei tohiks olla { //p_mTul->mrg1st=FSWSTR("PSX"); // TUNDMATU_P_YM yhmarg1=FSWSTR("PSX"); // TUNDMATU_P_YM return; } //p_mTul->mrg1st +=p_yTag; // märgendi 2. pool, yhmarg1 += p_yTag; // märgendi 2. pool, return; // tuleneb käändevormist } // p_rec==NULL -- polnud loendis, ei tee midagi } // P -> PP1 PP2 PP3 juhtumi tõõtlus if(p_mTul->sl[0] == (FSWCHAR)'P') { //p_rec=ase.Get((FSWCHAR*)(const FSWCHAR*)*p_sona); p_rec=ase.Get((FSWCHAR*)(const FSWCHAR*)p_mTul->tyvi); if(p_rec!= NULL) { // märgendi 1. pool //p_mTul->mrg1st=p_rec->p_yhTag; // tuleneb sõnast yhmarg1=p_rec->p_yhTag; p_yTag=Kaane(&(p_mTul->vormid)); if(p_yTag==NULL) // seda ei tohiks olla { //p_mTul->mrg1st=FSWSTR("PSX"); // TUNDMATU_P_YM yhmarg1=FSWSTR("PSX"); // TUNDMATU_P_YM return; } // märgendi 2. pool, //p_mTul->mrg1st += p_yTag; // tuleneb käädevormist yhmarg1 += p_yTag; // tuleneb käädevormist if(*p_sona == FSWSTR("tema") && yhmarg1==FSWSTR("PP3SG")) // väga kole!!! { // mõhh??? //p_mTul->mrg1st=FSWSTR("M"); //yhmarg1=FSWSTR("PP3SN"); HJK 23.11.2004 prooviks ikka ühestada... return; } return; } // p_rec==NULL -- polnud loendis, ei tee midagi } // ACUSHNOPY -> A, A, A, NC, NP, MC, MO, P, Y töötlus if((p_rec=noomTags.Get((FSWCHAR*)(const FSWCHAR*)(p_mTul->sl)))!=NULL) { // märgendi 1. pool //p_mTul->mrg1st=p_rec->p_yhTag; // tuleneb sõnaliigist yhmarg1=p_rec->p_yhTag; // tuleneb sõnaliigist p_yTag=Kaane(&(p_mTul->vormid)); if(p_yTag==NULL) { if(p_mTul->sl==FSWSTR("A")) { // MRF2YH_LOEND* p_rec2; if((p_rec2=asxrr.Get((FSWCHAR*)(const FSWCHAR*) (p_mTul->sl)))!=NULL) { //p_mTul->mrg1st=p_rec2->p_yhTag; // ASXRR asemele yhmarg1=p_rec2->p_yhTag; // ASXRR asemele return; } //p_mTul->mrg1st += FSWSTR("SX"); // MUUTUMATU_NOOMENI_TUNNUS yhmarg1 += FSWSTR("SX"); // MUUTUMATU_NOOMENI_TUNNUS return; // sappa juurde } if(TaheHulgad::OnLopus(&yhmarg1, FSWSTR("NP"))==true) { // et ei tekiks NPSX keerame ...NP --> ...NC //p_mTul->mrg1st.Delete(p_mTul->mrg1st.GetLength()-1); if(p_mTul->mrg1st.GetLength()>0) //TV071109 yhmarg1.Delete(p_mTul->mrg1st.GetLength()-1); //p_mTul->mrg1st += FSWSTR("C"); yhmarg1 += FSWSTR("C"); } //p_mTul->mrg1st += FSWSTR("SX"); // MUUTUMATU_NOOMENI_TUNNUS yhmarg1 += FSWSTR("SX"); // MUUTUMATU_NOOMENI_TUNNUS return; // sappa juurde } //p_mTul->mrg1st += p_yTag; // märgendi 2. pool yhmarg1 += p_yTag; // märgendi 2. pool return; // tulenb käändevormist } // J -> CS ja CC töötlus if(p_mTul->sl[0] == (FSWCHAR)'J') { p_rec=sidec.Get((FSWCHAR*)(const FSWCHAR*)*p_sona); if(p_rec!= NULL) { //p_mTul->mrg1st=p_rec->p_yhTag; yhmarg1=p_rec->p_yhTag; return; } //p_mTul->mrg1st=FSWSTR("CS"); yhmarg1=FSWSTR("CS"); return; } // K -> SP ja ST töötlus if(p_mTul->sl[0] == (FSWCHAR)'K') { // TODO:: Kaas2Yh(p_sona, yhmarg1, yhmarg2); // if(p_yTag==NULL) // seda ei tohiks olla // { // p_mTul->mrg1st=FSWSTR("ST"); // return; // } //p_mTul->mrg1st=p_yTag; return; } // V -> VM töötlus if(p_mTul->sl[0] == (FSWCHAR)'V') { //p_mTul->mrg1st=FSWSTR("VM"); // VERBI_YM yhmarg1=FSWSTR("VM"); // VERBI_YM p_yTag=Poore(&(p_mTul->vormid)); if(p_yTag==NULL) { //p_mTul->mrg1st += FSWSTR("S"); // MUUTUMATU_VERBI_TUNNUS yhmarg1 += FSWSTR("S"); // MUUTUMATU_VERBI_TUNNUS return; } if(sid_variandid==p_yTag) { // siin toimub veel midagi segast //p_mTul->mrg1st += FSWSTR("3"); // YM_MA_VAHE yhmarg2 = yhmarg1; yhmarg1 += FSWSTR("2"); // YM_MA_VAHE yhmarg2 += FSWSTR("3"); // YM_MA_VAHE return; } //p_mTul->mrg1st += p_yTag; yhmarg1 += p_yTag; return; } assert(false); //p_mTul->mrg1st=FSWSTR("X"); // TUNDMATU_LOOM yhmarg1=FSWSTR("X"); // TUNDMATU_LOOM }