📄 wordres.cpp
字号:
}
else if((p=strrchr(Word,'-'))!=NULL)
{ //连字符
char WordNext[150];
DictNode *pDictNode3;
strcpy(WordNext,p+1);
p[0]='\0';
pDictNode1 = g_objLexSearch.SearchWord(Word,nSearchMod);
p=WordNext+strlen(WordNext)-2;
strcpy(tail,p);
if(strcmp(tail,"ed")==0)
{// 名词后为-ed的还原
p[0]='\0';
pDictNode3=g_objLexSearch.SearchWord(WordNext,nSearchMod);
}
else
{
pDictNode3 = g_objLexSearch.SearchWord(WordNext,nSearchMod);
}
if(pDictNode1!=NULL || pDictNode3!=NULL)
{
/*
if(pDictNode1 ==NULL)
pDictNode1 = CreateNewWord(Word);
pDictNode2 = CreateNewWord("-");
if(pDictNode3 ==NULL)
pDictNode3 = CreateNewWord(WordNext);
pDictNode1->m_pNextWordNode = pDictNode2;
pDictNode2->m_pPrevWordNode = pDictNode1;
pDictNode2->m_pNextWordNode = pDictNode3;
pDictNode3->m_pPrevWordNode = pDictNode2;
*/
//cdq changed 12.14
if ( pDictNode1 != NULL )
{
pDictNode2=pDictNode1;
if ( pDictNode3 == NULL ||
pDictNode3->m_pFirstChin == NULL )
{
p=WordNext+strlen(WordNext)-3;
strcpy(tail,p);
if(strcmp(tail,"ths")==0 && SearchCate(pDictNode2,Cate_number) )
{// 去-s
p[2]='\0';
pDictNode3=WordRestore(WordNext,SEARCH_ALLCH);
}
else
pDictNode3=WordRestore(WordNext,SEARCH_ALLCH);
}
if ( pDictNode3->m_pFirstChin->m_pszChinese != NULL )
{//建立新的合成词
pDictNode1=CreateComposeWord(pDictNode2,pDictNode3,inputword);
}
else
{//建立生词
pDictNode1=CreateNewWord(inputword);
return pDictNode1;
}
}
else
{
p=Word+ strlen(Word)-3;
strcpy(tail,p);
if(strcmp(tail,"ing")==0)
{// 去-ing后查字典, 建立新的合成词
p[0]='\0';
pDictNode2=WordRestore(Word,SEARCH_ALLCH);
if ( pDictNode2->m_pFirstChin->m_pszChinese != NULL &&
SearchCate(pDictNode2,Cate_n) )
{
pDictNode1=CreateComposeWord(pDictNode2,pDictNode3,inputword);
}
}
}
}
else
{
pDictNode2=WordRestore(Word,SEARCH_ALLCH);
pDictNode3=WordRestore(WordNext,SEARCH_ALLCH);
if ( pDictNode2 != NULL || pDictNode3->m_pFirstChin->m_pszChinese != NULL )
{
pDictNode1=CreateComposeWord(pDictNode2,
pDictNode3,inputword);
}
else
{//建立生词
pDictNode1=CreateNewWord(inputword);
}
}
return pDictNode1;
}//cdq changed
/*
else if((p=strchr(Word,','))!=NULL)
{ // 去掉数字中间的分隔符
while((p=strchr(Word,','))!=NULL)
{
int k=p-Word;
if(k>0 && k<WordLen-1)
if(Word[k-1]>='0' && Word[k-1]<='9' && Word[k+1]>='0' && Word[k+1]<='9' )
strcpy(p,p+1);
else
pDictNode1 = CreateNewWord(inputword);
}
pDictNode1 = CreateNewWord(Word);
Mystrcpy(pDictNode1,"dig",3);
} */
else
{ //无',词缀s,es,ing,ed,er,est, etc.
strcpy(Word,inputword);
//strcpy(BTNode[wordth]->m_pszEnglish,inputword);
WordLen = strlen(Word);
p=Word+ WordLen-1;
strcpy(tail,p);
if(strcmp(tail,"s")==0)
{ // -s
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber=Multi_Number; //temp
if( pDictNode1->m_bIsExistOrig &&
SearchCate(pDictNode1,Cate_n) &&
!SearchCate(pDictNode1,Cate_vi) &&
!SearchCate(pDictNode1,Cate_vt))
{
//strcpy(pDictNode1->m_pszAmbig,"N");
//pDictNode1->m_nLxhCate =
//pDictNode1->m_nAmbigLen = 1;
pDictNode1->m_byDictNumber=Multi_Number;
}
else
if(pDictNode1->m_bIsExistOrig &&
(SearchCate(pDictNode1,Cate_vi) ||
SearchCate(pDictNode1,Cate_vt)) &&
!SearchCate(pDictNode1,Cate_n) )
{
//pDictNode1->m_nLxhCate =
//pDictNode1->m_nAmbigLen = 1;
}
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-1;
strcpy(tail,p);
if(strcmp(tail,"d")==0 && Word[WordLen-2]=='e')
{ // e-d, word应为动词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1); //98.3.10
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ed1_2_Form;
if((pDictNode1->m_byDictForm == Ed2_Form ||
pDictNode1->m_byDictForm == Ed1_2_Form) )
ModifyPreWord();
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-1;
strcpy(tail,p);
if(strcmp(tail,"r")==0 && Word[WordLen-2]=='e')
{ // e-r, word应为名词,动词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1); //98.3.10
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Er_Form;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-2;
strcpy(tail,p);
if(strcmp(tail,"ed")==0)
{ // -ed, word应为动词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ed1_2_Form;
//strcpy(pDictNode1->m_pszAmbig,"V");
if((pDictNode1->m_byDictForm == Ed2_Form ||
pDictNode1->m_byDictForm == Ed1_2_Form) )
ModifyPreWord();
return pDictNode1;
}
if(Word[WordLen-3]=='i')
{
Word[WordLen-3] = 'y'; //改y为i,加ed
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ed1_2_Form;
//strcpy(pDictNode1->m_pszAmbig,"V");
if((pDictNode1->m_byDictForm == Ed2_Form ||
pDictNode1->m_byDictForm == Ed1_2_Form) )
ModifyPreWord();
return pDictNode1;
}
}
else if(Word[WordLen-3]==Word[WordLen-4])
{
Word[WordLen-3] = '\0'; //双写最后的字母,再加ed,
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ed1_2_Form;
//strcpy(pDictNode1->m_pszAmbig,"V");
if((pDictNode1->m_byDictForm == Ed2_Form ||
pDictNode1->m_byDictForm == Ed1_2_Form) )
ModifyPreWord();
return pDictNode1;
}
}
}
strcpy(Word,inputword);
p=Word+ WordLen-2;
strcpy(tail,p);
if(strcmp(tail,"er")==0)
{ // -er, word应为名词,形容词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Er_Form;
return pDictNode1;
}
else
if(Word[WordLen-3]=='i')
{
Word[WordLen-3] = 'y'; //改y为i,加er
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Er_Form;
return pDictNode1;
}
}
else if(Word[WordLen-3]==Word[WordLen-4])
{
Word[WordLen-3] = '\0'; //双写最后的字母,再加er,
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Er_Form;
return pDictNode1;
}
}
}
strcpy(Word,inputword);
p=Word+ WordLen-2;
strcpy(tail,p);
if(strcmp(tail,"es")==0)
{ // -es, word应为名词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-2;
strcpy(tail,p);
if(strcmp(tail,"st")==0 && Word[WordLen-3]=='e')
{ // e-st, word应为形容词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Est_Form;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"est")==0)
{ // -est, word应为形容词
p[0]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Est_Form;
return pDictNode1;
}
else if(Word[WordLen-4]=='i')
{
Word[WordLen-4] = 'y'; //改y为i,加er
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"adj",3);
pDictNode1->m_byDictForm = Est_Form;
return pDictNode1;
}
}
}
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"ing")==0)
{ // -ing, word应为动词,
p[0]='\0';
//cdq changed 12.8
while((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if ( !SearchCate(pDictNode1,Cate_v) )
{
break;
}
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
//pDictNode1->m_pszOrig = new char[strlen(Word)+1];
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ing_Form;
return pDictNode1;
}
p[0]='e'; //去e,加ing
p[1]='\0';
while((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if ( !SearchCate(pDictNode1,Cate_v) )
{
break;
}
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ing_Form;
return pDictNode1;
}
Word[WordLen-4] = '\0'; //双写最后的字母,再加ing,
while((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if ( !SearchCate(pDictNode1,Cate_v) )
{
break;
}
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
Mystrcpy(pDictNode1,"@Cate=v",3);
pDictNode1->m_byDictForm = Ing_Form;
return pDictNode1;
}
} //cdq changed 12.8
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"ves")==0)
{ // -ves, word应为名词,
p[0]='f';
p[1]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
p[1]='f';
p[2]='e';
p[3]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-3;
strcpy(tail,p);
if(strcmp(tail,"ies")==0)
{ // -ies, word应为名词,
p[0]='y';
p[1]='\0';
if((pDictNode1=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
pDictNode1->m_pszEnglish = Mystrcpy(pDictNode1,inputword,1);
pDictNode1->m_pszOrig = Mystrcpy(pDictNode1,Word,2);
//Mystrcpy(pDictNode1,"Cate=n",3);
pDictNode1->m_byDictForm = S_Form;
pDictNode1->m_byDictNumber = Multi_Number;
return pDictNode1;
}
}
strcpy(Word,inputword);
p=Word+ WordLen-2;
strcpy(tail,p);
if(strcmp(tail,"th")==0)
{// <20序数词
p[0] = '\0';
if((pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod)) != NULL)
{
if(SearchCate(pDictNode2,Cate_number))
{
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
}
else if(strcmp(Word,"fif")==0 )
{
strcpy(Word,"five");
pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod);
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
else if(strcmp(Word,"eigh")==0 )
{
strcpy(Word,"eight");
pDictNode2=g_objLexSearch.SearchWord(Word,nSearchMod);
pDictNode1=CreateOrdinalWord(pDictNode2,inputword);
return pDictNode1;
}
else if(strcmp(Word,"nin")==0 )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -