📄 tense.cpp
字号:
pDictNode2 = g_objLexSearch.SearchWord("is",nSearchMod);
//pDictNode2->m_pszOrig = new char[3];
pDictNode2->m_pszOrig = Mystrcpy(pDictNode2,"be",2);
pDictNode1->m_pNextWordNode = pDictNode2;
pDictNode2->m_pPrevWordNode = pDictNode1;
pDictNode2->m_byDictForm = Is_Has_Form;
pDictNode2->m_byDictNumber = Sing_Number;
}
else
{ //Word's
if((pDictNode1 =g_objLexSearch.SearchWord(head,nSearchMod)) != NULL)
{
pDictNode1->m_byDictGenetive = Have_Genetive;
Mystrcpy(pDictNode1,"ns",3);
pDictNode1->m_byDictNumber = Sing_Number;
Mystrcpy(pDictNode1,inputword,1);
}
else
return CreateNewWord(inputword);
}
}
else if(strcmp(tail,"ve")==0)
{ //W've
pDictNode1 = g_objLexSearch.SearchWord(head,nSearchMod);
if(pDictNode1 != NULL)
{
pDictNode2 = g_objLexSearch.SearchWord("have",nSearchMod);
pDictNode1->m_pNextWordNode = pDictNode2;
pDictNode2->m_pPrevWordNode = pDictNode1;
pDictNode2->m_byDictNumber=Multi_Number;
}
else
return CreateNewWord(inputword);
}
else if(strcmp(tail,"ll")==0)
{ //W'll
pDictNode1 = g_objLexSearch.SearchWord(head,nSearchMod);
if(pDictNode1 != NULL)
{
pDictNode2 = g_objLexSearch.SearchWord("will",nSearchMod);
pDictNode1->m_pNextWordNode = pDictNode2;
pDictNode2->m_pPrevWordNode = pDictNode1;
}
else
return CreateNewWord(inputword);
}
else if(strcmp(tail,"re")==0)
{ //W're
pDictNode1 = g_objLexSearch.SearchWord(head,nSearchMod);
if(pDictNode1 != NULL)
{
pDictNode2 = g_objLexSearch.SearchWord("are",nSearchMod);
pDictNode2->m_pszOrig = Mystrcpy(pDictNode2,"be",2);
pDictNode1->m_pNextWordNode = pDictNode2;
pDictNode2->m_pPrevWordNode = pDictNode1;
}
else
return CreateNewWord(inputword);
}
else if(strcmp(tail,"d")==0)
{ //W'd
if((pDictNode1=g_objLexSearch.SearchWord(head,nSearchMod)) != NULL)
{
pDictNode2 = g_objLexSearch.SearchWord("would",nSearchMod);
pDictNode1->m_pNextWordNode = pDictNode2;
pDictNode2->m_pPrevWordNode = pDictNode1;
pDictNode2->m_byDictForm = Would_had_Form;
}
else
return CreateNewWord(inputword);
}
else
return CreateNewWord(inputword);
}
}
else if((p=strrchr(Word,'-'))!=NULL)
{ //连字符
char WordNext[150];
CString strTmp;
strTmp=Word;
strTmp=strTmp.Right(strTmp.GetLength()-strTmp.Find("-")-1);
if (strchr(strTmp,'-')!=NULL)
{
pDictNode1=CreateNewWord(inputword);
return pDictNode1;
}
strTmp=Word;
strTmp=strTmp.Left(strTmp.Find("-"));
DictNode *pDictNode3;
strcpy(WordNext,p+1);
if (strcmp(WordNext,"")==0 || strcmp(strTmp,"")==0 )
{
pDictNode1=CreateNewWord(inputword);
return pDictNode1;
}
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 != NULL && 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 != NULL && pDictNode2->m_pFirstChin->m_pszChinese != NULL &&
SearchCate(pDictNode2,Cate_n) )
{
pDictNode1=CreateComposeWord(pDictNode2,pDictNode3,inputword);
}
else
pDictNode1=CreateNewWord(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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -